@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,20 @@
1
+ import type { TsImportDeclaration } from './types.js';
2
+ /**
3
+ * Error thrown when conflicting import declarations cannot be resolved.
4
+ */
5
+ export declare class ImportConflictError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ /**
9
+ * Merges multiple TypeScript import declarations to create optimized imports.
10
+ *
11
+ * This function resolves conflicts and merges imports with the same moduleSpecifier,
12
+ * handling both regular and type-only imports appropriately. It also supports
13
+ * individual named imports marked as type-only.
14
+ *
15
+ * @param declarations - Array of import declarations to merge
16
+ * @returns Merged array of import declarations
17
+ * @throws {ImportConflictError} When conflicting imports are detected
18
+ */
19
+ export declare function mergeTsImportDeclarations(declarations: TsImportDeclaration[]): TsImportDeclaration[];
20
+ //# sourceMappingURL=merge-ts-import-declarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-ts-import-declarations.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/merge-ts-import-declarations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAyGD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,mBAAmB,EAAE,GAClC,mBAAmB,EAAE,CAiCvB"}
@@ -0,0 +1,114 @@
1
+ import { mapGroupBy } from '@baseplate-dev/utils';
2
+ import { uniqBy } from 'es-toolkit';
3
+ /**
4
+ * Error thrown when conflicting import declarations cannot be resolved.
5
+ */
6
+ export class ImportConflictError extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = 'ImportConflictError';
10
+ }
11
+ }
12
+ const DEFAULT_SYMBOL = Symbol('default');
13
+ const NAMESPACE_SYMBOL = Symbol('namespace');
14
+ function convertToNamedImportEntries(imports) {
15
+ return imports.flatMap((i) => [
16
+ i.defaultImport === undefined
17
+ ? undefined
18
+ : {
19
+ moduleSpecifier: i.moduleSpecifier,
20
+ name: DEFAULT_SYMBOL,
21
+ alias: i.defaultImport,
22
+ isTypeOnly: i.isTypeOnly ?? false,
23
+ },
24
+ i.namespaceImport === undefined
25
+ ? undefined
26
+ : {
27
+ moduleSpecifier: i.moduleSpecifier,
28
+ name: NAMESPACE_SYMBOL,
29
+ alias: i.namespaceImport,
30
+ isTypeOnly: i.isTypeOnly ?? false,
31
+ },
32
+ ...(i.namedImports ?? []).map((namedImport) => ({
33
+ moduleSpecifier: i.moduleSpecifier,
34
+ name: namedImport.name,
35
+ alias: namedImport.alias ?? namedImport.name,
36
+ isTypeOnly: i.isTypeOnly ? true : (namedImport.isTypeOnly ?? false),
37
+ })),
38
+ ].filter((x) => x !== undefined));
39
+ }
40
+ function assertNoConflictingImportEntries(entries) {
41
+ const groupedByName = mapGroupBy(entries, (e) => e.name);
42
+ for (const [name, entries] of groupedByName.entries()) {
43
+ const nameSet = new Set(entries.map((e) => e.alias));
44
+ if (nameSet.size !== 1) {
45
+ throw new ImportConflictError(`Conflicting aliases for named import "${name.toString()}" from "${entries[0].moduleSpecifier}" (${entries.map((e) => e.alias).join(', ')})`);
46
+ }
47
+ }
48
+ }
49
+ function convertToImportDeclarations(moduleSpecifier, isTypeOnly, entries) {
50
+ const defaultEntry = entries.find((e) => e.name === DEFAULT_SYMBOL);
51
+ const namespaceEntry = entries.find((e) => e.name === NAMESPACE_SYMBOL);
52
+ const namedImportEntries = entries
53
+ .filter((e) => typeof e.name === 'string')
54
+ .map((e) => ({
55
+ name: e.name,
56
+ alias: e.alias === e.name ? undefined : e.alias,
57
+ }))
58
+ .toSorted((a, b) => (a.alias ?? a.name).localeCompare(b.alias ?? b.name));
59
+ const importDeclarations = [];
60
+ const addDeclaration = (declaration) => {
61
+ importDeclarations.push({
62
+ moduleSpecifier,
63
+ isTypeOnly: isTypeOnly ? true : undefined,
64
+ ...declaration,
65
+ });
66
+ };
67
+ if (namespaceEntry) {
68
+ addDeclaration({ namespaceImport: namespaceEntry.alias });
69
+ }
70
+ // Type-only imports must split out default and named imports
71
+ if (isTypeOnly) {
72
+ if (defaultEntry) {
73
+ addDeclaration({ defaultImport: defaultEntry.alias });
74
+ }
75
+ if (namedImportEntries.length > 0) {
76
+ addDeclaration({ namedImports: namedImportEntries });
77
+ }
78
+ }
79
+ else if (defaultEntry || namedImportEntries.length > 0) {
80
+ addDeclaration({
81
+ defaultImport: defaultEntry?.alias,
82
+ namedImports: namedImportEntries.length > 0 ? namedImportEntries : undefined,
83
+ });
84
+ }
85
+ return importDeclarations;
86
+ }
87
+ /**
88
+ * Merges multiple TypeScript import declarations to create optimized imports.
89
+ *
90
+ * This function resolves conflicts and merges imports with the same moduleSpecifier,
91
+ * handling both regular and type-only imports appropriately. It also supports
92
+ * individual named imports marked as type-only.
93
+ *
94
+ * @param declarations - Array of import declarations to merge
95
+ * @returns Merged array of import declarations
96
+ * @throws {ImportConflictError} When conflicting imports are detected
97
+ */
98
+ export function mergeTsImportDeclarations(declarations) {
99
+ const namedImportEntries = convertToNamedImportEntries(declarations);
100
+ const importGroups = mapGroupBy(namedImportEntries, (e) => e.moduleSpecifier);
101
+ const result = [];
102
+ // Process each module specifier's imports
103
+ for (const [moduleSpecifier, entries] of importGroups.entries()) {
104
+ // Remove type-only imports that conflict with regular imports
105
+ assertNoConflictingImportEntries(entries);
106
+ const regularEntries = entries.filter((e) => !e.isTypeOnly);
107
+ const typeOnlyEntries = entries.filter((e) => e.isTypeOnly && !regularEntries.some((re) => re.name === e.name));
108
+ const uniqueRegularEntries = uniqBy(regularEntries, (e) => e.name);
109
+ const uniqueTypeOnlyEntries = uniqBy(typeOnlyEntries, (e) => e.name);
110
+ result.push(...convertToImportDeclarations(moduleSpecifier, false, uniqueRegularEntries), ...convertToImportDeclarations(moduleSpecifier, true, uniqueTypeOnlyEntries));
111
+ }
112
+ return result;
113
+ }
114
+ //# sourceMappingURL=merge-ts-import-declarations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-ts-import-declarations.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/merge-ts-import-declarations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ts } from 'ts-morph';
2
+ import type { TsPathMapEntry } from './types.js';
3
+ type ModuleResolutionKind = `${ts.server.protocol.ModuleResolutionKind}`;
4
+ /**
5
+ * Options for resolving module paths
6
+ */
7
+ interface ResolveModuleOptions {
8
+ /**
9
+ * The path map entries
10
+ */
11
+ pathMapEntries?: TsPathMapEntry[];
12
+ /**
13
+ * The module resolution kind
14
+ */
15
+ moduleResolution: ModuleResolutionKind;
16
+ }
17
+ /**
18
+ * Gets the project relative path from a module specifier
19
+ *
20
+ * @param moduleSpecifier The module specifier to get the project relative path from
21
+ * @param directory The directory we need to resolve the module specifier from
22
+ * @returns The project relative path if the module specifier is internal, otherwise undefined
23
+ */
24
+ export declare function getProjectRelativePathFromModuleSpecifier(moduleSpecifier: string, directory: string): string | undefined;
25
+ /**
26
+ * Normalizes the module specifier to pick the best import path based on the following rules:
27
+ *
28
+ * 1) If the import is an external module (e.g. axios), keep the module specifier as-is.
29
+ * 2) Otherwise if the module is a relative module (./) or absolute internal path (@/),
30
+ * identify the shortest way to refer to the module (either relative path or using
31
+ * a path alias) and use that as the module specifier.
32
+ *
33
+ * @param moduleSpecifier The module specifier to resolve
34
+ * @param directory The directory we need to resolve the module specifier from
35
+ * @param options Options for resolving the modules
36
+ * @returns The normalized module specifier
37
+ */
38
+ export declare function normalizeModuleSpecifier(moduleSpecifier: string, directory: string, options: ResolveModuleOptions): string;
39
+ export {};
40
+ //# sourceMappingURL=normalize-module-specifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-module-specifier.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/normalize-module-specifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAKnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8EjD,KAAK,oBAAoB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;AAEzE;;GAEG;AACH,UAAU,oBAAoB;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC;;OAEG;IACH,gBAAgB,EAAE,oBAAoB,CAAC;CACxC;AAqCD;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACvD,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CA2BR"}
@@ -0,0 +1,133 @@
1
+ import { minBy } from 'es-toolkit';
2
+ import pathPosix from 'node:path/posix';
3
+ /**
4
+ * Strips the relative prefix from a project relative path
5
+ * @param path
6
+ * @returns
7
+ */
8
+ function stripRelativePrefixFromProjectRelativePath(path) {
9
+ if (path.startsWith('./')) {
10
+ return path.slice(2);
11
+ }
12
+ if (path.startsWith('../')) {
13
+ throw new Error(`Expected project relative path, but got relative path ${path}`);
14
+ }
15
+ return path;
16
+ }
17
+ /**
18
+ * Attempts to resolve the aliased path from a project relative path
19
+ *
20
+ * @param projectPath The project relative path to resolve from
21
+ * @param TsPathMapEntry The path map entry to use
22
+ * @returns The aliased path if the path map matches, otherwise undefined
23
+ */
24
+ function getAliasedPathFromTsPathMapEntry(projectPath, entry) {
25
+ const strippedProjectPath = stripRelativePrefixFromProjectRelativePath(projectPath);
26
+ const strippedToPath = stripRelativePrefixFromProjectRelativePath(entry.to);
27
+ const fromPath = entry.from;
28
+ // return the from, if it's an exact match
29
+ if (strippedProjectPath === strippedToPath)
30
+ return fromPath;
31
+ if (strippedToPath.includes('*')) {
32
+ // validate from and to path
33
+ if (!strippedToPath.endsWith('/*')) {
34
+ throw new Error(`Path map entry 'to' path (${entry.to}) must end with /* for wildcard support`);
35
+ }
36
+ const isFromPathWildcard = fromPath.includes('*');
37
+ if (isFromPathWildcard && !fromPath.endsWith('/*')) {
38
+ throw new Error(`Path map entry 'from' path (${fromPath}) must end with /* for wildcard support`);
39
+ }
40
+ const toPathPrefix = strippedToPath.slice(0, -1);
41
+ if (!strippedProjectPath.startsWith(toPathPrefix))
42
+ return undefined;
43
+ return isFromPathWildcard
44
+ ? fromPath.slice(0, -1) + strippedProjectPath.slice(toPathPrefix.length)
45
+ : fromPath;
46
+ }
47
+ return undefined;
48
+ }
49
+ /**
50
+ * Checks if an import is an internal import
51
+ *
52
+ * @param name - The name of the import
53
+ * @param pathmapEntries - The path map entries
54
+ * @returns `true` if the import is internal, `false` otherwise
55
+ */
56
+ function isInternalImport(name, pathmapEntries) {
57
+ return (name.startsWith('.') ||
58
+ pathmapEntries.some((entry) => !!getAliasedPathFromTsPathMapEntry(name, entry)));
59
+ }
60
+ const TS_FILE_EXTENSION_REGEX = /\.[tj]sx?$/;
61
+ /**
62
+ * Normalizes the path for the given module resolution kind
63
+ *
64
+ * Specifically, for Node16, it will ensure the path has a .js extension
65
+ * and for other module resolution kinds, it will remove the .js extension
66
+ * and the /index suffix
67
+ *
68
+ * @param path - The path to normalize
69
+ * @param moduleResolution - The module resolution kind
70
+ * @returns The normalized path
71
+ */
72
+ function normalizePathForResolutionKind(path, { moduleResolution, pathMapEntries }) {
73
+ const isNode16 = moduleResolution === 'node16' || moduleResolution === 'nodenext';
74
+ if (isNode16 &&
75
+ isInternalImport(path, pathMapEntries ?? []) &&
76
+ !TS_FILE_EXTENSION_REGEX.test(path)) {
77
+ throw new Error(`Invalid Node 16 import discovered ${path}. Make sure to use .js extension for Node16 imports.`);
78
+ }
79
+ return isNode16
80
+ ? // normalize the extension to .js
81
+ path.replace(TS_FILE_EXTENSION_REGEX, '.js')
82
+ : path.replace(/(\/index)?\.(j|t)sx?$/, '');
83
+ }
84
+ /**
85
+ * Gets the project relative path from a module specifier
86
+ *
87
+ * @param moduleSpecifier The module specifier to get the project relative path from
88
+ * @param directory The directory we need to resolve the module specifier from
89
+ * @returns The project relative path if the module specifier is internal, otherwise undefined
90
+ */
91
+ export function getProjectRelativePathFromModuleSpecifier(moduleSpecifier, directory) {
92
+ // if not an internal import, just return undefined
93
+ if (!moduleSpecifier.startsWith('@/') && !moduleSpecifier.startsWith('.')) {
94
+ return undefined;
95
+ }
96
+ const projectRelativePath = moduleSpecifier.startsWith('@/')
97
+ ? moduleSpecifier.slice(2)
98
+ : pathPosix.join(directory, moduleSpecifier);
99
+ return projectRelativePath;
100
+ }
101
+ /**
102
+ * Normalizes the module specifier to pick the best import path based on the following rules:
103
+ *
104
+ * 1) If the import is an external module (e.g. axios), keep the module specifier as-is.
105
+ * 2) Otherwise if the module is a relative module (./) or absolute internal path (@/),
106
+ * identify the shortest way to refer to the module (either relative path or using
107
+ * a path alias) and use that as the module specifier.
108
+ *
109
+ * @param moduleSpecifier The module specifier to resolve
110
+ * @param directory The directory we need to resolve the module specifier from
111
+ * @param options Options for resolving the modules
112
+ * @returns The normalized module specifier
113
+ */
114
+ export function normalizeModuleSpecifier(moduleSpecifier, directory, options) {
115
+ const { pathMapEntries } = options;
116
+ // if not an internal import, just return directly
117
+ if (!moduleSpecifier.startsWith('@/') && !moduleSpecifier.startsWith('.')) {
118
+ return moduleSpecifier;
119
+ }
120
+ // figure out the shortest way to resolve the module
121
+ const projectRelativePath = moduleSpecifier.startsWith('@/')
122
+ ? moduleSpecifier.slice(2)
123
+ : pathPosix.join(directory, moduleSpecifier);
124
+ const relativePath = pathPosix.relative(directory, projectRelativePath);
125
+ const relativePathImport = relativePath.startsWith('.')
126
+ ? relativePath
127
+ : `./${relativePath}`;
128
+ const typescriptPathImports = pathMapEntries
129
+ ?.map((entry) => getAliasedPathFromTsPathMapEntry(projectRelativePath, entry))
130
+ .filter((x) => x !== undefined) ?? [];
131
+ return normalizePathForResolutionKind(minBy([relativePathImport, ...typescriptPathImports], (x) => x.length), options);
132
+ }
133
+ //# sourceMappingURL=normalize-module-specifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-module-specifier.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/normalize-module-specifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { TsImportDeclaration } from '../types.js';
2
+ declare const IMPORT_SORT_GROUPS: readonly ["builtin", "external", "internal", "parent", "sibling", "side-effect", "side-effect-style", "type", "index", "style", "external-type", "builtin-type", "internal-type", "parent-type", "sibling-type", "index-type", "unknown"];
3
+ /**
4
+ * Represents the various import sorting groups
5
+ */
6
+ export type ImportSortGroup = (typeof IMPORT_SORT_GROUPS)[number];
7
+ /**
8
+ * Options for classifying imports
9
+ */
10
+ interface GetImportSortGroupOptions {
11
+ /**
12
+ * Patterns that identify internal modules
13
+ */
14
+ internalPatterns?: RegExp[];
15
+ /**
16
+ * File extensions that are considered style imports
17
+ *
18
+ * @default ['.less', '.scss', '.sass', '.styl', '.pcss', '.css', '.sss']
19
+ */
20
+ styleExtensions?: string[];
21
+ /**
22
+ * The sort groups that are allowed to be set. Unknown will always be present.
23
+ */
24
+ allowedSortGroups: readonly ImportSortGroup[];
25
+ }
26
+ /**
27
+ * Classifies an import into its appropriate sorting group
28
+ */
29
+ export declare function getImportSortGroup(importDecl: TsImportDeclaration, options?: Partial<GetImportSortGroupOptions>): ImportSortGroup;
30
+ export {};
31
+ //# sourceMappingURL=get-import-sort-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-import-sort-group.d.ts","sourceRoot":"","sources":["../../../../../src/renderers/typescript/imports/sort-imports/get-import-sort-group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,QAAA,MAAM,kBAAkB,2OAkBd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE;;GAEG;AACH,UAAU,yBAAyB;IACjC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;OAEG;IACH,iBAAiB,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAiGD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE,OAAO,CAAC,yBAAyB,CAAM,GAC/C,eAAe,CA0EjB"}
@@ -0,0 +1,169 @@
1
+ import { isBuiltin as isBuiltinModule } from 'node:module';
2
+ // Adapted from https://perfectionist.dev/rules/sort-imports.html
3
+ const IMPORT_SORT_GROUPS = [
4
+ 'builtin',
5
+ 'external',
6
+ 'internal',
7
+ 'parent',
8
+ 'sibling',
9
+ 'side-effect',
10
+ 'side-effect-style',
11
+ 'type',
12
+ 'index',
13
+ 'style',
14
+ 'external-type',
15
+ 'builtin-type',
16
+ 'internal-type',
17
+ 'parent-type',
18
+ 'sibling-type',
19
+ 'index-type',
20
+ 'unknown',
21
+ ];
22
+ const DEFAULT_OPTIONS = {
23
+ internalPatterns: [],
24
+ styleExtensions: [
25
+ '.less',
26
+ '.scss',
27
+ '.sass',
28
+ '.styl',
29
+ '.pcss',
30
+ '.css',
31
+ '.sss',
32
+ ],
33
+ allowedSortGroups: IMPORT_SORT_GROUPS,
34
+ };
35
+ /**
36
+ * Determines if a module is an index import
37
+ */
38
+ function isIndexImport(moduleName) {
39
+ return [
40
+ './index.d.js',
41
+ './index.d.ts',
42
+ './index.js',
43
+ './index.ts',
44
+ './index.cjs',
45
+ './index.cts',
46
+ './index.mjs',
47
+ './index.mts',
48
+ './index',
49
+ './',
50
+ '.',
51
+ ].includes(moduleName);
52
+ }
53
+ /**
54
+ * Determines if a module is a parent directory import
55
+ */
56
+ function isParentImport(moduleName) {
57
+ return moduleName.startsWith('..');
58
+ }
59
+ /**
60
+ * Determines if a module is a sibling import
61
+ */
62
+ function isSiblingImport(moduleName) {
63
+ return moduleName.startsWith('./') && !isIndexImport(moduleName);
64
+ }
65
+ /**
66
+ * Determines if an import path matches any of the internal patterns
67
+ */
68
+ function isInternalImport(moduleName, internalPatterns = []) {
69
+ return internalPatterns.some((pattern) => pattern.test(moduleName));
70
+ }
71
+ /**
72
+ * Determines if a module is an external import (not relative or internal)
73
+ */
74
+ function isExternalImport(moduleName, internalPatterns = []) {
75
+ return (!moduleName.startsWith('.') &&
76
+ !moduleName.startsWith('/') &&
77
+ !isInternalImport(moduleName, internalPatterns) &&
78
+ !isBuiltinModule(moduleName));
79
+ }
80
+ /**
81
+ * Determines if an import is a style import based on its file extension
82
+ */
83
+ function isStyleImport(moduleName, styleExtensions = []) {
84
+ // Handle query parameters
85
+ const [cleanedValue] = moduleName.split('?');
86
+ return styleExtensions.some((extension) => cleanedValue.endsWith(extension));
87
+ }
88
+ /**
89
+ * Determines if an import is a side effect import (no specifiers)
90
+ */
91
+ function isSideEffectImport(importDecl) {
92
+ return (!importDecl.defaultImport &&
93
+ !importDecl.namespaceImport &&
94
+ (!importDecl.namedImports || importDecl.namedImports.length === 0));
95
+ }
96
+ /**
97
+ * Classifies an import into its appropriate sorting group
98
+ */
99
+ export function getImportSortGroup(importDecl, options = {}) {
100
+ const { moduleSpecifier: source, isTypeOnly } = importDecl;
101
+ const { internalPatterns, styleExtensions, allowedSortGroups } = {
102
+ ...DEFAULT_OPTIONS,
103
+ ...options,
104
+ };
105
+ let sortGroup;
106
+ // Set the sort group if it hasn't been set yet
107
+ const setGroup = (group) => {
108
+ if (!allowedSortGroups.includes(group))
109
+ return;
110
+ sortGroup = sortGroup ?? group;
111
+ };
112
+ // Check for type-only imports
113
+ if (isTypeOnly) {
114
+ if (isBuiltinModule(source)) {
115
+ setGroup('builtin-type');
116
+ }
117
+ if (isExternalImport(source, internalPatterns)) {
118
+ setGroup('external-type');
119
+ }
120
+ if (isInternalImport(source, internalPatterns)) {
121
+ setGroup('internal-type');
122
+ }
123
+ if (isParentImport(source)) {
124
+ setGroup('parent-type');
125
+ }
126
+ if (isSiblingImport(source)) {
127
+ setGroup('sibling-type');
128
+ }
129
+ if (isIndexImport(source)) {
130
+ setGroup('index-type');
131
+ }
132
+ setGroup('type');
133
+ }
134
+ // Check for side effect imports
135
+ const isSideEffect = isSideEffectImport(importDecl);
136
+ if (isSideEffect) {
137
+ // Check if it's a side effect style import
138
+ if (isStyleImport(source, styleExtensions)) {
139
+ setGroup('side-effect-style');
140
+ }
141
+ setGroup('side-effect');
142
+ }
143
+ // Check for style imports (even if they have named imports)
144
+ if (isStyleImport(source, styleExtensions)) {
145
+ setGroup('style');
146
+ }
147
+ // Regular imports
148
+ if (isIndexImport(source)) {
149
+ setGroup('index');
150
+ }
151
+ if (isSiblingImport(source)) {
152
+ setGroup('sibling');
153
+ }
154
+ if (isParentImport(source)) {
155
+ setGroup('parent');
156
+ }
157
+ if (isBuiltinModule(source)) {
158
+ setGroup('builtin');
159
+ }
160
+ if (isExternalImport(source, internalPatterns)) {
161
+ setGroup('external');
162
+ }
163
+ if (isInternalImport(source, internalPatterns)) {
164
+ setGroup('internal');
165
+ }
166
+ // Default fallback
167
+ return sortGroup ?? 'unknown';
168
+ }
169
+ //# sourceMappingURL=get-import-sort-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-import-sort-group.js","sourceRoot":"","sources":["../../../../../src/renderers/typescript/imports/sort-imports/get-import-sort-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './sort-import-declarations.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/renderers/typescript/imports/sort-imports/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './sort-import-declarations.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/renderers/typescript/imports/sort-imports/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { TsImportDeclaration } from '../types.js';
2
+ import type { ImportSortGroup } from './get-import-sort-group.js';
3
+ /**
4
+ * Configuration options for sorting import declarations
5
+ */
6
+ export interface SortImportDeclarationsOptions {
7
+ /**
8
+ * Groups to sort imports by. Each inner array represents imports
9
+ * that should be grouped together.
10
+ */
11
+ groups: readonly (ImportSortGroup | readonly ImportSortGroup[])[];
12
+ /**
13
+ * Whether to ignore case when sorting imports
14
+ *
15
+ * @default true
16
+ */
17
+ ignoreCase: boolean;
18
+ /**
19
+ * Patterns that identify internal modules
20
+ */
21
+ internalPatterns: RegExp[];
22
+ }
23
+ /**
24
+ * Sorts import declarations according to the specified group order,
25
+ * preserving the order of side-effect imports.
26
+ *
27
+ * @param importDeclarations - Array of import declarations to sort
28
+ * @param options - Configuration options for sorting
29
+ * @returns Array of arrays, where each inner array contains imports of the same group
30
+ */
31
+ export declare function sortImportDeclarations(importDeclarations: TsImportDeclaration[], options?: Partial<SortImportDeclarationsOptions>): TsImportDeclaration[][];
32
+ //# sourceMappingURL=sort-import-declarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-import-declarations.d.ts","sourceRoot":"","sources":["../../../../../src/renderers/typescript/imports/sort-imports/sort-import-declarations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlE;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,EAAE,CAAC,EAAE,CAAC;IAClE;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAoBD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,EAAE,mBAAmB,EAAE,EACzC,OAAO,GAAE,OAAO,CAAC,6BAA6B,CAAM,GACnD,mBAAmB,EAAE,EAAE,CAoEzB"}