@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,175 @@
1
+ import { isBuiltin } from 'node:module';
2
+ import path from 'node:path';
3
+ import { Node, Project, SyntaxKind } from 'ts-morph';
4
+ import { mergeTsImportDeclarations } from '../imports/merge-ts-import-declarations.js';
5
+ import { sortImportDeclarations } from '../imports/sort-imports/sort-import-declarations.js';
6
+ import { getTsMorphImportDeclarationsFromSourceFile, replaceImportDeclarationsInSourceFile, } from '../imports/ts-morph-operations.js';
7
+ /**
8
+ * Collects all Identifier names from a SourceFile,
9
+ * skipping nodes within ImportDeclaration structures.
10
+ */
11
+ function collectUsedIdentifierNames(sourceFile) {
12
+ const usedIdentifiers = new Set();
13
+ sourceFile.forEachDescendant((node, traversal) => {
14
+ if (node.isKind(SyntaxKind.ImportDeclaration)) {
15
+ traversal.skip();
16
+ return;
17
+ }
18
+ if (Node.isIdentifier(node)) {
19
+ usedIdentifiers.add(node.getText());
20
+ }
21
+ });
22
+ return usedIdentifiers;
23
+ }
24
+ /**
25
+ * Organizes the imports in a Typescript template file.
26
+ * - Removes unused imports
27
+ * - Replaces import declarations with new import declarations in the projectExportMap
28
+ * - Sorts the imports
29
+ * - Writes the imports to the file
30
+ *
31
+ * @param filePath - The path to the file to organize
32
+ * @param contents - The contents of the file to organize
33
+ * @param context - The context for the template import lookup
34
+ * @returns The organized contents of the file
35
+ */
36
+ export async function organizeTsTemplateImports(filePath, contents, { projectExportMap, generatorFiles, resolver, projectRoot, }) {
37
+ const project = new Project({ useInMemoryFileSystem: true });
38
+ const sourceFile = project.createSourceFile(filePath, contents);
39
+ // Replace import declarations with new import declarations
40
+ const importDeclarations = getTsMorphImportDeclarationsFromSourceFile(sourceFile);
41
+ // Filter out import declarations that are not used
42
+ // Note: This is a rudimentary implementation that has a known issue
43
+ // where it will incorrectly identify a used import if the identifier
44
+ // has been declared in a different scope, e.g.
45
+ // import { foo } from './foo';
46
+ // const foo = 'foo';
47
+ //
48
+ // In this case, the import { foo } is incorrectly identified as used.
49
+ // The proper way is to check if the identifier has been used. However,
50
+ // this comes with a significant performance penalty so we should only use
51
+ // this if we can't use collectUsedIdentifierNames.
52
+ const usedIdentifierNames = collectUsedIdentifierNames(sourceFile);
53
+ const isNodeUsed = (node) => {
54
+ if (!node) {
55
+ return false;
56
+ }
57
+ const name = (Node.isImportSpecifier(node)
58
+ ? node.getAliasNode()?.getText()
59
+ : undefined) ?? node.getText();
60
+ return usedIdentifierNames.has(name);
61
+ };
62
+ const tsImportDeclarations = importDeclarations
63
+ .map((declaration) => {
64
+ const namespaceImport = declaration.getNamespaceImport();
65
+ const defaultImport = declaration.getDefaultImport();
66
+ return {
67
+ moduleSpecifier: declaration.getModuleSpecifier().getLiteralValue(),
68
+ isTypeOnly: declaration.isTypeOnly(),
69
+ namespaceImport: isNodeUsed(namespaceImport)
70
+ ? namespaceImport.getText()
71
+ : undefined,
72
+ defaultImport: isNodeUsed(defaultImport)
73
+ ? defaultImport.getText()
74
+ : undefined,
75
+ namedImports: declaration
76
+ .getNamedImports()
77
+ .filter((namedImport) => isNodeUsed(namedImport))
78
+ .map((namedImport) => ({
79
+ name: namedImport.getName(),
80
+ alias: namedImport.getAliasNode()?.getText(),
81
+ isTypeOnly: namedImport.isTypeOnly(),
82
+ })),
83
+ };
84
+ })
85
+ .filter((importDeclaration) => importDeclaration.defaultImport ??
86
+ importDeclaration.namespaceImport ??
87
+ importDeclaration.namedImports.length > 0);
88
+ const usedProjectExports = [];
89
+ const updatedImportDeclarations = await Promise.all(tsImportDeclarations.map(async (importDeclaration) => {
90
+ const { moduleSpecifier } = importDeclaration;
91
+ if (isBuiltin(moduleSpecifier)) {
92
+ return [importDeclaration];
93
+ }
94
+ // TODO: A bit of a hack but no easy fix in the short term
95
+ // Don't modify imports for ws since we install only the types
96
+ // but not the implementation
97
+ if (moduleSpecifier === 'ws') {
98
+ return [importDeclaration];
99
+ }
100
+ const resolutionResult = await resolver.async(path.dirname(filePath), moduleSpecifier);
101
+ if (!resolutionResult.path) {
102
+ throw new Error(`Could not resolve import ${moduleSpecifier} in ${filePath}: ${String(resolutionResult.error)}`);
103
+ }
104
+ const resolvedPath = resolutionResult.path;
105
+ // Don't modify external imports outside the project root
106
+ if (!resolvedPath.startsWith(projectRoot)) {
107
+ return [importDeclaration];
108
+ }
109
+ // Don't modify imports for files in the generator
110
+ if (generatorFiles.includes(resolvedPath)) {
111
+ const relativeImportPath = path
112
+ .relative(path.dirname(filePath), resolvedPath)
113
+ .replace(/\.(t|j)sx?$/, '.js');
114
+ const fixedImportDeclaration = {
115
+ ...importDeclaration,
116
+ // convert to relative path
117
+ moduleSpecifier: relativeImportPath.startsWith('.')
118
+ ? relativeImportPath
119
+ : `./${relativeImportPath}`,
120
+ };
121
+ return [fixedImportDeclaration];
122
+ }
123
+ if (importDeclaration.namespaceImport) {
124
+ throw new Error(`Import ${moduleSpecifier} in ${filePath} cannot be a namespace import since it are not supported currently
125
+ for template extraction.`);
126
+ }
127
+ // look up the corresponding import in the project exports
128
+ const pathExports = projectExportMap.get(resolvedPath);
129
+ if (!pathExports) {
130
+ throw new Error(`Import ${resolvedPath} in ${filePath} is not found in the project exports.`);
131
+ }
132
+ const importDeclarations = [];
133
+ const { defaultImport } = importDeclaration;
134
+ if (defaultImport) {
135
+ const projectExport = pathExports.get('default') ?? pathExports.get('*');
136
+ if (!projectExport) {
137
+ throw new Error(`Default import from ${moduleSpecifier} in ${filePath} is not found in the project exports.`);
138
+ }
139
+ if (projectExport.isTypeOnly && !importDeclaration.isTypeOnly) {
140
+ throw new Error(`Default import from ${moduleSpecifier} in ${filePath} is not a type only import but the project export is a type only import.`);
141
+ }
142
+ usedProjectExports.push(projectExport);
143
+ importDeclarations.push({
144
+ namedImports: [{ name: projectExport.name }],
145
+ moduleSpecifier: projectExport.importSource,
146
+ isTypeOnly: projectExport.isTypeOnly,
147
+ });
148
+ }
149
+ importDeclarations.push(...importDeclaration.namedImports.map((namedImport) => {
150
+ const projectExport = pathExports.get(namedImport.name) ?? pathExports.get('*');
151
+ if (!projectExport) {
152
+ throw new Error(`Import ${namedImport.name} from ${moduleSpecifier} in ${filePath} is not found in the project exports.`);
153
+ }
154
+ const isTypeOnly = !!importDeclaration.isTypeOnly || !!namedImport.isTypeOnly;
155
+ if (!isTypeOnly && projectExport.isTypeOnly) {
156
+ throw new Error(`Import ${namedImport.name} from ${moduleSpecifier} in ${filePath} is not a type only import but the project export is a type only import.`);
157
+ }
158
+ usedProjectExports.push(projectExport);
159
+ return {
160
+ namedImports: [namedImport],
161
+ moduleSpecifier: projectExport.importSource,
162
+ isTypeOnly,
163
+ };
164
+ }));
165
+ return importDeclarations;
166
+ }));
167
+ const mergedImportDeclarations = mergeTsImportDeclarations(updatedImportDeclarations.flat());
168
+ const sortedImportDeclarations = sortImportDeclarations(mergedImportDeclarations, {});
169
+ replaceImportDeclarationsInSourceFile(sourceFile, importDeclarations, sortedImportDeclarations);
170
+ return {
171
+ contents: sourceFile.getFullText(),
172
+ usedProjectExports,
173
+ };
174
+ }
175
+ //# sourceMappingURL=organize-ts-template-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organize-ts-template-imports.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/organize-ts-template-imports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * PREPROCESSING HACK: Adjusts code string before template extraction
3
+ * to handle specific Prettier formatting quirks where comment markers
4
+ * are moved outside parentheses.
5
+ *
6
+ * Pattern 1: identifier /* TPL_VAR:START *\/ ( => identifier(/* TPL_VAR:START *\/
7
+ * Pattern 2: ) /* TPL_VAR:END *\/ => /* TPL_VAR:END *\/)
8
+ * Pattern 3: ,[whitespace]/* TPL_VAR:END *\/ => /* TPL_VAR:END *\/,[whitespace]
9
+ *
10
+ * WARNING: This is a temporary workaround and might be fragile.
11
+ * It assumes specific formatting outputs from Prettier.
12
+ *
13
+ * @param code The code string to preprocess.
14
+ * @returns The transformed code string.
15
+ */
16
+ export declare function preprocessCodeForExtractionHack(code: string): string;
17
+ //# sourceMappingURL=preprocess-code-for-extraction-hack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocess-code-for-extraction-hack.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/preprocess-code-for-extraction-hack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0CpE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * PREPROCESSING HACK: Adjusts code string before template extraction
3
+ * to handle specific Prettier formatting quirks where comment markers
4
+ * are moved outside parentheses.
5
+ *
6
+ * Pattern 1: identifier /* TPL_VAR:START *\/ ( => identifier(/* TPL_VAR:START *\/
7
+ * Pattern 2: ) /* TPL_VAR:END *\/ => /* TPL_VAR:END *\/)
8
+ * Pattern 3: ,[whitespace]/* TPL_VAR:END *\/ => /* TPL_VAR:END *\/,[whitespace]
9
+ *
10
+ * WARNING: This is a temporary workaround and might be fragile.
11
+ * It assumes specific formatting outputs from Prettier.
12
+ *
13
+ * @param code The code string to preprocess.
14
+ * @returns The transformed code string.
15
+ */
16
+ export function preprocessCodeForExtractionHack(code) {
17
+ let transformedCode = code;
18
+ // --- Pattern 1: Move START marker inside the opening parenthesis ---
19
+ // Addresses Prettier moving the START marker *before* the opening parenthesis.
20
+ // Example `Before`: myFunction /* TPL_ARGS:START */ (arg1, arg2)
21
+ // Example `After`: myFunction(/* TPL_ARGS:START */ arg1, arg2)
22
+ const startMarkerRegex = /(\w+)\s*(\/\* (TPL_[A-Z0-9_]+):START \*\/)\s*\(/g;
23
+ transformedCode = transformedCode.replaceAll(startMarkerRegex, (match, identifier, startMarkerComment) =>
24
+ // Replace with: identifier, opening parenthesis, the START comment
25
+ `${identifier}(${startMarkerComment}`);
26
+ // --- Pattern 2: Move END marker before the opening parenthesis ---
27
+ // Addresses cases where the END marker might appear *after* the opening parenthesis,
28
+ // potentially separated by whitespace.
29
+ // Example `Before`: ( /* TPL_ARGS:END */ arg1, arg2)
30
+ // Example `After`: /* TPL_ARGS:END */ (arg1, arg2)
31
+ const endMarkerRegex = /\(\s*(\/\* (TPL_[A-Z0-9_]+):END \*\/)/g;
32
+ transformedCode = transformedCode.replaceAll(endMarkerRegex, (match, endMarkerComment) =>
33
+ // Replace with: the END comment, opening parenthesis
34
+ `${endMarkerComment}(`);
35
+ // --- Pattern 3: Move END marker before comma ---
36
+ // Addresses cases where the END marker appears after a comma, potentially
37
+ // separated by whitespace (including a single newline).
38
+ // Example `Before`: arg1, /* TPL_ARGS:END */ arg2
39
+ // Example `After`: arg1 /* TPL_ARGS:END */, arg2
40
+ const commaEndMarkerRegex = /,(\s*)(\/\* (TPL_[A-Z0-9_]+):END \*\/)/g;
41
+ transformedCode = transformedCode.replaceAll(commaEndMarkerRegex, (match, whitespace, endMarkerComment) =>
42
+ // Replace with: the END comment, comma
43
+ `${endMarkerComment},${whitespace}`);
44
+ return transformedCode;
45
+ }
46
+ //# sourceMappingURL=preprocess-code-for-extraction-hack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocess-code-for-extraction-hack.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/preprocess-code-for-extraction-hack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAAY;IAC1D,IAAI,eAAe,GAAG,IAAI,CAAC;IAE3B,sEAAsE;IACtE,+EAA+E;IAC/E,iEAAiE;IACjE,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,kDAAkD,CAAC;IAC5E,eAAe,GAAG,eAAe,CAAC,UAAU,CAC1C,gBAAgB,EAChB,CAAC,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE;IACxC,mEAAmE;IACnE,GAAG,UAAU,IAAI,kBAAkB,EAAE,CACxC,CAAC;IAEF,oEAAoE;IACpE,qFAAqF;IACrF,uCAAuC;IACvC,qDAAqD;IACrD,oDAAoD;IACpD,MAAM,cAAc,GAAG,wCAAwC,CAAC;IAChE,eAAe,GAAG,eAAe,CAAC,UAAU,CAC1C,cAAc,EACd,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE;IAC1B,qDAAqD;IACrD,GAAG,gBAAgB,GAAG,CACzB,CAAC;IAEF,kDAAkD;IAClD,0EAA0E;IAC1E,wDAAwD;IACxD,kDAAkD;IAClD,kDAAkD;IAClD,MAAM,mBAAmB,GAAG,yCAAyC,CAAC;IACtE,eAAe,GAAG,eAAe,CAAC,UAAU,CAC1C,mBAAmB,EACnB,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE;IACtC,uCAAuC;IACvC,GAAG,gBAAgB,IAAI,UAAU,EAAE,CACtC,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const IMPORTS_FILE_TEMPLATE = "\nimport { createReadOnlyProviderType } from '@baseplate-dev/sync';\n\nimport type { TsImportMapProviderFromSchema } from 'TPL_TS_IMPORTS';\n\nimport {\n createTsImportMap,\n createTsImportMapSchema,\n} from 'TPL_TS_IMPORTS';\n\nconst TPL_IMPORTS_SCHEMA_VAR =\n createTsImportMapSchema(TPL_IMPORTS_SCHEMA);\n\ntype TPL_IMPORTS_PROVIDER_TYPE_VAR = TsImportMapProviderFromSchema<\n typeof TPL_IMPORTS_SCHEMA_VAR\n>;\n\nexport const TPL_IMPORTS_PROVIDER_VAR =\n createReadOnlyProviderType<TPL_IMPORTS_PROVIDER_TYPE_VAR>(\n 'TPL_PROVIDER_NAME',\n );\n\nexport function TPL_CREATE_IMPORT_MAP_FUNCTION(\n importBase: string,\n): TPL_IMPORTS_PROVIDER_TYPE_VAR {\n if (!importBase.startsWith('@/')) {\n throw new Error('importBase must start with @/');\n }\n\n return createTsImportMap(\n TPL_IMPORTS_SCHEMA_VAR,\n TPL_IMPORT_MAP_CREATOR,\n );\n}";
2
+ //# sourceMappingURL=imports-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports-file.d.ts","sourceRoot":"","sources":["../../../../../src/renderers/typescript/extractor/templates/imports-file.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,k2BAiChC,CAAC"}
@@ -0,0 +1,35 @@
1
+ export const IMPORTS_FILE_TEMPLATE = `
2
+ import { createReadOnlyProviderType } from '@baseplate-dev/sync';
3
+
4
+ import type { TsImportMapProviderFromSchema } from 'TPL_TS_IMPORTS';
5
+
6
+ import {
7
+ createTsImportMap,
8
+ createTsImportMapSchema,
9
+ } from 'TPL_TS_IMPORTS';
10
+
11
+ const TPL_IMPORTS_SCHEMA_VAR =
12
+ createTsImportMapSchema(TPL_IMPORTS_SCHEMA);
13
+
14
+ type TPL_IMPORTS_PROVIDER_TYPE_VAR = TsImportMapProviderFromSchema<
15
+ typeof TPL_IMPORTS_SCHEMA_VAR
16
+ >;
17
+
18
+ export const TPL_IMPORTS_PROVIDER_VAR =
19
+ createReadOnlyProviderType<TPL_IMPORTS_PROVIDER_TYPE_VAR>(
20
+ 'TPL_PROVIDER_NAME',
21
+ );
22
+
23
+ export function TPL_CREATE_IMPORT_MAP_FUNCTION(
24
+ importBase: string,
25
+ ): TPL_IMPORTS_PROVIDER_TYPE_VAR {
26
+ if (!importBase.startsWith('@/')) {
27
+ throw new Error('importBase must start with @/');
28
+ }
29
+
30
+ return createTsImportMap(
31
+ TPL_IMPORTS_SCHEMA_VAR,
32
+ TPL_IMPORT_MAP_CREATOR,
33
+ );
34
+ }`;
35
+ //# sourceMappingURL=imports-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports-file.js","sourceRoot":"","sources":["../../../../../src/renderers/typescript/extractor/templates/imports-file.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCnC,CAAC"}
@@ -0,0 +1,167 @@
1
+ import type { TemplateFileExtractorContext, TemplateFileExtractorFile } from '@baseplate-dev/sync';
2
+ import { TemplateFileExtractor } from '@baseplate-dev/sync';
3
+ import { ResolverFactory } from 'oxc-resolver';
4
+ import { z } from 'zod';
5
+ import type { TsCodeFragment } from '../fragments/types.js';
6
+ import type { TsTemplateFileMetadata } from '../templates/types.js';
7
+ import type { ProjectExportLookupMap, TsTemplateImportLookupContext } from './organize-ts-template-imports.js';
8
+ import type { TsProjectExport } from './write-ts-project-exports.js';
9
+ import { tsTemplateFileMetadataSchema } from '../templates/types.js';
10
+ interface TypescriptCodeEntry {
11
+ codeBlock: TsCodeFragment;
12
+ exportName: string;
13
+ }
14
+ declare const generatorOptionsSchema: z.ZodObject<{
15
+ /**
16
+ * A map of export group names to export group configuration.
17
+ *
18
+ * To refer to the default export group name, use an empty string.
19
+ */
20
+ exportGroups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
21
+ /**
22
+ * Whether to export the provider type.
23
+ */
24
+ exportProviderType: z.ZodOptional<z.ZodBoolean>;
25
+ /**
26
+ * The existing imports provider to use.
27
+ */
28
+ existingImportsProvider: z.ZodOptional<z.ZodObject<{
29
+ /**
30
+ * The module specifier of the existing imports provider.
31
+ *
32
+ * Can be a relative path with @/ or a package name.
33
+ */
34
+ moduleSpecifier: z.ZodString;
35
+ /**
36
+ * The name of the import schema export.
37
+ */
38
+ importSchemaName: z.ZodString;
39
+ /**
40
+ * The name of the provider type export.
41
+ */
42
+ providerTypeName: z.ZodString;
43
+ /**
44
+ * The name of the provider export.
45
+ */
46
+ providerName: z.ZodString;
47
+ }, "strip", z.ZodTypeAny, {
48
+ moduleSpecifier: string;
49
+ importSchemaName: string;
50
+ providerTypeName: string;
51
+ providerName: string;
52
+ }, {
53
+ moduleSpecifier: string;
54
+ importSchemaName: string;
55
+ providerTypeName: string;
56
+ providerName: string;
57
+ }>>;
58
+ }, "strip", z.ZodTypeAny, {
59
+ existingImportsProvider?: {
60
+ moduleSpecifier: string;
61
+ importSchemaName: string;
62
+ providerTypeName: string;
63
+ providerName: string;
64
+ } | undefined;
65
+ exportProviderType?: boolean | undefined;
66
+ }, {
67
+ existingImportsProvider?: {
68
+ moduleSpecifier: string;
69
+ importSchemaName: string;
70
+ providerTypeName: string;
71
+ providerName: string;
72
+ } | undefined;
73
+ exportProviderType?: boolean | undefined;
74
+ }>>>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ exportGroups?: Record<string, {
77
+ existingImportsProvider?: {
78
+ moduleSpecifier: string;
79
+ importSchemaName: string;
80
+ providerTypeName: string;
81
+ providerName: string;
82
+ } | undefined;
83
+ exportProviderType?: boolean | undefined;
84
+ }> | undefined;
85
+ }, {
86
+ exportGroups?: Record<string, {
87
+ existingImportsProvider?: {
88
+ moduleSpecifier: string;
89
+ importSchemaName: string;
90
+ providerTypeName: string;
91
+ providerName: string;
92
+ } | undefined;
93
+ exportProviderType?: boolean | undefined;
94
+ }> | undefined;
95
+ }>;
96
+ type GeneratorOptions = z.infer<typeof generatorOptionsSchema>;
97
+ export declare class TsTemplateFileExtractor extends TemplateFileExtractor<typeof tsTemplateFileMetadataSchema> {
98
+ name: string;
99
+ metadataSchema: z.ZodObject<z.objectUtil.extendShape<{
100
+ type: z.ZodString;
101
+ name: z.ZodString;
102
+ generator: z.ZodString;
103
+ template: z.ZodString;
104
+ }, {
105
+ type: z.ZodLiteral<"ts">;
106
+ group: z.ZodOptional<z.ZodString>;
107
+ exportGroup: z.ZodOptional<z.ZodString>;
108
+ projectExports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
109
+ isTypeOnly: z.ZodOptional<z.ZodBoolean>;
110
+ exportName: z.ZodOptional<z.ZodString>;
111
+ }, "strip", z.ZodTypeAny, {
112
+ isTypeOnly?: boolean | undefined;
113
+ exportName?: string | undefined;
114
+ }, {
115
+ isTypeOnly?: boolean | undefined;
116
+ exportName?: string | undefined;
117
+ }>>>;
118
+ projectExportsOnly: z.ZodOptional<z.ZodBoolean>;
119
+ }>, "strip", z.ZodTypeAny, {
120
+ type: "ts";
121
+ name: string;
122
+ generator: string;
123
+ template: string;
124
+ group?: string | undefined;
125
+ exportGroup?: string | undefined;
126
+ projectExports?: Record<string, {
127
+ isTypeOnly?: boolean | undefined;
128
+ exportName?: string | undefined;
129
+ }> | undefined;
130
+ projectExportsOnly?: boolean | undefined;
131
+ }, {
132
+ type: "ts";
133
+ name: string;
134
+ generator: string;
135
+ template: string;
136
+ group?: string | undefined;
137
+ exportGroup?: string | undefined;
138
+ projectExports?: Record<string, {
139
+ isTypeOnly?: boolean | undefined;
140
+ exportName?: string | undefined;
141
+ }> | undefined;
142
+ projectExportsOnly?: boolean | undefined;
143
+ }>;
144
+ protected pathResolver: ResolverFactory;
145
+ constructor(context: TemplateFileExtractorContext, { pathResolver, }?: {
146
+ pathResolver?: ResolverFactory;
147
+ });
148
+ private generatorConfigCacheMap;
149
+ protected getGeneratorOptions(generatorName: string): Promise<GeneratorOptions>;
150
+ protected getTypescriptRendererImport(generatorName: string): string;
151
+ protected extractTemplateFile(file: TemplateFileExtractorFile<TsTemplateFileMetadata>, importLookupContext: TsTemplateImportLookupContext): Promise<TypescriptCodeEntry & {
152
+ originalPath: string;
153
+ }>;
154
+ protected extractTemplateFilesForGroup(generatorName: string, groupName: string, files: TemplateFileExtractorFile<TsTemplateFileMetadata>[], lookupContext: TsTemplateImportLookupContext): Promise<TypescriptCodeEntry>;
155
+ protected extractTemplateFilesForGenerator(generatorName: string, files: TemplateFileExtractorFile<TsTemplateFileMetadata>[], projectExportMap: ProjectExportLookupMap): Promise<void>;
156
+ /**
157
+ * Generates an import file for a generator.
158
+ *
159
+ * @param generatorName - The name of the generator.
160
+ * @param files - The files to generate the import file for.
161
+ * @returns A list of project exports.
162
+ */
163
+ protected generateImportFileForGenerator(generatorName: string, files: TemplateFileExtractorFile<TsTemplateFileMetadata>[]): Promise<TsProjectExport[]>;
164
+ extractTemplateFiles(files: TemplateFileExtractorFile<TsTemplateFileMetadata>[]): Promise<void>;
165
+ }
166
+ export {};
167
+ //# sourceMappingURL=ts-template-file-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-template-file-extractor.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/ts-template-file-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACV,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKrE,OAAO,EAEL,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAM/B,UAAU,mBAAmB;IAC3B,SAAS,EAAE,cAAc,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAYD,QAAA,MAAM,sBAAsB;IAC1B;;;;OAIG;;QAKG;;WAEG;;QAEH;;WAEG;;YAGC;;;;eAIG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOb,CAAC;AAEH,KAAK,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE/D,qBAAa,uBAAwB,SAAQ,qBAAqB,CAChE,OAAO,4BAA4B,CACpC;IACQ,IAAI,SAAoB;IACxB,cAAc;cArGQ,EAC7B,SAAQ;cAGmB,EAAG,SAAS;mBAItC,EAAG,SAAS;kBAIZ,EAAI,SAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyFwC;IAErD,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC;gBAGtC,OAAO,EAAE,4BAA4B,EACrC,EACE,YAAY,GACb,GAAE;QACD,YAAY,CAAC,EAAE,eAAe,CAAC;KAC3B;IAuBR,OAAO,CAAC,uBAAuB,CAAuC;cAEtD,mBAAmB,CACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC;IAkB5B,SAAS,CAAC,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;cAMpD,mBAAmB,CACjC,IAAI,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EACvD,mBAAmB,EAAE,6BAA6B,GACjD,OAAO,CACR,mBAAmB,GAAG;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CACF;cAoFe,4BAA4B,CAC1C,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,EAC1D,aAAa,EAAE,6BAA6B,GAC3C,OAAO,CAAC,mBAAmB,CAAC;cA6Cf,gCAAgC,CAC9C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,EAC1D,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,IAAI,CAAC;IAwEhB;;;;;;OAMG;cACa,8BAA8B,CAC5C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,GACzD,OAAO,CAAC,eAAe,EAAE,CAAC;IA6DvB,oBAAoB,CACxB,KAAK,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,GACzD,OAAO,CAAC,IAAI,CAAC;CAsDjB"}