@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,279 @@
1
+ import { getGenerationConcurrencyLimit, parseGeneratorName, TemplateFileExtractor, } from '@baseplate-dev/sync';
2
+ import { mapGroupBy, mapKeyBy, quot } from '@baseplate-dev/utils';
3
+ import { getCommonPathPrefix, handleFileNotFoundError, readJsonWithSchema, } from '@baseplate-dev/utils/node';
4
+ import { camelCase, constantCase, sortBy, uniq } from 'es-toolkit';
5
+ import path from 'node:path';
6
+ import { ResolverFactory } from 'oxc-resolver';
7
+ import pLimit from 'p-limit';
8
+ import { z } from 'zod';
9
+ import { tsCodeFragment } from '../fragments/creators.js';
10
+ import { tsImportBuilder } from '../imports/builder.js';
11
+ import { renderTsCodeFileTemplate } from '../renderers/file.js';
12
+ import { TS_TEMPLATE_TYPE, tsTemplateFileMetadataSchema, } from '../templates/types.js';
13
+ import { TsCodeUtils } from '../utils/ts-code-utils.js';
14
+ import { extractTsTemplateVariables } from './extract-ts-template-variables.js';
15
+ import { organizeTsTemplateImports } from './organize-ts-template-imports.js';
16
+ import { writeTsProjectExports } from './write-ts-project-exports.js';
17
+ function getImportSourceForGenerator(generatorName, importPath, importPackage) {
18
+ const { packageName } = parseGeneratorName(generatorName);
19
+ return importPackage === packageName ? importPath : importPackage;
20
+ }
21
+ const GENERATOR_OPTIONS_FILENAME = 'ts-extractor.json';
22
+ const generatorOptionsSchema = z.object({
23
+ /**
24
+ * A map of export group names to export group configuration.
25
+ *
26
+ * To refer to the default export group name, use an empty string.
27
+ */
28
+ exportGroups: z
29
+ .record(z.string(), z.object({
30
+ /**
31
+ * Whether to export the provider type.
32
+ */
33
+ exportProviderType: z.boolean().optional(),
34
+ /**
35
+ * The existing imports provider to use.
36
+ */
37
+ existingImportsProvider: z
38
+ .object({
39
+ /**
40
+ * The module specifier of the existing imports provider.
41
+ *
42
+ * Can be a relative path with @/ or a package name.
43
+ */
44
+ moduleSpecifier: z.string(),
45
+ /**
46
+ * The name of the import schema export.
47
+ */
48
+ importSchemaName: z.string(),
49
+ /**
50
+ * The name of the provider type export.
51
+ */
52
+ providerTypeName: z.string(),
53
+ /**
54
+ * The name of the provider export.
55
+ */
56
+ providerName: z.string(),
57
+ })
58
+ .optional(),
59
+ }))
60
+ .optional(),
61
+ });
62
+ export class TsTemplateFileExtractor extends TemplateFileExtractor {
63
+ name = TS_TEMPLATE_TYPE;
64
+ metadataSchema = tsTemplateFileMetadataSchema;
65
+ pathResolver;
66
+ constructor(context, { pathResolver, } = {}) {
67
+ super(context);
68
+ this.pathResolver =
69
+ pathResolver ??
70
+ new ResolverFactory({
71
+ tsconfig: {
72
+ configFile: path.join(this.getProjectBaseDirectory(), 'tsconfig.json'),
73
+ },
74
+ conditionNames: ['node', 'require'],
75
+ extensions: ['.ts', '.tsx', '.d.ts', '.js', '.jsx', '.json', '.node'],
76
+ extensionAlias: {
77
+ '.js': ['.ts', '.tsx', '.d.ts', '.js'],
78
+ '.jsx': ['.tsx', '.d.ts', '.jsx'],
79
+ '.cjs': ['.cts', '.d.cts', '.cjs'],
80
+ '.mjs': ['.mts', '.d.mts', '.mjs'],
81
+ },
82
+ });
83
+ }
84
+ generatorConfigCacheMap = new Map();
85
+ async getGeneratorOptions(generatorName) {
86
+ let generatorOptions = this.generatorConfigCacheMap.get(generatorName);
87
+ if (!generatorOptions) {
88
+ const generatorBase = this.getGeneratorBaseDirectory(generatorName);
89
+ const generatorOptionsPath = path.join(generatorBase, GENERATOR_OPTIONS_FILENAME);
90
+ generatorOptions =
91
+ (await readJsonWithSchema(generatorOptionsPath, generatorOptionsSchema).catch(handleFileNotFoundError)) ?? {};
92
+ this.generatorConfigCacheMap.set(generatorName, generatorOptions);
93
+ }
94
+ return generatorOptions;
95
+ }
96
+ getTypescriptRendererImport(generatorName) {
97
+ return generatorName.startsWith('@baseplate-dev/core-generators#')
98
+ ? '@src/renderers/typescript/index.js'
99
+ : '@baseplate-dev/core-generators';
100
+ }
101
+ async extractTemplateFile(file, importLookupContext) {
102
+ const sourceFileContents = await this.readSourceFile(file.path);
103
+ const { content: extractedContent, variables } = extractTsTemplateVariables(sourceFileContents);
104
+ const { usedProjectExports, contents: organizedContents } = await organizeTsTemplateImports(file.path, extractedContent, importLookupContext);
105
+ const usedImportProviderMap = mapKeyBy(usedProjectExports, (projectExport) => projectExport.providerImportName);
106
+ const generatorName = file.metadata.generator;
107
+ const usedImportProviders = [...usedImportProviderMap.values()].map((projectExport) => ({
108
+ name: projectExport.importSource.slice(1),
109
+ providerFragment: tsCodeFragment(projectExport.providerImportName, tsImportBuilder([projectExport.providerImportName]).from(getImportSourceForGenerator(generatorName, path.relative(path.join(this.getGeneratorBaseDirectory(generatorName), 'generated'), projectExport.providerPath.replace(/\.ts$/, '.js')), projectExport.providerPackage))),
110
+ }));
111
+ let processedContent = organizedContents;
112
+ if (organizedContents.startsWith('#!')) {
113
+ // shebang lines must always be the first line
114
+ const contentLines = organizedContents.split('\n');
115
+ processedContent = `${contentLines[0]}\n// @ts-nocheck\n\n${contentLines.slice(1).join('\n')}`;
116
+ }
117
+ else {
118
+ processedContent = `// @ts-nocheck\n\n${organizedContents}`;
119
+ }
120
+ await this.writeTemplateFileIfModified(file, processedContent);
121
+ const templateName = camelCase(file.metadata.name);
122
+ const templateOptions = TsCodeUtils.mergeFragmentsAsObject({
123
+ name: quot(file.metadata.name),
124
+ group: file.metadata.group ? quot(file.metadata.group) : undefined,
125
+ source: JSON.stringify({
126
+ path: file.metadata.template,
127
+ }),
128
+ variables: JSON.stringify(variables),
129
+ projectExports: JSON.stringify(file.metadata.projectExports ?? {}),
130
+ importMapProviders: usedImportProviders.length > 0
131
+ ? TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(usedImportProviders.map((importProvider) => [
132
+ importProvider.name,
133
+ importProvider.providerFragment,
134
+ ])))
135
+ : undefined,
136
+ });
137
+ return {
138
+ codeBlock: TsCodeUtils.templateWithImports([
139
+ tsImportBuilder(['createTsTemplateFile']).from(this.getTypescriptRendererImport(generatorName)),
140
+ ]) `const ${templateName} = createTsTemplateFile(${templateOptions});`,
141
+ exportName: templateName,
142
+ originalPath: file.path,
143
+ };
144
+ }
145
+ async extractTemplateFilesForGroup(generatorName, groupName, files, lookupContext) {
146
+ const results = await Promise.all(files.map((file) => this.extractTemplateFile(file, lookupContext)));
147
+ const originalPaths = results.map((result) => result.originalPath);
148
+ // identify greatest common prefix
149
+ const commonPathPrefix = getCommonPathPrefix(originalPaths);
150
+ const groupNameVariable = `${camelCase(groupName)}Group`;
151
+ const groupBlock = TsCodeUtils.templateWithImports(tsImportBuilder(['createTsTemplateGroup']).from(this.getTypescriptRendererImport(generatorName))) `const ${groupNameVariable} = createTsTemplateGroup({
152
+ templates: ${TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(results.map((result) => [
153
+ result.exportName,
154
+ TsCodeUtils.mergeFragmentsAsObject({
155
+ destination: quot(path.relative(commonPathPrefix, result.originalPath)),
156
+ template: result.exportName,
157
+ }),
158
+ ])))}
159
+ });`;
160
+ return {
161
+ codeBlock: TsCodeUtils.mergeFragmentsPresorted([
162
+ ...sortBy(results, [(r) => r.exportName]).map((result) => result.codeBlock),
163
+ groupBlock,
164
+ ], '\n\n'),
165
+ exportName: groupNameVariable,
166
+ };
167
+ }
168
+ async extractTemplateFilesForGenerator(generatorName, files, projectExportMap) {
169
+ const extractLimit = pLimit(getGenerationConcurrencyLimit());
170
+ const filesToExtract = files.filter((file) => !file.metadata.projectExportsOnly);
171
+ const filesByGroups = mapGroupBy(filesToExtract.filter((file) => file.metadata.group), (file) => file.metadata.group ?? '');
172
+ const filesWithoutGroups = filesToExtract.filter((file) => !file.metadata.group);
173
+ const lookupContext = {
174
+ projectExportMap,
175
+ projectRoot: this.getProjectBaseDirectory(),
176
+ generatorFiles: files.map((file) => file.path),
177
+ resolver: this.pathResolver,
178
+ };
179
+ const results = await Promise.all([
180
+ ...[...filesByGroups].map(([groupName, files]) => extractLimit(() => this.extractTemplateFilesForGroup(generatorName, groupName, files, lookupContext))),
181
+ ...filesWithoutGroups.map((file) => extractLimit(() => this.extractTemplateFile(file, lookupContext))),
182
+ ]);
183
+ if (!generatorName.includes('#')) {
184
+ throw new Error(`Generator name ${generatorName} is not in the correct format. Please use the format <package-name>#<generator-name>.`);
185
+ }
186
+ const templatesVariableName = `${constantCase(generatorName.split('#')[1])}_TS_TEMPLATES`;
187
+ const templatesFile = renderTsCodeFileTemplate({
188
+ templateContents: `TPL_CODE_BLOCKS
189
+
190
+ export const TPL_TEMPLATE_VARIABLE_NAME = TPL_RESULT;`,
191
+ variables: {
192
+ TPL_CODE_BLOCKS: TsCodeUtils.mergeFragmentsPresorted(sortBy(results, [(r) => r.exportName]).map((result) => result.codeBlock), '\n\n'),
193
+ TPL_TEMPLATE_VARIABLE_NAME: templatesVariableName,
194
+ TPL_RESULT: TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(results.map((result) => [result.exportName, result.exportName]))),
195
+ },
196
+ });
197
+ await this.writeGeneratedTypescriptFileIfModified(generatorName, 'ts-templates.ts', templatesFile);
198
+ }
199
+ /**
200
+ * Generates an import file for a generator.
201
+ *
202
+ * @param generatorName - The name of the generator.
203
+ * @param files - The files to generate the import file for.
204
+ * @returns A list of project exports.
205
+ */
206
+ async generateImportFileForGenerator(generatorName, files) {
207
+ const importMapsPath = path.join(this.getGeneratorBaseDirectory(generatorName), 'generated/ts-import-maps.ts');
208
+ const generatorOptions = await this.getGeneratorOptions(generatorName);
209
+ const packagePath = this.getGeneratorPackagePath(generatorName);
210
+ const exportGroupMap = mapGroupBy(files, (file) => file.metadata.exportGroup ?? '');
211
+ const projectExports = [];
212
+ const importsFileFragmentMap = new Map();
213
+ for (const [key, files] of exportGroupMap) {
214
+ const exportConfiguration = generatorOptions.exportGroups?.[key];
215
+ const result = writeTsProjectExports(files, generatorName, {
216
+ importMapFilePath: importMapsPath,
217
+ packagePath,
218
+ exportProviderType: exportConfiguration?.exportProviderType,
219
+ existingImportsProvider: exportConfiguration?.existingImportsProvider,
220
+ exportGroupName: key === '' ? undefined : key,
221
+ });
222
+ if (result.importsFileFragment) {
223
+ importsFileFragmentMap.set(key, result.importsFileFragment);
224
+ }
225
+ projectExports.push(...result.projectExports);
226
+ }
227
+ const importsFileContents = importsFileFragmentMap.size > 0
228
+ ? renderTsCodeFileTemplate({
229
+ templateContents: `TPL_CONTENTS`,
230
+ variables: {
231
+ TPL_CONTENTS: TsCodeUtils.mergeFragments(importsFileFragmentMap, '\n\n'),
232
+ },
233
+ importMapProviders: {},
234
+ options: {
235
+ importSortOptions: {
236
+ internalPatterns: [/^@src\//],
237
+ },
238
+ },
239
+ })
240
+ : undefined;
241
+ await (importsFileContents
242
+ ? this.writeGeneratedTypescriptFileIfModified(generatorName, 'ts-import-maps.ts', importsFileContents)
243
+ : this.deleteGeneratedTypescriptFile(generatorName, 'ts-import-maps.ts'));
244
+ return projectExports;
245
+ }
246
+ async extractTemplateFiles(files) {
247
+ const filesByGenerator = mapGroupBy(files, (file) => file.metadata.generator);
248
+ const projectExports = [];
249
+ for (const [generator, filesInGenerator] of filesByGenerator) {
250
+ const result = await this.generateImportFileForGenerator(generator, filesInGenerator);
251
+ projectExports.push(...result);
252
+ }
253
+ // make sure there are no duplicate importProviderNames with different import paths
254
+ const importProviderNameMap = mapGroupBy(projectExports, (projectExport) => projectExport.providerImportName);
255
+ for (const [providerImportName, projectExports] of importProviderNameMap) {
256
+ const projectExportPaths = uniq(projectExports.map((projectExport) => projectExport.providerPath));
257
+ if (projectExportPaths.length > 1) {
258
+ throw new Error(`Duplicate import provider: ${providerImportName} in ${projectExportPaths.join(', ')}`);
259
+ }
260
+ }
261
+ // organize project exports by project relative path
262
+ const projectExportMap = new Map();
263
+ for (const projectExport of projectExports) {
264
+ const { filePath } = projectExport;
265
+ const exportName = projectExport.exportName ?? projectExport.name;
266
+ if (!projectExportMap.has(filePath)) {
267
+ projectExportMap.set(filePath, new Map());
268
+ }
269
+ if (projectExportMap.get(filePath)?.has(exportName)) {
270
+ throw new Error(`Duplicate project export: ${exportName} in ${filePath}`);
271
+ }
272
+ projectExportMap.get(filePath)?.set(exportName, projectExport);
273
+ }
274
+ for (const [generator, filesInGenerator] of filesByGenerator) {
275
+ await this.extractTemplateFilesForGenerator(generator, filesInGenerator, projectExportMap);
276
+ }
277
+ }
278
+ }
279
+ //# sourceMappingURL=ts-template-file-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-template-file-extractor.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/ts-template-file-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { type TemplateFileExtractorFile } from '@baseplate-dev/sync';
2
+ import type { TsCodeFragment } from '../fragments/types.js';
3
+ import type { TsTemplateFileMetadata } from '../templates/types.js';
4
+ /**
5
+ * A project export that represents a single export from a generator.
6
+ */
7
+ export interface TsProjectExport {
8
+ /**
9
+ * The name of the export.
10
+ */
11
+ name: string;
12
+ /**
13
+ * The exported name of the export within the file, e.g. 'default' for default exports.
14
+ *
15
+ * If not provided, the name will be the same as the export name.
16
+ */
17
+ exportName?: string;
18
+ /**
19
+ * The path to the file that contains the export.
20
+ */
21
+ filePath: string;
22
+ /**
23
+ * Whether the export is a type only export.
24
+ */
25
+ isTypeOnly?: boolean;
26
+ /**
27
+ * The source of the import to import into the file, e.g. %configServiceImports
28
+ */
29
+ importSource: string;
30
+ /**
31
+ * The name of the import to import into the file, e.g. configServiceImportsProvider
32
+ */
33
+ providerImportName: string;
34
+ /**
35
+ * The path to the import map file, e.g. src/imports/config-service-imports.ts
36
+ */
37
+ providerPath: string;
38
+ /**
39
+ * The package name of the import, e.g. @baseplate-dev/core-generators
40
+ */
41
+ providerPackage: string;
42
+ }
43
+ interface WriteTsProjectExportsOptions {
44
+ /**
45
+ * The path to the import map file.
46
+ */
47
+ importMapFilePath: string;
48
+ /**
49
+ * The path of the package
50
+ */
51
+ packagePath: string;
52
+ /**
53
+ * Export group name. If undefined, the export group name will be the generator name.
54
+ */
55
+ exportGroupName?: string;
56
+ /**
57
+ * Whether to export the provider type.
58
+ */
59
+ exportProviderType?: boolean;
60
+ /**
61
+ * The existing imports provider to use.
62
+ */
63
+ existingImportsProvider?: {
64
+ /**
65
+ * The module specifier of the existing imports provider.
66
+ */
67
+ moduleSpecifier: string;
68
+ /**
69
+ * The name of the import schema export.
70
+ */
71
+ importSchemaName: string;
72
+ /**
73
+ * The name of the provider type export.
74
+ */
75
+ providerTypeName: string;
76
+ /**
77
+ * The name of the provider export.
78
+ */
79
+ providerName: string;
80
+ };
81
+ }
82
+ /**
83
+ * Writes the project exports to the import map file.
84
+ * @param files - The files to write the project exports to.
85
+ * @param outputDirectory - The output directory to write the project exports to.
86
+ * @param generatorName - The name of the generator.
87
+ * @param importMapFilePath - The path to the import map file.
88
+ * @param options - The options for the writeTsProjectExports function.
89
+ * @returns The import map file contents and the project exports.
90
+ */
91
+ export declare function writeTsProjectExports(files: TemplateFileExtractorFile<TsTemplateFileMetadata>[], generatorName: string, { importMapFilePath, packagePath, existingImportsProvider, exportProviderType, exportGroupName, }: WriteTsProjectExportsOptions): {
92
+ importsFileFragment: TsCodeFragment | undefined;
93
+ projectExports: TsProjectExport[];
94
+ };
95
+ export {};
96
+ //# sourceMappingURL=write-ts-project-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-ts-project-exports.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/write-ts-project-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAMpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,4BAA4B;IACpC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,uBAAuB,CAAC,EAAE;QACxB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB;;WAEG;QACH,gBAAgB,EAAE,MAAM,CAAC;QACzB;;WAEG;QACH,gBAAgB,EAAE,MAAM,CAAC;QACzB;;WAEG;QACH,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,EAC1D,aAAa,EAAE,MAAM,EACrB,EACE,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,EAAE,4BAA4B,GAC9B;IACD,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC;IAChD,cAAc,EAAE,eAAe,EAAE,CAAC;CACnC,CAqLA"}
@@ -0,0 +1,139 @@
1
+ import { parseGeneratorName, } from '@baseplate-dev/sync';
2
+ import { quot } from '@baseplate-dev/utils';
3
+ import { getCommonPathPrefix } from '@baseplate-dev/utils/node';
4
+ import { camelCase, pascalCase } from 'change-case';
5
+ import { sortBy } from 'es-toolkit';
6
+ import path from 'node:path';
7
+ import { tsCodeFragment } from '../fragments/creators.js';
8
+ import { tsImportBuilder } from '../imports/builder.js';
9
+ import { TsCodeUtils } from '../utils/ts-code-utils.js';
10
+ /**
11
+ * Writes the project exports to the import map file.
12
+ * @param files - The files to write the project exports to.
13
+ * @param outputDirectory - The output directory to write the project exports to.
14
+ * @param generatorName - The name of the generator.
15
+ * @param importMapFilePath - The path to the import map file.
16
+ * @param options - The options for the writeTsProjectExports function.
17
+ * @returns The import map file contents and the project exports.
18
+ */
19
+ export function writeTsProjectExports(files, generatorName, { importMapFilePath, packagePath, existingImportsProvider, exportProviderType, exportGroupName, }) {
20
+ // get imports name based off generator name
21
+ const parsedGeneratorName = parseGeneratorName(generatorName);
22
+ const { packageName, generatorBasename } = parsedGeneratorName;
23
+ const exportBasename = exportGroupName ?? generatorBasename;
24
+ const providerNamePascalCase = `${pascalCase(exportBasename)}Imports`;
25
+ const providerNameCamelCase = `${camelCase(exportBasename)}Imports`;
26
+ const providerName = `${exportBasename}-imports`;
27
+ const providerNameVar = existingImportsProvider
28
+ ? existingImportsProvider.providerName
29
+ : `${providerNameCamelCase}Provider`;
30
+ const providerPath = existingImportsProvider
31
+ ? existingImportsProvider.moduleSpecifier.replace(/^@/, packagePath)
32
+ : importMapFilePath;
33
+ const importSource = existingImportsProvider
34
+ ? `%${existingImportsProvider.providerName.replace(/Provider$/, '')}`
35
+ : `%${providerNameCamelCase}`;
36
+ // If the module specifier is relative, use the package name otherwise use the module specifier's package name
37
+ const providerPackage = existingImportsProvider
38
+ ? existingImportsProvider.moduleSpecifier.startsWith('@/')
39
+ ? packageName
40
+ : existingImportsProvider.moduleSpecifier
41
+ : packageName;
42
+ // Extract project exports
43
+ const projectExports = sortBy(files.flatMap((file) => Object.entries(file.metadata.projectExports ?? {}).map(([name, { isTypeOnly, exportName }]) => ({
44
+ name,
45
+ isTypeOnly,
46
+ exportName,
47
+ filePath: file.path,
48
+ importSource,
49
+ providerImportName: providerNameVar,
50
+ providerPath,
51
+ providerPackage,
52
+ }))), [(t) => t.name]);
53
+ const duplicateExports = projectExports.filter((fileExport, index, self) => self.findIndex((t) => t.name === fileExport.name) !== index);
54
+ if (duplicateExports.length > 0) {
55
+ throw new Error(`Duplicate project exports found in template files for generator ${generatorName}: ${duplicateExports.map((fileExport) => fileExport.name).join(', ')}`);
56
+ }
57
+ if (projectExports.length === 0) {
58
+ return {
59
+ importsFileFragment: undefined,
60
+ projectExports: [],
61
+ };
62
+ }
63
+ const isLocalImport = generatorName.startsWith('@baseplate-dev/core-generators#');
64
+ const tsImports = isLocalImport
65
+ ? '@src/renderers/typescript/index.js'
66
+ : '@baseplate-dev/core-generators';
67
+ const commonPathPrefix = getCommonPathPrefix(projectExports.map((projectExport) => projectExport.filePath));
68
+ const schemaVarName = `${providerNameCamelCase}Schema`;
69
+ const importsSchemaFragment = TsCodeUtils.templateWithImports(tsImportBuilder(['createTsImportMapSchema']).from(tsImports)) `
70
+ const ${schemaVarName} = createTsImportMapSchema(
71
+ ${TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(projectExports.map((projectExport) => [
72
+ projectExport.name,
73
+ JSON.stringify({
74
+ isTypeOnly: projectExport.isTypeOnly ? true : undefined,
75
+ name: projectExport.exportName ?? undefined,
76
+ }),
77
+ ])))},
78
+ );
79
+ `;
80
+ const providerTypeVarName = `${providerNamePascalCase}Provider`;
81
+ const importsProviderTypeFragment = TsCodeUtils.templateWithImports(tsImportBuilder(['TsImportMapProviderFromSchema'])
82
+ .typeOnly()
83
+ .from(tsImports)) `
84
+ ${exportProviderType ? 'export ' : ''}type ${providerTypeVarName} = TsImportMapProviderFromSchema<
85
+ typeof ${schemaVarName}
86
+ >;
87
+ `;
88
+ const importsProviderFragment = TsCodeUtils.templateWithImports(tsImportBuilder(['createReadOnlyProviderType']).from('@baseplate-dev/sync')) `
89
+ export const ${providerNameVar} = createReadOnlyProviderType<${providerTypeVarName}>(
90
+ ${quot(providerName)},
91
+ );
92
+ `;
93
+ const importProviderDeclaration = TsCodeUtils.mergeFragmentsPresorted([
94
+ importsSchemaFragment,
95
+ importsProviderTypeFragment,
96
+ importsProviderFragment,
97
+ ], '\n\n');
98
+ const createImportMapFunctionName = `create${providerNamePascalCase}`;
99
+ const creatorFragment = TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(projectExports.map((projectExport) => [
100
+ projectExport.name,
101
+ tsCodeFragment(`path.join(importBase, '${projectExport.filePath
102
+ .slice(commonPathPrefix === '.' ? 0 : commonPathPrefix.length + 1)
103
+ .replace(/\.tsx?$/, '.js')}')`, [tsImportBuilder().default('path').from('node:path/posix')]),
104
+ ])));
105
+ const resolvedExistingImportsProvider = existingImportsProvider
106
+ ? existingImportsProvider.moduleSpecifier.startsWith('@/')
107
+ ? path.relative(path.dirname(importMapFilePath), providerPath)
108
+ : providerPath
109
+ : '';
110
+ const providerImports = existingImportsProvider
111
+ ? [
112
+ tsImportBuilder([existingImportsProvider.importSchemaName]).from(resolvedExistingImportsProvider),
113
+ tsImportBuilder([existingImportsProvider.providerTypeName])
114
+ .typeOnly()
115
+ .from(resolvedExistingImportsProvider),
116
+ ]
117
+ : [];
118
+ const createImportMapFunctionFragment = TsCodeUtils.templateWithImports([
119
+ ...providerImports,
120
+ tsImportBuilder(['createTsImportMap']).from(tsImports),
121
+ ]) `
122
+ export function ${createImportMapFunctionName}(
123
+ importBase: string,
124
+ ): ${existingImportsProvider?.providerTypeName ?? providerTypeVarName} {
125
+ if (!importBase.startsWith('@/')) {
126
+ throw new Error('importBase must start with @/');
127
+ }
128
+
129
+ return createTsImportMap(${existingImportsProvider?.importSchemaName ?? schemaVarName}, ${creatorFragment});
130
+ }
131
+ `;
132
+ return {
133
+ importsFileFragment: existingImportsProvider
134
+ ? createImportMapFunctionFragment
135
+ : TsCodeUtils.mergeFragmentsPresorted([importProviderDeclaration, createImportMapFunctionFragment], '\n\n'),
136
+ projectExports,
137
+ };
138
+ }
139
+ //# sourceMappingURL=write-ts-project-exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-ts-project-exports.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/write-ts-project-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAkFxD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAA0D,EAC1D,aAAqB,EACrB,EACE,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GACc;IAK/B,4CAA4C;IAC5C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,mBAAmB,CAAC;IAC/D,MAAM,cAAc,GAAG,eAAe,IAAI,iBAAiB,CAAC;IAC5D,MAAM,sBAAsB,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC;IACtE,MAAM,qBAAqB,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;IACpE,MAAM,YAAY,GAAG,GAAG,cAAc,UAAU,CAAC;IAEjD,MAAM,eAAe,GAAG,uBAAuB;QAC7C,CAAC,CAAC,uBAAuB,CAAC,YAAY;QACtC,CAAC,CAAC,GAAG,qBAAqB,UAAU,CAAC;IAEvC,MAAM,YAAY,GAAG,uBAAuB;QAC1C,CAAC,CAAC,uBAAuB,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;QACpE,CAAC,CAAC,iBAAiB,CAAC;IAEtB,MAAM,YAAY,GAAG,uBAAuB;QAC1C,CAAC,CAAC,IAAI,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;QACrE,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC;IAEhC,8GAA8G;IAC9G,MAAM,eAAe,GAAG,uBAAuB;QAC7C,CAAC,CAAC,uBAAuB,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;YACxD,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,uBAAuB,CAAC,eAAe;QAC3C,CAAC,CAAC,WAAW,CAAC;IAEhB,0BAA0B;IAC1B,MAAM,cAAc,GAAsB,MAAM,CAC9C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CACpD,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI;QACJ,UAAU;QACV,UAAU;QACV,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,YAAY;QACZ,kBAAkB,EAAE,eAAe;QACnC,YAAY;QACZ,eAAe;KAChB,CAAC,CACH,CACF,EACD,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAChB,CAAC;IAEF,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAC5C,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,CAC9D,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,mEAAmE,aAAa,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxJ,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,mBAAmB,EAAE,SAAS;YAC9B,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAC5C,iCAAiC,CAClC,CAAC;IACF,MAAM,SAAS,GAAG,aAAa;QAC7B,CAAC,CAAC,oCAAoC;QACtC,CAAC,CAAC,gCAAgC,CAAC;IAErC,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC9D,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,qBAAqB,QAAQ,CAAC;IACvD,MAAM,qBAAqB,GAAG,WAAW,CAAC,mBAAmB,CAC3D,eAAe,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAC7D,CAAA;UACO,aAAa;MACjB,WAAW,CAAC,sBAAsB,CAClC,MAAM,CAAC,WAAW,CAChB,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QACpC,aAAa,CAAC,IAAI;QAClB,IAAI,CAAC,SAAS,CAAC;YACb,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACvD,IAAI,EAAE,aAAa,CAAC,UAAU,IAAI,SAAS;SAC5C,CAAC;KACH,CAAC,CACH,CACF;;GAEF,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,sBAAsB,UAAU,CAAC;IAChE,MAAM,2BAA2B,GAAG,WAAW,CAAC,mBAAmB,CACjE,eAAe,CAAC,CAAC,+BAA+B,CAAC,CAAC;SAC/C,QAAQ,EAAE;SACV,IAAI,CAAC,SAAS,CAAC,CACnB,CAAA;MACG,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,mBAAmB;eACrD,aAAa;;GAEzB,CAAC;IAEF,MAAM,uBAAuB,GAAG,WAAW,CAAC,mBAAmB,CAC7D,eAAe,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAC5E,CAAA;mBACgB,eAAe,iCAAiC,mBAAmB;QAC9E,IAAI,CAAC,YAAY,CAAC;;GAEvB,CAAC;IAEF,MAAM,yBAAyB,GAAG,WAAW,CAAC,uBAAuB,CACnE;QACE,qBAAqB;QACrB,2BAA2B;QAC3B,uBAAuB;KACxB,EACD,MAAM,CACP,CAAC;IAEF,MAAM,2BAA2B,GAAG,SAAS,sBAAsB,EAAE,CAAC;IACtE,MAAM,eAAe,GAAG,WAAW,CAAC,sBAAsB,CACxD,MAAM,CAAC,WAAW,CAChB,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QACpC,aAAa,CAAC,IAAI;QAClB,cAAc,CACZ,0BAA0B,aAAa,CAAC,QAAQ;aAC7C,KAAK,CAAC,gBAAgB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;aACjE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAChC,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAC5D;KACF,CAAC,CACH,CACF,CAAC;IAEF,MAAM,+BAA+B,GAAG,uBAAuB;QAC7D,CAAC,CAAC,uBAAuB,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC;YAC9D,CAAC,CAAC,YAAY;QAChB,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,eAAe,GAAG,uBAAuB;QAC7C,CAAC,CAAC;YACE,eAAe,CAAC,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAC9D,+BAA+B,CAChC;YACD,eAAe,CAAC,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;iBACxD,QAAQ,EAAE;iBACV,IAAI,CAAC,+BAA+B,CAAC;SACzC;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,+BAA+B,GAAG,WAAW,CAAC,mBAAmB,CAAC;QACtE,GAAG,eAAe;QAClB,eAAe,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACvD,CAAC,CAAA;sBACkB,2BAA2B;;SAExC,uBAAuB,EAAE,gBAAgB,IAAI,mBAAmB;;;;;iCAMjE,uBAAuB,EAAE,gBAAgB,IAAI,aAC/C,KAAK,eAAe;;GAEvB,CAAC;IAEF,OAAO;QACL,mBAAmB,EAAE,uBAAuB;YAC1C,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,WAAW,CAAC,uBAAuB,CACjC,CAAC,yBAAyB,EAAE,+BAA+B,CAAC,EAC5D,MAAM,CACP;QACL,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { TsImportDeclaration } from '../imports/types.js';
2
+ import type { TsCodeFragment, TsHoistedFragment, TsHoistedFragmentPosition, TsPositionedHoistedFragment } from './types.js';
3
+ export interface TsCodeFragmentOptions {
4
+ hoistedFragments?: TsHoistedFragment[];
5
+ }
6
+ /**
7
+ * Create a hoisted fragment.
8
+ * @param key - The key to use for the hoisted fragment.
9
+ * @param fragment - The fragment to hoist.
10
+ * @returns The hoisted fragment.
11
+ */
12
+ export declare function tsHoistedFragment(key: string, fragment: TsCodeFragment | string, imports?: TsImportDeclaration[] | TsImportDeclaration, { hoistedFragments }?: TsCodeFragmentOptions): TsHoistedFragment;
13
+ /**
14
+ * Create a positioned hoisted fragment.
15
+ * @param key - The key to use for the positioned hoisted fragment.
16
+ * @param fragment - The fragment to hoist.
17
+ * @param position - The position to insert the positioned hoisted fragment.
18
+ * @returns The positioned hoisted fragment.
19
+ */
20
+ export declare function tsPositionedHoistedFragment(key: string, fragment: TsCodeFragment | string, position: TsHoistedFragmentPosition, imports?: TsImportDeclaration[] | TsImportDeclaration): TsPositionedHoistedFragment;
21
+ /**
22
+ * Create a code fragment.
23
+ * @param contents - The contents of the code fragment.
24
+ * @param imports - The imports to add to the code fragment.
25
+ * @param options - The options for the code fragment.
26
+ * @returns The code fragment.
27
+ */
28
+ export declare function tsCodeFragment(contents: string, imports?: TsImportDeclaration[] | TsImportDeclaration, { hoistedFragments }?: TsCodeFragmentOptions): TsCodeFragment;
29
+ //# sourceMappingURL=creators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creators.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/fragments/creators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GAAG,MAAM,EACjC,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EACrD,EAAE,gBAAgB,EAAE,GAAE,qBAA0B,GAC/C,iBAAiB,CAanB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GAAG,MAAM,EACjC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,GACpD,2BAA2B,CAa7B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EACrD,EAAE,gBAAgB,EAAE,GAAE,qBAA0B,GAC/C,cAAc,CAMhB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Create a hoisted fragment.
3
+ * @param key - The key to use for the hoisted fragment.
4
+ * @param fragment - The fragment to hoist.
5
+ * @returns The hoisted fragment.
6
+ */
7
+ export function tsHoistedFragment(key, fragment, imports, { hoistedFragments } = {}) {
8
+ const importArr = Array.isArray(imports) ? imports : imports ? [imports] : [];
9
+ const fragmentObj = typeof fragment === 'string' ? tsCodeFragment(fragment) : fragment;
10
+ return {
11
+ key,
12
+ contents: fragmentObj.contents,
13
+ imports: [...importArr, ...(fragmentObj.imports ?? [])],
14
+ hoistedFragments: [
15
+ ...(hoistedFragments ?? []),
16
+ ...(fragmentObj.hoistedFragments ?? []),
17
+ ],
18
+ };
19
+ }
20
+ /**
21
+ * Create a positioned hoisted fragment.
22
+ * @param key - The key to use for the positioned hoisted fragment.
23
+ * @param fragment - The fragment to hoist.
24
+ * @param position - The position to insert the positioned hoisted fragment.
25
+ * @returns The positioned hoisted fragment.
26
+ */
27
+ export function tsPositionedHoistedFragment(key, fragment, position, imports) {
28
+ // we don't support positioned hoisted fragments with hoisted fragments for now since it requires
29
+ // doing a topological sort of the positioned hoisted fragments and there are very few use cases
30
+ // for this
31
+ if (typeof fragment !== 'string' && fragment.hoistedFragments?.length) {
32
+ throw new Error('Positioned hoisted fragments with hoisted fragments are not supported');
33
+ }
34
+ return {
35
+ ...tsHoistedFragment(key, fragment, imports),
36
+ position,
37
+ };
38
+ }
39
+ /**
40
+ * Create a code fragment.
41
+ * @param contents - The contents of the code fragment.
42
+ * @param imports - The imports to add to the code fragment.
43
+ * @param options - The options for the code fragment.
44
+ * @returns The code fragment.
45
+ */
46
+ export function tsCodeFragment(contents, imports, { hoistedFragments } = {}) {
47
+ return {
48
+ contents,
49
+ imports: Array.isArray(imports) ? imports : imports ? [imports] : [],
50
+ hoistedFragments,
51
+ };
52
+ }
53
+ //# sourceMappingURL=creators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creators.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/fragments/creators.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,QAAiC,EACjC,OAAqD,EACrD,EAAE,gBAAgB,KAA4B,EAAE;IAEhD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,WAAW,GACf,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,OAAO;QACL,GAAG;QACH,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACvD,gBAAgB,EAAE;YAChB,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,WAAW,CAAC,gBAAgB,IAAI,EAAE,CAAC;SACxC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAW,EACX,QAAiC,EACjC,QAAmC,EACnC,OAAqD;IAErD,iGAAiG;IACjG,gGAAgG;IAChG,WAAW;IACX,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;QAC5C,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAAqD,EACrD,EAAE,gBAAgB,KAA4B,EAAE;IAEhD,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;QACpE,gBAAgB;KACjB,CAAC;AACJ,CAAC"}