joist-codegen 2.3.0-next.8 → 2.3.0-next.80

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 (420) hide show
  1. package/build/EntityDbMetadata.cjs +642 -0
  2. package/build/EntityDbMetadata.cjs.map +1 -0
  3. package/build/EntityDbMetadata.d.cts +299 -0
  4. package/build/EntityDbMetadata.d.cts.map +1 -0
  5. package/build/EntityDbMetadata.d.mts +299 -0
  6. package/build/EntityDbMetadata.d.mts.map +1 -0
  7. package/build/EntityDbMetadata.js +519 -661
  8. package/build/EntityDbMetadata.js.map +1 -1
  9. package/build/_virtual/_rolldown/runtime.cjs +23 -0
  10. package/build/_virtual/_rolldown/runtime.js +5 -0
  11. package/build/assignTags.cjs +45 -0
  12. package/build/assignTags.cjs.map +1 -0
  13. package/build/{assignTags.d.ts → assignTags.d.cts} +8 -4
  14. package/build/assignTags.d.cts.map +1 -0
  15. package/build/assignTags.d.mts +16 -0
  16. package/build/assignTags.d.mts.map +1 -0
  17. package/build/assignTags.js +37 -59
  18. package/build/assignTags.js.map +1 -1
  19. package/build/codemods/Codemod.cjs +2 -0
  20. package/build/codemods/Codemod.d.cts +17 -0
  21. package/build/codemods/Codemod.d.cts.map +1 -0
  22. package/build/codemods/Codemod.d.mts +17 -0
  23. package/build/codemods/Codemod.d.mts.map +1 -0
  24. package/build/codemods/Codemod.js +2 -3
  25. package/build/codemods/JscodeshiftMod.cjs +42 -0
  26. package/build/codemods/JscodeshiftMod.cjs.map +1 -0
  27. package/build/codemods/JscodeshiftMod.d.cts +14 -0
  28. package/build/codemods/JscodeshiftMod.d.cts.map +1 -0
  29. package/build/codemods/JscodeshiftMod.d.mts +14 -0
  30. package/build/codemods/JscodeshiftMod.d.mts.map +1 -0
  31. package/build/codemods/JscodeshiftMod.js +33 -33
  32. package/build/codemods/JscodeshiftMod.js.map +1 -1
  33. package/build/codemods/codemod_0001-rename_has_async_property.cjs +30 -0
  34. package/build/codemods/codemod_0001-rename_has_async_property.cjs.map +1 -0
  35. package/build/codemods/codemod_0001-rename_has_async_property.d.cts +9 -0
  36. package/build/codemods/codemod_0001-rename_has_async_property.d.cts.map +1 -0
  37. package/build/codemods/codemod_0001-rename_has_async_property.d.mts +9 -0
  38. package/build/codemods/codemod_0001-rename_has_async_property.d.mts.map +1 -0
  39. package/build/codemods/codemod_0001-rename_has_async_property.js +21 -25
  40. package/build/codemods/codemod_0001-rename_has_async_property.js.map +1 -1
  41. package/build/codemods/codemod_0002-rename_async_query_fields.cjs +50 -0
  42. package/build/codemods/codemod_0002-rename_async_query_fields.cjs.map +1 -0
  43. package/build/codemods/codemod_0002-rename_async_query_fields.d.cts +9 -0
  44. package/build/codemods/codemod_0002-rename_async_query_fields.d.cts.map +1 -0
  45. package/build/codemods/codemod_0002-rename_async_query_fields.d.mts +9 -0
  46. package/build/codemods/codemod_0002-rename_async_query_fields.d.mts.map +1 -0
  47. package/build/codemods/codemod_0002-rename_async_query_fields.js +38 -52
  48. package/build/codemods/codemod_0002-rename_async_query_fields.js.map +1 -1
  49. package/build/codemods/codemod_0003-rename_find_paginated.cjs +25 -0
  50. package/build/codemods/codemod_0003-rename_find_paginated.cjs.map +1 -0
  51. package/build/codemods/codemod_0003-rename_find_paginated.d.cts +9 -0
  52. package/build/codemods/codemod_0003-rename_find_paginated.d.cts.map +1 -0
  53. package/build/codemods/codemod_0003-rename_find_paginated.d.mts +9 -0
  54. package/build/codemods/codemod_0003-rename_find_paginated.d.mts.map +1 -0
  55. package/build/codemods/codemod_0003-rename_find_paginated.js +17 -26
  56. package/build/codemods/codemod_0003-rename_find_paginated.js.map +1 -1
  57. package/build/codemods/index.cjs +49 -0
  58. package/build/codemods/index.cjs.map +1 -0
  59. package/build/codemods/index.d.cts +12 -0
  60. package/build/codemods/index.d.cts.map +1 -0
  61. package/build/codemods/index.d.mts +12 -0
  62. package/build/codemods/index.d.mts.map +1 -0
  63. package/build/codemods/index.js +34 -42
  64. package/build/codemods/index.js.map +1 -1
  65. package/build/config.cjs +377 -0
  66. package/build/config.cjs.map +1 -0
  67. package/build/config.d.cts +181 -0
  68. package/build/config.d.cts.map +1 -0
  69. package/build/config.d.mts +181 -0
  70. package/build/config.d.mts.map +1 -0
  71. package/build/config.js +309 -347
  72. package/build/config.js.map +1 -1
  73. package/build/docs/cache.cjs +62 -0
  74. package/build/docs/cache.cjs.map +1 -0
  75. package/build/docs/cache.d.cts +17 -0
  76. package/build/docs/cache.d.cts.map +1 -0
  77. package/build/docs/cache.d.mts +17 -0
  78. package/build/docs/cache.d.mts.map +1 -0
  79. package/build/docs/cache.js +52 -53
  80. package/build/docs/cache.js.map +1 -1
  81. package/build/docs/generate-metadata-docs.cjs +32 -0
  82. package/build/docs/generate-metadata-docs.cjs.map +1 -0
  83. package/build/docs/generate-metadata-docs.d.cts +9 -0
  84. package/build/docs/generate-metadata-docs.d.cts.map +1 -0
  85. package/build/docs/generate-metadata-docs.d.mts +9 -0
  86. package/build/docs/generate-metadata-docs.d.mts.map +1 -0
  87. package/build/docs/generate-metadata-docs.js +19 -24
  88. package/build/docs/generate-metadata-docs.js.map +1 -1
  89. package/build/docs/index.cjs +90 -0
  90. package/build/docs/index.cjs.map +1 -0
  91. package/build/docs/index.d.cts +16 -0
  92. package/build/docs/index.d.cts.map +1 -0
  93. package/build/docs/index.d.mts +16 -0
  94. package/build/docs/index.d.mts.map +1 -0
  95. package/build/docs/index.js +75 -80
  96. package/build/docs/index.js.map +1 -1
  97. package/build/docs/markdown.cjs +181 -0
  98. package/build/docs/markdown.cjs.map +1 -0
  99. package/build/docs/{markdown.d.ts → markdown.d.cts} +14 -12
  100. package/build/docs/markdown.d.cts.map +1 -0
  101. package/build/docs/markdown.d.mts +32 -0
  102. package/build/docs/markdown.d.mts.map +1 -0
  103. package/build/docs/markdown.js +152 -220
  104. package/build/docs/markdown.js.map +1 -1
  105. package/build/docs/parsing.cjs +117 -0
  106. package/build/docs/parsing.cjs.map +1 -0
  107. package/build/docs/parsing.d.cts +48 -0
  108. package/build/docs/parsing.d.cts.map +1 -0
  109. package/build/docs/parsing.d.mts +48 -0
  110. package/build/docs/parsing.d.mts.map +1 -0
  111. package/build/docs/parsing.js +89 -88
  112. package/build/docs/parsing.js.map +1 -1
  113. package/build/findEntityScopes.cjs +119 -0
  114. package/build/findEntityScopes.cjs.map +1 -0
  115. package/build/findEntityScopes.d.cts +14 -0
  116. package/build/findEntityScopes.d.cts.map +1 -0
  117. package/build/findEntityScopes.d.mts +14 -0
  118. package/build/findEntityScopes.d.mts.map +1 -0
  119. package/build/findEntityScopes.js +83 -111
  120. package/build/findEntityScopes.js.map +1 -1
  121. package/build/foreignKeyOrdering.cjs +52 -0
  122. package/build/foreignKeyOrdering.cjs.map +1 -0
  123. package/build/foreignKeyOrdering.d.cts +8 -0
  124. package/build/foreignKeyOrdering.d.cts.map +1 -0
  125. package/build/foreignKeyOrdering.d.mts +8 -0
  126. package/build/foreignKeyOrdering.d.mts.map +1 -0
  127. package/build/foreignKeyOrdering.js +46 -55
  128. package/build/foreignKeyOrdering.js.map +1 -1
  129. package/build/generate.cjs +128 -0
  130. package/build/generate.cjs.map +1 -0
  131. package/build/generate.d.cts +17 -0
  132. package/build/generate.d.cts.map +1 -0
  133. package/build/generate.d.mts +17 -0
  134. package/build/generate.d.mts.map +1 -0
  135. package/build/generate.js +111 -124
  136. package/build/generate.js.map +1 -1
  137. package/build/generateEntitiesFile.cjs +46 -0
  138. package/build/generateEntitiesFile.cjs.map +1 -0
  139. package/build/generateEntitiesFile.d.cts +11 -0
  140. package/build/generateEntitiesFile.d.cts.map +1 -0
  141. package/build/generateEntitiesFile.d.mts +11 -0
  142. package/build/generateEntitiesFile.d.mts.map +1 -0
  143. package/build/generateEntitiesFile.js +28 -25
  144. package/build/generateEntitiesFile.js.map +1 -1
  145. package/build/generateEntityCodegenFile.cjs +1010 -0
  146. package/build/generateEntityCodegenFile.cjs.map +1 -0
  147. package/build/generateEntityCodegenFile.d.cts +16 -0
  148. package/build/generateEntityCodegenFile.d.cts.map +1 -0
  149. package/build/generateEntityCodegenFile.d.mts +16 -0
  150. package/build/generateEntityCodegenFile.d.mts.map +1 -0
  151. package/build/generateEntityCodegenFile.js +793 -827
  152. package/build/generateEntityCodegenFile.js.map +1 -1
  153. package/build/generateEntityFile.cjs +23 -0
  154. package/build/generateEntityFile.cjs.map +1 -0
  155. package/build/generateEntityFile.d.cts +9 -0
  156. package/build/generateEntityFile.d.cts.map +1 -0
  157. package/build/generateEntityFile.d.mts +9 -0
  158. package/build/generateEntityFile.d.mts.map +1 -0
  159. package/build/generateEntityFile.js +11 -8
  160. package/build/generateEntityFile.js.map +1 -1
  161. package/build/generateEntityTestFile.cjs +25 -0
  162. package/build/generateEntityTestFile.cjs.map +1 -0
  163. package/build/generateEntityTestFile.d.cts +9 -0
  164. package/build/generateEntityTestFile.d.cts.map +1 -0
  165. package/build/generateEntityTestFile.d.mts +9 -0
  166. package/build/generateEntityTestFile.d.mts.map +1 -0
  167. package/build/generateEntityTestFile.js +10 -7
  168. package/build/generateEntityTestFile.js.map +1 -1
  169. package/build/generateEnumFile.cjs +73 -0
  170. package/build/generateEnumFile.cjs.map +1 -0
  171. package/build/generateEnumFile.d.cts +9 -0
  172. package/build/generateEnumFile.d.cts.map +1 -0
  173. package/build/generateEnumFile.d.mts +9 -0
  174. package/build/generateEnumFile.d.mts.map +1 -0
  175. package/build/generateEnumFile.js +33 -43
  176. package/build/generateEnumFile.js.map +1 -1
  177. package/build/generateFactoriesFiles.cjs +28 -0
  178. package/build/generateFactoriesFiles.cjs.map +1 -0
  179. package/build/generateFactoriesFiles.d.cts +7 -0
  180. package/build/generateFactoriesFiles.d.cts.map +1 -0
  181. package/build/generateFactoriesFiles.d.mts +7 -0
  182. package/build/generateFactoriesFiles.d.mts.map +1 -0
  183. package/build/generateFactoriesFiles.js +21 -16
  184. package/build/generateFactoriesFiles.js.map +1 -1
  185. package/build/generateFlushFunction.cjs +61 -0
  186. package/build/generateFlushFunction.cjs.map +1 -0
  187. package/build/{generateFlushFunction.d.ts → generateFlushFunction.d.cts} +8 -5
  188. package/build/generateFlushFunction.d.cts.map +1 -0
  189. package/build/generateFlushFunction.d.mts +23 -0
  190. package/build/generateFlushFunction.d.mts.map +1 -0
  191. package/build/generateFlushFunction.js +32 -78
  192. package/build/generateFlushFunction.js.map +1 -1
  193. package/build/generateMetadataFile.cjs +307 -0
  194. package/build/generateMetadataFile.cjs.map +1 -0
  195. package/build/generateMetadataFile.d.cts +10 -0
  196. package/build/generateMetadataFile.d.cts.map +1 -0
  197. package/build/generateMetadataFile.d.mts +10 -0
  198. package/build/generateMetadataFile.d.mts.map +1 -0
  199. package/build/generateMetadataFile.js +148 -156
  200. package/build/generateMetadataFile.js.map +1 -1
  201. package/build/generatePgEnumFile.cjs +21 -0
  202. package/build/generatePgEnumFile.cjs.map +1 -0
  203. package/build/generatePgEnumFile.d.cts +9 -0
  204. package/build/generatePgEnumFile.d.cts.map +1 -0
  205. package/build/generatePgEnumFile.d.mts +9 -0
  206. package/build/generatePgEnumFile.d.mts.map +1 -0
  207. package/build/generatePgEnumFile.js +12 -9
  208. package/build/generatePgEnumFile.js.map +1 -1
  209. package/build/index.cjs +135 -0
  210. package/build/index.cjs.map +1 -0
  211. package/build/index.d.cts +12 -0
  212. package/build/index.d.cts.map +1 -0
  213. package/build/index.d.mts +12 -0
  214. package/build/index.d.mts.map +1 -0
  215. package/build/index.js +108 -127
  216. package/build/index.js.map +1 -1
  217. package/build/inheritance.cjs +241 -0
  218. package/build/inheritance.cjs.map +1 -0
  219. package/build/inheritance.d.cts +13 -0
  220. package/build/inheritance.d.cts.map +1 -0
  221. package/build/inheritance.d.mts +13 -0
  222. package/build/inheritance.d.mts.map +1 -0
  223. package/build/inheritance.js +221 -247
  224. package/build/inheritance.js.map +1 -1
  225. package/build/installSkills.cjs +68 -0
  226. package/build/installSkills.cjs.map +1 -0
  227. package/build/installSkills.d.cts +16 -0
  228. package/build/installSkills.d.cts.map +1 -0
  229. package/build/installSkills.d.mts +16 -0
  230. package/build/installSkills.d.mts.map +1 -0
  231. package/build/installSkills.js +67 -0
  232. package/build/installSkills.js.map +1 -0
  233. package/build/keywords.cjs +7 -0
  234. package/build/keywords.cjs.map +1 -0
  235. package/build/keywords.d.cts +5 -0
  236. package/build/keywords.d.cts.map +1 -0
  237. package/build/keywords.d.mts +5 -0
  238. package/build/keywords.d.mts.map +1 -0
  239. package/build/keywords.js +5 -4
  240. package/build/keywords.js.map +1 -1
  241. package/build/loadMetadata.cjs +39 -0
  242. package/build/loadMetadata.cjs.map +1 -0
  243. package/build/loadMetadata.d.cts +31 -0
  244. package/build/loadMetadata.d.cts.map +1 -0
  245. package/build/loadMetadata.d.mts +31 -0
  246. package/build/loadMetadata.d.mts.map +1 -0
  247. package/build/loadMetadata.js +32 -39
  248. package/build/loadMetadata.js.map +1 -1
  249. package/build/logger.cjs +28 -0
  250. package/build/logger.cjs.map +1 -0
  251. package/build/logger.d.cts +13 -0
  252. package/build/logger.d.cts.map +1 -0
  253. package/build/logger.d.mts +13 -0
  254. package/build/logger.d.mts.map +1 -0
  255. package/build/logger.js +17 -16
  256. package/build/logger.js.map +1 -1
  257. package/build/scanEntityFiles.cjs +46 -0
  258. package/build/scanEntityFiles.cjs.map +1 -0
  259. package/build/scanEntityFiles.d.cts +8 -0
  260. package/build/scanEntityFiles.d.cts.map +1 -0
  261. package/build/scanEntityFiles.d.mts +8 -0
  262. package/build/scanEntityFiles.d.mts.map +1 -0
  263. package/build/scanEntityFiles.js +37 -42
  264. package/build/scanEntityFiles.js.map +1 -1
  265. package/build/sortForeignKeys.cjs +99 -0
  266. package/build/sortForeignKeys.cjs.map +1 -0
  267. package/build/{sortForeignKeys.d.ts → sortForeignKeys.d.cts} +8 -5
  268. package/build/sortForeignKeys.d.cts.map +1 -0
  269. package/build/sortForeignKeys.d.mts +35 -0
  270. package/build/sortForeignKeys.d.mts.map +1 -0
  271. package/build/sortForeignKeys.js +88 -117
  272. package/build/sortForeignKeys.js.map +1 -1
  273. package/build/symbols.cjs +238 -0
  274. package/build/symbols.cjs.map +1 -0
  275. package/build/symbols.d.cts +120 -0
  276. package/build/symbols.d.cts.map +1 -0
  277. package/build/symbols.d.mts +120 -0
  278. package/build/symbols.d.mts.map +1 -0
  279. package/build/symbols.js +121 -113
  280. package/build/symbols.js.map +1 -1
  281. package/build/tsdoc.cjs +22 -0
  282. package/build/tsdoc.cjs.map +1 -0
  283. package/build/tsdoc.d.cts +15 -0
  284. package/build/tsdoc.d.cts.map +1 -0
  285. package/build/tsdoc.d.mts +15 -0
  286. package/build/tsdoc.d.mts.map +1 -0
  287. package/build/tsdoc.js +18 -15
  288. package/build/tsdoc.js.map +1 -1
  289. package/build/utils.cjs +173 -0
  290. package/build/utils.cjs.map +1 -0
  291. package/build/utils.d.cts +34 -0
  292. package/build/utils.d.cts.map +1 -0
  293. package/build/utils.d.mts +34 -0
  294. package/build/utils.d.mts.map +1 -0
  295. package/build/utils.js +112 -166
  296. package/build/utils.js.map +1 -1
  297. package/build/write-json-schema.cjs +23 -0
  298. package/build/write-json-schema.cjs.map +1 -0
  299. package/build/write-json-schema.d.cts +1 -0
  300. package/build/write-json-schema.d.mts +1 -0
  301. package/build/write-json-schema.js +19 -13
  302. package/build/write-json-schema.js.map +1 -1
  303. package/package.json +37 -17
  304. package/skills/joist-docs/SKILL.md +133 -0
  305. package/skills/joist-em-basics/SKILL.md +114 -0
  306. package/skills/joist-partial-updates/SKILL.md +352 -0
  307. package/skills/joist-reactive-hints/SKILL.md +150 -0
  308. package/skills/joist-test-factories/SKILL.md +397 -0
  309. package/skills/joist-upsert/SKILL.md +95 -0
  310. package/build/EntityDbMetadata.d.ts +0 -269
  311. package/build/EntityDbMetadata.d.ts.map +0 -1
  312. package/build/EntityDbMetadata.test.d.ts +0 -2
  313. package/build/EntityDbMetadata.test.d.ts.map +0 -1
  314. package/build/EntityDbMetadata.test.js +0 -211
  315. package/build/EntityDbMetadata.test.js.map +0 -1
  316. package/build/assignTags.d.ts.map +0 -1
  317. package/build/codemods/Codemod.d.ts +0 -14
  318. package/build/codemods/Codemod.d.ts.map +0 -1
  319. package/build/codemods/Codemod.js.map +0 -1
  320. package/build/codemods/JscodeshiftMod.d.ts +0 -11
  321. package/build/codemods/JscodeshiftMod.d.ts.map +0 -1
  322. package/build/codemods/__tests__/codemod_0001-rename_has_async_property.test.d.ts +0 -2
  323. package/build/codemods/__tests__/codemod_0001-rename_has_async_property.test.d.ts.map +0 -1
  324. package/build/codemods/__tests__/codemod_0001-rename_has_async_property.test.js +0 -9
  325. package/build/codemods/__tests__/codemod_0001-rename_has_async_property.test.js.map +0 -1
  326. package/build/codemods/__tests__/codemod_0002-rename_async_query_fields.test.d.ts +0 -2
  327. package/build/codemods/__tests__/codemod_0002-rename_async_query_fields.test.d.ts.map +0 -1
  328. package/build/codemods/__tests__/codemod_0002-rename_async_query_fields.test.js +0 -9
  329. package/build/codemods/__tests__/codemod_0002-rename_async_query_fields.test.js.map +0 -1
  330. package/build/codemods/__tests__/codemod_0003-rename_find_paginated.test.d.ts +0 -2
  331. package/build/codemods/__tests__/codemod_0003-rename_find_paginated.test.d.ts.map +0 -1
  332. package/build/codemods/__tests__/codemod_0003-rename_find_paginated.test.js +0 -9
  333. package/build/codemods/__tests__/codemod_0003-rename_find_paginated.test.js.map +0 -1
  334. package/build/codemods/codemod_0001-rename_has_async_property.d.ts +0 -7
  335. package/build/codemods/codemod_0001-rename_has_async_property.d.ts.map +0 -1
  336. package/build/codemods/codemod_0002-rename_async_query_fields.d.ts +0 -7
  337. package/build/codemods/codemod_0002-rename_async_query_fields.d.ts.map +0 -1
  338. package/build/codemods/codemod_0003-rename_find_paginated.d.ts +0 -7
  339. package/build/codemods/codemod_0003-rename_find_paginated.d.ts.map +0 -1
  340. package/build/codemods/index.d.ts +0 -9
  341. package/build/codemods/index.d.ts.map +0 -1
  342. package/build/codemods/index.test.d.ts +0 -2
  343. package/build/codemods/index.test.d.ts.map +0 -1
  344. package/build/codemods/index.test.js +0 -24
  345. package/build/codemods/index.test.js.map +0 -1
  346. package/build/config.d.ts +0 -167
  347. package/build/config.d.ts.map +0 -1
  348. package/build/config.test.d.ts +0 -2
  349. package/build/config.test.d.ts.map +0 -1
  350. package/build/config.test.js +0 -78
  351. package/build/config.test.js.map +0 -1
  352. package/build/docs/cache.d.ts +0 -14
  353. package/build/docs/cache.d.ts.map +0 -1
  354. package/build/docs/cache.test.d.ts +0 -2
  355. package/build/docs/cache.test.d.ts.map +0 -1
  356. package/build/docs/cache.test.js +0 -47
  357. package/build/docs/cache.test.js.map +0 -1
  358. package/build/docs/generate-metadata-docs.d.ts +0 -6
  359. package/build/docs/generate-metadata-docs.d.ts.map +0 -1
  360. package/build/docs/index.d.ts +0 -9
  361. package/build/docs/index.d.ts.map +0 -1
  362. package/build/docs/index.test.d.ts +0 -2
  363. package/build/docs/index.test.d.ts.map +0 -1
  364. package/build/docs/index.test.js +0 -100
  365. package/build/docs/index.test.js.map +0 -1
  366. package/build/docs/markdown.d.ts.map +0 -1
  367. package/build/docs/markdown.test.d.ts +0 -2
  368. package/build/docs/markdown.test.d.ts.map +0 -1
  369. package/build/docs/markdown.test.js +0 -280
  370. package/build/docs/markdown.test.js.map +0 -1
  371. package/build/docs/parsing.d.ts +0 -42
  372. package/build/docs/parsing.d.ts.map +0 -1
  373. package/build/docs/parsing.test.d.ts +0 -2
  374. package/build/docs/parsing.test.d.ts.map +0 -1
  375. package/build/docs/parsing.test.js +0 -190
  376. package/build/docs/parsing.test.js.map +0 -1
  377. package/build/findEntityScopes.d.ts +0 -11
  378. package/build/findEntityScopes.d.ts.map +0 -1
  379. package/build/foreignKeyOrdering.d.ts +0 -3
  380. package/build/foreignKeyOrdering.d.ts.map +0 -1
  381. package/build/generate.d.ts +0 -12
  382. package/build/generate.d.ts.map +0 -1
  383. package/build/generateEntitiesFile.d.ts +0 -7
  384. package/build/generateEntitiesFile.d.ts.map +0 -1
  385. package/build/generateEntityCodegenFile.d.ts +0 -11
  386. package/build/generateEntityCodegenFile.d.ts.map +0 -1
  387. package/build/generateEntityFile.d.ts +0 -6
  388. package/build/generateEntityFile.d.ts.map +0 -1
  389. package/build/generateEntityTestFile.d.ts +0 -6
  390. package/build/generateEntityTestFile.d.ts.map +0 -1
  391. package/build/generateEnumFile.d.ts +0 -5
  392. package/build/generateEnumFile.d.ts.map +0 -1
  393. package/build/generateFactoriesFiles.d.ts +0 -4
  394. package/build/generateFactoriesFiles.d.ts.map +0 -1
  395. package/build/generateFlushFunction.d.ts.map +0 -1
  396. package/build/generateMetadataFile.d.ts +0 -5
  397. package/build/generateMetadataFile.d.ts.map +0 -1
  398. package/build/generatePgEnumFile.d.ts +0 -5
  399. package/build/generatePgEnumFile.d.ts.map +0 -1
  400. package/build/index.d.ts +0 -11
  401. package/build/index.d.ts.map +0 -1
  402. package/build/inheritance.d.ts +0 -10
  403. package/build/inheritance.d.ts.map +0 -1
  404. package/build/keywords.d.ts +0 -2
  405. package/build/keywords.d.ts.map +0 -1
  406. package/build/loadMetadata.d.ts +0 -26
  407. package/build/loadMetadata.d.ts.map +0 -1
  408. package/build/logger.d.ts +0 -10
  409. package/build/logger.d.ts.map +0 -1
  410. package/build/scanEntityFiles.d.ts +0 -5
  411. package/build/scanEntityFiles.d.ts.map +0 -1
  412. package/build/sortForeignKeys.d.ts.map +0 -1
  413. package/build/symbols.d.ts +0 -108
  414. package/build/symbols.d.ts.map +0 -1
  415. package/build/tsdoc.d.ts +0 -12
  416. package/build/tsdoc.d.ts.map +0 -1
  417. package/build/utils.d.ts +0 -31
  418. package/build/utils.d.ts.map +0 -1
  419. package/build/write-json-schema.d.ts +0 -2
  420. package/build/write-json-schema.d.ts.map +0 -1
@@ -1,35 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateMetadataFile = generateMetadataFile;
4
- const ts_poet_1 = require("ts-poet");
5
- const symbols_1 = require("./symbols");
6
- const utils_1 = require("./utils");
1
+ import { mapSimpleDbTypeToTypescriptType, q } from "./utils.js";
2
+ import "./config.js";
3
+ import { BigIntSerde, Column, ColumnDescriptors, CustomSerdeAdapter, DateSerde, DecimalToNumberSerde, EntityMetadata, EnumArrayFieldSerde, EnumFieldSerde, JsonSerde, KeySerde, PlainDateSerde, PlainDateTimeSerde, PlainTimeSerde, PolyComponent, PrimitiveSerde, SimpleFieldSerde, SuperstructSerde, ZodSerde, ZonedDateTimeSerde, polymorphicField } from "./symbols.js";
4
+ import "./EntityDbMetadata.js";
5
+ import { code, imp } from "ts-poet";
6
+ //#region src/generateMetadataFile.ts
7
7
  function generateMetadataFile(config, dbMeta, meta) {
8
- const { entity, createdAt, updatedAt, deletedAt } = meta;
9
- const fields = generateFields(config, meta);
10
- Object.values(fields).forEach((code) => code.asOneline());
11
- const maybeBaseType = meta.baseClassName ? `"${meta.baseClassName}"` : undefined;
12
- // We want to put inheritanceType: sti/cti onto base classes as well
13
- const maybeInheritanceType = meta.inheritanceType ? `inheritanceType: "${meta.inheritanceType}",` : "";
14
- const maybeStiColumn = meta.stiDiscriminatorField ? `stiDiscriminatorField: "${meta.stiDiscriminatorField}",` : "";
15
- const maybeStiValue = meta.stiDiscriminatorValue ? `stiDiscriminatorValue: ${meta.stiDiscriminatorValue},` : "";
16
- const maybeCtiAbstract = meta.abstract ? `ctiAbstract: ${meta.abstract},` : "";
17
- // Force subtype `timestampFields` to be `undefined` to ensure all runtime code is reading from the baseMeta values.
18
- // Force subtype `timestampFields` to be `undefined` to ensure all runtime code is reading from the baseMeta values.
19
- const maybeTimestampConfig = meta.baseClassName
20
- ? (0, ts_poet_1.code) `undefined`
21
- : (0, ts_poet_1.code) `
8
+ const { entity, createdAt, updatedAt, deletedAt } = meta;
9
+ const fields = generateFields(config, dbMeta, meta, columnReference);
10
+ Object.values(fields).forEach((code) => code.asOneline());
11
+ const maybeBaseType = meta.baseClassName ? `"${meta.baseClassName}"` : void 0;
12
+ const maybeInheritanceType = meta.inheritanceType ? `inheritanceType: "${meta.inheritanceType}",` : "";
13
+ const maybeStiColumn = meta.stiDiscriminatorField ? `stiDiscriminatorField: "${meta.stiDiscriminatorField}",` : "";
14
+ const maybeStiValue = meta.stiDiscriminatorValue ? `stiDiscriminatorValue: ${meta.stiDiscriminatorValue},` : "";
15
+ const maybeCtiAbstract = meta.abstract ? `ctiAbstract: ${meta.abstract},` : "";
16
+ const maybeTimestampConfig = meta.baseClassName ? code`undefined` : code`
22
17
  {
23
- createdAt: ${(0, utils_1.q)(createdAt?.fieldName)},
24
- updatedAt: ${(0, utils_1.q)(updatedAt?.fieldName)},
25
- deletedAt: ${(0, utils_1.q)(deletedAt?.fieldName)},
18
+ createdAt: ${q(createdAt?.fieldName)},
19
+ updatedAt: ${q(updatedAt?.fieldName)},
20
+ deletedAt: ${q(deletedAt?.fieldName)},
26
21
  }
27
22
  `;
28
- const maybeInsertionOrder = meta.nonDeferredFkOrder !== 0 ? `nonDeferredFkOrder: ${meta.nonDeferredFkOrder},` : ``;
29
- const uniqueBy = getUniqueBy(config, meta);
30
- const maybeUniqueBy = uniqueBy.length > 0 ? (0, ts_poet_1.code) `uniqueBy: ${JSON.stringify(uniqueBy)},` : (0, ts_poet_1.code) ``;
31
- return (0, ts_poet_1.code) `
32
- export const ${entity.metaName}: ${symbols_1.EntityMetadata}<${entity.name}> = {
23
+ const maybeInsertionOrder = meta.nonDeferredFkOrder !== 0 ? `nonDeferredFkOrder: ${meta.nonDeferredFkOrder},` : ``;
24
+ const uniqueBy = getUniqueBy(config, meta);
25
+ const maybeUniqueBy = uniqueBy.length > 0 ? code`uniqueBy: ${JSON.stringify(uniqueBy)},` : code``;
26
+ return code`
27
+ export const ${entity.metaName}: ${EntityMetadata}<${entity.name}> = {
33
28
  cstr: ${entity.typeForMetadataFile},
34
29
  type: "${entity.name}",
35
30
  baseType: ${maybeBaseType}, ${maybeInheritanceType} ${maybeStiColumn} ${maybeStiValue} ${maybeCtiAbstract}
@@ -37,12 +32,14 @@ function generateMetadataFile(config, dbMeta, meta) {
37
32
  idDbType: "${meta.primaryKey.columnType}",
38
33
  tagName: "${meta.tagName}",
39
34
  tableName: "${meta.tableName}",
35
+ supportsEmExecute: ${!meta.inheritanceType && meta.supportsEmExecute === true},
40
36
  fields: ${fields},
37
+ columns: ${meta.primaryKey.columnOwner.metaName}Columns,
41
38
  allFields: {},
42
- orderBy: ${(0, utils_1.q)(config.entities[meta.name]?.orderBy)},
39
+ orderBy: ${q(config.entities[meta.name]?.orderBy)},
43
40
  timestampFields: ${maybeTimestampConfig},
44
41
  config: ${entity.configConst},
45
- factory: ${(0, ts_poet_1.imp)(`new${entity.name}@./entities.ts`)},
42
+ factory: ${imp(`new${entity.name}@./entities.ts`)},
46
43
  baseTypes: [],
47
44
  subTypes: [], ${maybeInsertionOrder} ${maybeUniqueBy}
48
45
  };
@@ -52,72 +49,49 @@ function generateMetadataFile(config, dbMeta, meta) {
52
49
  }
53
50
  /** Returns configured identities plus conservative database-backed unique identities. */
54
51
  function getUniqueBy(config, meta) {
55
- const uniqueBy = config.entities[meta.name]?.uniqueBy ?? [];
56
- const seen = new Set();
57
- return [...uniqueBy, ...(meta.uniqueConstraints ?? [])].filter((fields) => {
58
- const key = fields.join("\u0000");
59
- if (seen.has(key))
60
- return false;
61
- seen.add(key);
62
- return true;
63
- });
52
+ const uniqueBy = config.entities[meta.name]?.uniqueBy ?? [];
53
+ const seen = /* @__PURE__ */ new Set();
54
+ return [...uniqueBy, ...meta.uniqueConstraints ?? []].filter((fields) => {
55
+ const key = fields.join("\0");
56
+ if (seen.has(key)) return false;
57
+ seen.add(key);
58
+ return true;
59
+ });
64
60
  }
65
- function generateFields(config, dbMetadata) {
66
- const fields = {};
67
- fields["id"] = (0, ts_poet_1.code) `
61
+ /** Emits fields that bind the already-declared physical columns. */
62
+ function generateFields(config, dbMeta, dbMetadata, columnRef) {
63
+ const fields = {};
64
+ fields["id"] = code`
68
65
  {
69
66
  kind: "primaryKey",
70
67
  fieldName: "id",
71
68
  fieldIdName: undefined,
72
69
  required: true,
73
- serde: new ${symbols_1.KeySerde}("${dbMetadata.tagName}", "id", "id", "${dbMetadata.primaryKey.columnType}"),
70
+ serde: new ${SimpleFieldSerde}("id", ${columnRef(dbMetadata.primaryKey, code`new ${KeySerde}("${dbMetadata.tagName}", "${dbMetadata.primaryKey.columnType}")`, columnArgs(dbMetadata.primaryKey, dbMetadata, code`() => ${dbMetadata.entity.metaName}`))}),
74
71
  immutable: true,
75
72
  }
76
73
  `;
77
- dbMetadata.primitives.forEach((p) => {
78
- const { fieldName, derived, columnName, columnType, fieldType, superstruct, zodSchema, customSerde, isArray } = p;
79
- let serde;
80
- if (customSerde) {
81
- serde = (0, ts_poet_1.code) `new ${symbols_1.CustomSerdeAdapter}("${fieldName}", "${columnName}", "${columnType}", ${customSerde})`;
82
- }
83
- else if (superstruct) {
84
- serde = (0, ts_poet_1.code) `new ${symbols_1.SuperstructSerde}("${fieldName}", "${columnName}", ${superstruct})`;
85
- }
86
- else if (zodSchema) {
87
- serde = (0, ts_poet_1.code) `new ${symbols_1.ZodSerde}("${fieldName}", "${columnName}", ${zodSchema})`;
88
- }
89
- else if (columnType === "numeric") {
90
- serde = (0, ts_poet_1.code) `new ${symbols_1.DecimalToNumberSerde}("${fieldName}", "${columnName}")`;
91
- }
92
- else if (columnType === "jsonb") {
93
- serde = (0, ts_poet_1.code) `new ${symbols_1.JsonSerde}("${fieldName}", "${columnName}")`;
94
- }
95
- else if (fieldType === "bigint") {
96
- serde = (0, ts_poet_1.code) `new ${symbols_1.BigIntSerde}("${fieldName}", "${columnName}")`;
97
- }
98
- else {
99
- let serdeType;
100
- if (columnType === "date") {
101
- serdeType = config.temporal ? symbols_1.PlainDateSerde : symbols_1.DateSerde;
102
- }
103
- else if (columnType === "timestamp without time zone") {
104
- serdeType = config.temporal ? symbols_1.PlainDateTimeSerde : symbols_1.DateSerde;
105
- }
106
- else if (columnType === "timestamp with time zone") {
107
- serdeType = config.temporal ? symbols_1.ZonedDateTimeSerde : symbols_1.DateSerde;
108
- }
109
- else if (columnType === "time without time zone") {
110
- serdeType = config.temporal ? symbols_1.PlainTimeSerde : symbols_1.PrimitiveSerde;
111
- }
112
- else {
113
- serdeType = symbols_1.PrimitiveSerde;
114
- }
115
- serde = isArray
116
- ? (0, ts_poet_1.code) `new ${serdeType}("${fieldName}", "${columnName}", "${columnType}[]", true, ${!p.notNull})`
117
- : (0, ts_poet_1.code) `new ${serdeType}("${fieldName}", "${columnName}", "${columnType}")`;
118
- }
119
- const extras = columnType === "citext" ? (0, ts_poet_1.code) `citext: true,` : "";
120
- fields[fieldName] = (0, ts_poet_1.code) `
74
+ dbMetadata.primitives.forEach((p) => {
75
+ const { fieldName, derived, columnType, superstruct, zodSchema, customSerde, isArray } = p;
76
+ const column = columnArgs(p, dbMetadata);
77
+ let serde;
78
+ if (customSerde) serde = isArray ? code`new ${CustomSerdeAdapter}( "${columnType}[]", ${customSerde}, true)` : code`new ${CustomSerdeAdapter}( "${columnType}", ${customSerde})`;
79
+ else if (superstruct) serde = code`new ${SuperstructSerde}( ${superstruct})`;
80
+ else if (zodSchema) serde = code`new ${ZodSerde}( ${zodSchema})`;
81
+ else if (columnType === "numeric" || columnType === "decimal") serde = isArray ? code`new ${DecimalToNumberSerde}(true)` : code`new ${DecimalToNumberSerde}()`;
82
+ else if (columnType === "jsonb") serde = code`new ${JsonSerde}()`;
83
+ else if (p.rawFieldType === "bigint") serde = isArray ? code`new ${BigIntSerde}(true)` : code`new ${BigIntSerde}()`;
84
+ else {
85
+ let serdeType;
86
+ if (columnType === "date") serdeType = config.temporal ? PlainDateSerde : DateSerde;
87
+ else if (columnType === "timestamp without time zone") serdeType = config.temporal ? PlainDateTimeSerde : DateSerde;
88
+ else if (columnType === "timestamp with time zone") serdeType = config.temporal ? ZonedDateTimeSerde : DateSerde;
89
+ else if (columnType === "time without time zone") serdeType = config.temporal ? PlainTimeSerde : PrimitiveSerde;
90
+ else serdeType = PrimitiveSerde;
91
+ serde = isArray ? code`new ${serdeType}( "${columnType}[]", true)` : code`new ${serdeType}( "${columnType}")`;
92
+ }
93
+ const extras = columnType === "citext" ? code`citext: true,` : "";
94
+ fields[fieldName] = code`
121
95
  {
122
96
  kind: "primitive",
123
97
  fieldName: "${fieldName}",
@@ -126,17 +100,17 @@ function generateFields(config, dbMetadata) {
126
100
  required: ${!derived && p.notNull},
127
101
  protected: ${p.protected},
128
102
  type: ${typeof p.rawFieldType === "string" ? `"${p.rawFieldType}"` : p.rawFieldType},
129
- serde: ${serde},
103
+ serde: new ${SimpleFieldSerde}("${fieldName}", ${columnRef(p, serde, column)}),
130
104
  immutable: false,
105
+ ${p.lazy ? code`lazy: true,` : ""}
131
106
  ${extras}
132
107
  ${maybeDefault(p)}
133
108
  ${maybeSanitize(config, p)}
134
109
  }`;
135
- });
136
- // Treat native enums as primitives
137
- dbMetadata.pgEnums.forEach((p) => {
138
- const { columnName, fieldName, notNull, dbType } = p;
139
- fields[fieldName] = (0, ts_poet_1.code) `
110
+ });
111
+ dbMetadata.pgEnums.forEach((p) => {
112
+ const { fieldName, notNull, dbType } = p;
113
+ fields[fieldName] = code`
140
114
  {
141
115
  kind: "primitive",
142
116
  fieldName: "${fieldName}",
@@ -145,17 +119,16 @@ function generateFields(config, dbMetadata) {
145
119
  required: ${notNull},
146
120
  protected: false,
147
121
  type: "string",
148
- serde: new ${symbols_1.PrimitiveSerde}("${fieldName}", "${columnName}", "${dbType}"),
122
+ serde: new ${SimpleFieldSerde}("${fieldName}", ${columnRef(p, code`new ${PrimitiveSerde}("${dbType}")`, columnArgs(p, dbMetadata))}),
149
123
  immutable: false,
150
124
  ${maybeDefault(p)}
151
125
  }`;
152
- });
153
- dbMetadata.enums.forEach((field) => {
154
- const { fieldName, enumDetailType, notNull, isArray, columnName, columnType, derived } = field;
155
- const serdeType = isArray ? symbols_1.EnumArrayFieldSerde : symbols_1.EnumFieldSerde;
156
- const columnTypeWithArray = `${columnType}${isArray ? "[]" : ""}`;
157
- const maybeIsNullable = isArray ? `, ${!notNull}` : "";
158
- fields[fieldName] = (0, ts_poet_1.code) `
126
+ });
127
+ dbMetadata.enums.forEach((field) => {
128
+ const { fieldName, enumDetailType, notNull, isArray, columnType, derived } = field;
129
+ const serdeType = isArray ? EnumArrayFieldSerde : EnumFieldSerde;
130
+ const columnTypeWithArray = `${columnType}${isArray ? "[]" : ""}`;
131
+ fields[fieldName] = code`
159
132
  {
160
133
  kind: "enum",
161
134
  fieldName: "${fieldName}",
@@ -163,33 +136,34 @@ function generateFields(config, dbMetadata) {
163
136
  required: ${notNull},
164
137
  derived: ${!derived ? false : `"${derived}"`},
165
138
  enumDetailType: ${enumDetailType},
166
- serde: new ${serdeType}("${fieldName}", "${columnName}", "${columnTypeWithArray}"${maybeIsNullable}, ${enumDetailType}),
139
+ serde: new ${SimpleFieldSerde}("${fieldName}", ${columnRef(field, code`new ${serdeType}("${columnTypeWithArray}", ${enumDetailType})`, columnArgs(field, dbMetadata))}),
167
140
  immutable: false,
168
141
  ${maybeDefault(field)}
169
142
  }
170
143
  `;
171
- });
172
- dbMetadata.manyToOnes.forEach((m2o) => {
173
- const { fieldName, columnName, notNull, otherEntity, otherFieldName, derived, dbType } = m2o;
174
- const otherTagName = config.entities[otherEntity.name].tag;
175
- fields[fieldName] = (0, ts_poet_1.code) `
144
+ });
145
+ dbMetadata.manyToOnes.forEach((m2o) => {
146
+ const { fieldName, columnName, notNull, otherEntity, otherFieldName, derived, dbType } = m2o;
147
+ const otherTagName = config.entities[otherEntity.name].tag;
148
+ const otherMetadata = (dbMetadata.physicalMetadata ?? dbMetadata).manyToOnes.find((field) => field.columnName === columnName)?.otherEntity.name === otherEntity.name ? code`${columnRef(m2o)}.idMetadata!` : code`() => ${otherEntity.metaName}`;
149
+ fields[fieldName] = code`
176
150
  {
177
151
  kind: "m2o",
178
152
  fieldName: "${fieldName}",
179
153
  fieldIdName: "${fieldName}Id",
180
154
  derived: ${!derived ? false : `"${derived}"`},
181
155
  required: ${notNull},
182
- otherMetadata: () => ${otherEntity.metaName},
156
+ otherMetadata: ${otherMetadata},
183
157
  otherFieldName: "${otherFieldName}",
184
- serde: new ${symbols_1.KeySerde}("${otherTagName}", "${fieldName}", "${columnName}", "${dbType}"),
158
+ serde: new ${SimpleFieldSerde}("${fieldName}", ${columnRef(m2o, code`new ${KeySerde}("${otherTagName}", "${dbType}")`, columnArgs(m2o, dbMetadata, code`() => ${otherEntity.metaName}`))}),
185
159
  immutable: false,
186
160
  ${maybeDefault(m2o)}
187
161
  }
188
162
  `;
189
- });
190
- dbMetadata.oneToManys.forEach((o2m) => {
191
- const { fieldName, singularName, otherEntity, otherFieldName, otherColumnName } = o2m;
192
- fields[fieldName] = (0, ts_poet_1.code) `
163
+ });
164
+ dbMetadata.oneToManys.forEach((o2m) => {
165
+ const { fieldName, singularName, otherEntity, otherFieldName, otherColumnName } = o2m;
166
+ fields[fieldName] = code`
193
167
  {
194
168
  kind: "o2m",
195
169
  fieldName: "${fieldName}",
@@ -201,12 +175,13 @@ function generateFields(config, dbMetadata) {
201
175
  serde: undefined,
202
176
  immutable: false,
203
177
  ${maybeOrderBy(o2m)}
178
+ ${maybeSoftDeletes(o2m)}
204
179
  }
205
180
  `;
206
- });
207
- dbMetadata.largeOneToManys.forEach((o2m) => {
208
- const { fieldName, singularName, otherEntity, otherFieldName, otherColumnName } = o2m;
209
- fields[fieldName] = (0, ts_poet_1.code) `
181
+ });
182
+ dbMetadata.largeOneToManys.forEach((o2m) => {
183
+ const { fieldName, singularName, otherEntity, otherFieldName, otherColumnName } = o2m;
184
+ fields[fieldName] = code`
210
185
  {
211
186
  kind: "lo2m",
212
187
  fieldName: "${fieldName}",
@@ -219,10 +194,10 @@ function generateFields(config, dbMetadata) {
219
194
  immutable: false,
220
195
  }
221
196
  `;
222
- });
223
- dbMetadata.manyToManys.forEach((m2m) => {
224
- const { fieldName, singularName, otherEntity, otherFieldName, derived } = m2m;
225
- fields[fieldName] = (0, ts_poet_1.code) `
197
+ });
198
+ dbMetadata.manyToManys.forEach((m2m) => {
199
+ const { fieldName, singularName, otherEntity, otherFieldName, derived } = m2m;
200
+ fields[fieldName] = code`
226
201
  {
227
202
  kind: "m2m",
228
203
  fieldName: "${fieldName}",
@@ -236,12 +211,13 @@ function generateFields(config, dbMetadata) {
236
211
  joinTableName: "${m2m.joinTableName}",
237
212
  columnNames: ["${m2m.columnName}", "${m2m.otherColumnName}"],
238
213
  hasJoinTableId: ${m2m.hasJoinTableId},
214
+ ${maybeSoftDeletes(m2m)}
239
215
  }
240
216
  `;
241
- });
242
- dbMetadata.manyToManyEnums.forEach((m2m) => {
243
- const { fieldName, enumDetailType } = m2m;
244
- fields[fieldName] = (0, ts_poet_1.code) `
217
+ });
218
+ dbMetadata.manyToManyEnums.forEach((m2m) => {
219
+ const { fieldName, enumDetailType } = m2m;
220
+ fields[fieldName] = code`
245
221
  {
246
222
  kind: "m2mEnum",
247
223
  fieldName: "${fieldName}",
@@ -256,10 +232,10 @@ function generateFields(config, dbMetadata) {
256
232
  hasJoinTableId: ${m2m.hasJoinTableId},
257
233
  }
258
234
  `;
259
- });
260
- dbMetadata.oneToOnes.forEach((o2o) => {
261
- const { fieldName, otherEntity, otherFieldName, otherColumnName } = o2o;
262
- fields[fieldName] = (0, ts_poet_1.code) `
235
+ });
236
+ dbMetadata.oneToOnes.forEach((o2o) => {
237
+ const { fieldName, otherEntity, otherFieldName, otherColumnName } = o2o;
238
+ fields[fieldName] = code`
263
239
  {
264
240
  kind: "o2o",
265
241
  fieldName: "${fieldName}",
@@ -272,42 +248,58 @@ function generateFields(config, dbMetadata) {
272
248
  immutable: false,
273
249
  }
274
250
  `;
275
- });
276
- dbMetadata.polymorphics.forEach((p) => {
277
- const { fieldName, notNull, components } = p;
278
- fields[fieldName] = (0, ts_poet_1.code) `
279
- {
280
- kind: "poly",
281
- fieldName: "${fieldName}",
282
- fieldIdName: "${fieldName}Id",
283
- required: ${notNull},
284
- components: [${components.map(({ otherFieldName, otherEntity, columnName }) => (0, ts_poet_1.code) `
285
- {
286
- otherMetadata: () => ${otherEntity.metaName},
287
- otherFieldName: "${otherFieldName}",
288
- columnName: "${columnName}",
289
- },`)}],
290
- serde: new ${symbols_1.PolymorphicKeySerde}(() => ${dbMetadata.entity.metaName}, "${fieldName}"),
291
- immutable: false,
292
- }
251
+ });
252
+ dbMetadata.polymorphics.forEach((p) => {
253
+ const { fieldName, notNull, components } = p;
254
+ components.forEach((component) => columnRef(component, code`new ${KeySerde}("${config.entities[component.otherEntity.name].tag}", "${dbMeta.entitiesByName[component.otherEntity.name].primaryKey.columnType}")`, code`true, false, false, false, false, () => ${component.otherEntity.metaName}`));
255
+ fields[fieldName] = code`
256
+ ${polymorphicField}("${fieldName}", ${notNull}, [${components.map((component) => {
257
+ const owner = dbMeta.entitiesByName[component.columnOwner.name];
258
+ const target = (owner.physicalMetadata ?? owner).polymorphics.flatMap((field) => field.components).find((c) => c.columnName === component.columnName).otherEntity.name === component.otherEntity.name ? "" : code`, () => ${component.otherEntity.metaName}`;
259
+ return code`new ${PolyComponent}(${columnRef(component)}, ${q(component.otherFieldName)}${target}),`;
260
+ })}])
293
261
  `;
294
- });
295
- return fields;
262
+ });
263
+ return fields;
264
+ }
265
+ /** Emits constructor arguments using codegen's existing column facts. */
266
+ function columnArgs(column, meta, idMetadata) {
267
+ const insertOptional = column === meta.createdAt || column === meta.updatedAt;
268
+ return code`${!column.columnNotNull}, ${column.columnDefault != null && !column.columnGenerated}, ${column.columnGenerated}, ${insertOptional}, true, ${idMetadata ?? "undefined"}`;
269
+ }
270
+ /** Declares all physical codecs before any domain metadata; ID targets remain lazy. */
271
+ function generateColumnDeclarations(config, dbMeta, meta) {
272
+ if (meta.inheritanceType === "sti" && meta.baseClassName) return code``;
273
+ const columns = {};
274
+ generateFields(config, dbMeta, meta.physicalMetadata ?? meta, (column, codec, args) => {
275
+ const name = column.columnName;
276
+ if (codec) columns[name] = code`new ${Column}(${q(name)}, ${args}, ${codec})`.asOneline();
277
+ return code`${meta.entity.metaName}Columns[${q(name)}]`;
278
+ });
279
+ return code`const ${meta.entity.metaName}Columns = ${columns} satisfies ${ColumnDescriptors};`;
280
+ }
281
+ /** Emits a direct reference to the single physical descriptor. */
282
+ function columnReference(column) {
283
+ return code`${column.columnOwner.metaName}Columns[${q(column.columnName)}]`;
296
284
  }
297
285
  function maybeDefault(f) {
298
- return f.hasConfigDefault ? (0, ts_poet_1.code) `default: "config",` : f.columnDefault ? (0, ts_poet_1.code) `default: "schema",` : "";
286
+ return f.hasConfigDefault ? code`default: "config",` : f.columnDefault != null ? code`default: "schema",` : "";
299
287
  }
300
288
  function maybeOrderBy(f) {
301
- return f.orderBy ? (0, ts_poet_1.code) `orderBy: { field: "${f.orderBy.field}", direction: "${f.orderBy.direction}" },` : "";
289
+ return f.orderBy ? code`orderBy: { field: "${f.orderBy.field}", direction: "${f.orderBy.direction}" },` : "";
290
+ }
291
+ /** Emits the `softDeletes` config, i.e. `softDeletes: "include",`, for relations that opt out of hiding soft-deletes. */
292
+ function maybeSoftDeletes(f) {
293
+ return f.softDeletes ? code`softDeletes: "${f.softDeletes}",` : "";
302
294
  }
303
295
  /** We sanitize/cleanStringValue all varchars, unless opted out by the column default/arrays/custom serdes. */
304
296
  function maybeSanitize(config, f) {
305
- // Only strings need to maybe turn off their cleanStringValue sanitization, if the default="" or its an array
306
- return isString(config, f.columnType) && (f.columnDefault === "''" || f.isArray || f.customSerde)
307
- ? (0, ts_poet_1.code) `sanitize: false,`
308
- : "";
297
+ return isString(config, f.columnType) && (f.columnDefault === "''" || f.isArray || f.customSerde) ? code`sanitize: false,` : "";
309
298
  }
310
299
  function isString(config, columnType) {
311
- return (0, utils_1.mapSimpleDbTypeToTypescriptType)(config, columnType) === "string";
300
+ return mapSimpleDbTypeToTypescriptType(config, columnType) === "string";
312
301
  }
302
+ //#endregion
303
+ export { generateColumnDeclarations, generateMetadataFile };
304
+
313
305
  //# sourceMappingURL=generateMetadataFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateMetadataFile.js","sourceRoot":"","sources":["../src/generateMetadataFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateMetadataFile.js","names":[],"sources":["../src/generateMetadataFile.ts"],"sourcesContent":["import { type Code, type Import, code, imp } from \"ts-poet\";\n\nimport { type Config } from \"./config.ts\";\nimport {\n type DatabaseColumnType,\n type DbMetadata,\n type EntityDbMetadata,\n type OneToManyField,\n type PrimitiveField,\n} from \"./EntityDbMetadata.ts\";\nimport {\n BigIntSerde,\n Column,\n ColumnDescriptors,\n CustomSerdeAdapter,\n DateSerde,\n DecimalToNumberSerde,\n EntityMetadata,\n EnumArrayFieldSerde,\n EnumFieldSerde,\n JsonSerde,\n KeySerde,\n PlainDateSerde,\n PlainDateTimeSerde,\n PlainTimeSerde,\n PolyComponent,\n PrimitiveSerde,\n SimpleFieldSerde,\n SuperstructSerde,\n ZodSerde,\n ZonedDateTimeSerde,\n polymorphicField,\n} from \"./symbols.ts\";\nimport { mapSimpleDbTypeToTypescriptType, q } from \"./utils.ts\";\n\nexport function generateMetadataFile(config: Config, dbMeta: DbMetadata, meta: EntityDbMetadata): Code {\n const { entity, createdAt, updatedAt, deletedAt } = meta;\n\n const fields = generateFields(config, dbMeta, meta, columnReference);\n\n Object.values(fields).forEach((code) => code.asOneline());\n\n const maybeBaseType = meta.baseClassName ? `\"${meta.baseClassName}\"` : undefined;\n // We want to put inheritanceType: sti/cti onto base classes as well\n const maybeInheritanceType = meta.inheritanceType ? `inheritanceType: \"${meta.inheritanceType}\",` : \"\";\n const maybeStiColumn = meta.stiDiscriminatorField ? `stiDiscriminatorField: \"${meta.stiDiscriminatorField}\",` : \"\";\n const maybeStiValue = meta.stiDiscriminatorValue ? `stiDiscriminatorValue: ${meta.stiDiscriminatorValue},` : \"\";\n const maybeCtiAbstract = meta.abstract ? `ctiAbstract: ${meta.abstract},` : \"\";\n // Force subtype `timestampFields` to be `undefined` to ensure all runtime code is reading from the baseMeta values.\n // Force subtype `timestampFields` to be `undefined` to ensure all runtime code is reading from the baseMeta values.\n const maybeTimestampConfig = meta.baseClassName\n ? code`undefined`\n : code`\n {\n createdAt: ${q(createdAt?.fieldName)},\n updatedAt: ${q(updatedAt?.fieldName)},\n deletedAt: ${q(deletedAt?.fieldName)},\n }\n `;\n const maybeInsertionOrder = meta.nonDeferredFkOrder !== 0 ? `nonDeferredFkOrder: ${meta.nonDeferredFkOrder},` : ``;\n const uniqueBy = getUniqueBy(config, meta);\n const maybeUniqueBy = uniqueBy.length > 0 ? code`uniqueBy: ${JSON.stringify(uniqueBy)},` : code``;\n\n return code`\n export const ${entity.metaName}: ${EntityMetadata}<${entity.name}> = {\n cstr: ${entity.typeForMetadataFile},\n type: \"${entity.name}\",\n baseType: ${maybeBaseType}, ${maybeInheritanceType} ${maybeStiColumn} ${maybeStiValue} ${maybeCtiAbstract}\n idType: \"${config.idType ?? \"tagged-string\"}\",\n idDbType: \"${meta.primaryKey.columnType}\",\n tagName: \"${meta.tagName}\",\n tableName: \"${meta.tableName}\",\n supportsEmExecute: ${!meta.inheritanceType && meta.supportsEmExecute === true},\n fields: ${fields},\n columns: ${meta.primaryKey.columnOwner.metaName}Columns,\n allFields: {},\n orderBy: ${q(config.entities[meta.name]?.orderBy)},\n timestampFields: ${maybeTimestampConfig},\n config: ${entity.configConst},\n factory: ${imp(`new${entity.name}@./entities.ts`)},\n baseTypes: [],\n subTypes: [], ${maybeInsertionOrder} ${maybeUniqueBy}\n };\n\n (${entity.typeForMetadataFile} as any).metadata = ${entity.metaName};\n `;\n}\n\n/** Returns configured identities plus conservative database-backed unique identities. */\nfunction getUniqueBy(config: Config, meta: EntityDbMetadata): string[][] {\n const uniqueBy = config.entities[meta.name]?.uniqueBy ?? [];\n const seen = new Set<string>();\n return [...uniqueBy, ...(meta.uniqueConstraints ?? [])].filter((fields) => {\n const key = fields.join(\"\\u0000\");\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\n/** Emits fields that bind the already-declared physical columns. */\nfunction generateFields(\n config: Config,\n dbMeta: DbMetadata,\n dbMetadata: EntityDbMetadata,\n columnRef: (column: Pick<PrimitiveField, \"columnName\" | \"columnOwner\">, codec?: Code, args?: Code) => Code,\n): Record<string, Code> {\n const fields: Record<string, Code> = {};\n\n fields[\"id\"] = code`\n {\n kind: \"primaryKey\",\n fieldName: \"id\",\n fieldIdName: undefined,\n required: true,\n serde: new ${SimpleFieldSerde}(\"id\", ${columnRef(dbMetadata.primaryKey, code`new ${KeySerde}(\"${dbMetadata.tagName}\", \"${dbMetadata.primaryKey.columnType}\")`, columnArgs(dbMetadata.primaryKey, dbMetadata, code`() => ${dbMetadata.entity.metaName}`))}),\n immutable: true,\n }\n `;\n\n dbMetadata.primitives.forEach((p) => {\n const { fieldName, derived, columnType, superstruct, zodSchema, customSerde, isArray } = p;\n const column = columnArgs(p, dbMetadata);\n let serde: Code;\n if (customSerde) {\n serde = isArray\n ? code`new ${CustomSerdeAdapter}( \"${columnType}[]\", ${customSerde}, true)`\n : code`new ${CustomSerdeAdapter}( \"${columnType}\", ${customSerde})`;\n } else if (superstruct) {\n serde = code`new ${SuperstructSerde}( ${superstruct})`;\n } else if (zodSchema) {\n serde = code`new ${ZodSerde}( ${zodSchema})`;\n } else if (columnType === \"numeric\" || columnType === \"decimal\") {\n serde = isArray ? code`new ${DecimalToNumberSerde}(true)` : code`new ${DecimalToNumberSerde}()`;\n } else if (columnType === \"jsonb\") {\n serde = code`new ${JsonSerde}()`;\n } else if (p.rawFieldType === \"bigint\") {\n serde = isArray ? code`new ${BigIntSerde}(true)` : code`new ${BigIntSerde}()`;\n } else {\n let serdeType: Import;\n if (columnType === \"date\") {\n serdeType = config.temporal ? PlainDateSerde : DateSerde;\n } else if (columnType === \"timestamp without time zone\") {\n serdeType = config.temporal ? PlainDateTimeSerde : DateSerde;\n } else if (columnType === \"timestamp with time zone\") {\n serdeType = config.temporal ? ZonedDateTimeSerde : DateSerde;\n } else if (columnType === \"time without time zone\") {\n serdeType = config.temporal ? PlainTimeSerde : PrimitiveSerde;\n } else {\n serdeType = PrimitiveSerde;\n }\n serde = isArray ? code`new ${serdeType}( \"${columnType}[]\", true)` : code`new ${serdeType}( \"${columnType}\")`;\n }\n const extras = columnType === \"citext\" ? code`citext: true,` : \"\";\n fields[fieldName] = code`\n {\n kind: \"primitive\",\n fieldName: \"${fieldName}\",\n fieldIdName: undefined,\n derived: ${!derived ? false : `\"${derived}\"`},\n required: ${!derived && p.notNull},\n protected: ${p.protected},\n type: ${typeof p.rawFieldType === \"string\" ? `\"${p.rawFieldType}\"` : p.rawFieldType},\n serde: new ${SimpleFieldSerde}(\"${fieldName}\", ${columnRef(p, serde, column)}),\n immutable: false,\n ${p.lazy ? code`lazy: true,` : \"\"}\n ${extras}\n ${maybeDefault(p)}\n ${maybeSanitize(config, p)}\n }`;\n });\n\n // Treat native enums as primitives\n dbMetadata.pgEnums.forEach((p) => {\n const { fieldName, notNull, dbType } = p;\n fields[fieldName] = code`\n {\n kind: \"primitive\",\n fieldName: \"${fieldName}\",\n fieldIdName: undefined,\n derived: false,\n required: ${notNull},\n protected: false,\n type: \"string\",\n serde: new ${SimpleFieldSerde}(\"${fieldName}\", ${columnRef(p, code`new ${PrimitiveSerde}(\"${dbType}\")`, columnArgs(p, dbMetadata))}),\n immutable: false,\n ${maybeDefault(p)}\n }`;\n });\n\n dbMetadata.enums.forEach((field) => {\n const { fieldName, enumDetailType, notNull, isArray, columnType, derived } = field;\n const serdeType = isArray ? EnumArrayFieldSerde : EnumFieldSerde;\n const columnTypeWithArray = `${columnType}${isArray ? \"[]\" : \"\"}`;\n fields[fieldName] = code`\n {\n kind: \"enum\",\n fieldName: \"${fieldName}\",\n fieldIdName: undefined,\n required: ${notNull},\n derived: ${!derived ? false : `\"${derived}\"`},\n enumDetailType: ${enumDetailType},\n serde: new ${SimpleFieldSerde}(\"${fieldName}\", ${columnRef(field, code`new ${serdeType}(\"${columnTypeWithArray}\", ${enumDetailType})`, columnArgs(field, dbMetadata))}),\n immutable: false,\n ${maybeDefault(field)}\n }\n `;\n });\n\n dbMetadata.manyToOnes.forEach((m2o) => {\n const { fieldName, columnName, notNull, otherEntity, otherFieldName, derived, dbType } = m2o;\n const otherTagName = config.entities[otherEntity.name].tag;\n const physical = (dbMetadata.physicalMetadata ?? dbMetadata).manyToOnes.find(\n (field) => field.columnName === columnName,\n );\n const otherMetadata =\n physical?.otherEntity.name === otherEntity.name\n ? code`${columnRef(m2o)}.idMetadata!`\n : code`() => ${otherEntity.metaName}`;\n fields[fieldName] = code`\n {\n kind: \"m2o\",\n fieldName: \"${fieldName}\",\n fieldIdName: \"${fieldName}Id\",\n derived: ${!derived ? false : `\"${derived}\"`},\n required: ${notNull},\n otherMetadata: ${otherMetadata},\n otherFieldName: \"${otherFieldName}\",\n serde: new ${SimpleFieldSerde}(\"${fieldName}\", ${columnRef(m2o, code`new ${KeySerde}(\"${otherTagName}\", \"${dbType}\")`, columnArgs(m2o, dbMetadata, code`() => ${otherEntity.metaName}`))}),\n immutable: false,\n ${maybeDefault(m2o)}\n }\n `;\n });\n\n dbMetadata.oneToManys.forEach((o2m) => {\n const { fieldName, singularName, otherEntity, otherFieldName, otherColumnName } = o2m;\n fields[fieldName] = code`\n {\n kind: \"o2m\",\n fieldName: \"${fieldName}\",\n fieldIdName: \"${singularName}Ids\",\n required: false,\n otherMetadata: () => ${otherEntity.metaName},\n otherFieldName: \"${otherFieldName}\",\n otherColumnName: \"${otherColumnName}\",\n serde: undefined,\n immutable: false,\n ${maybeOrderBy(o2m)}\n ${maybeSoftDeletes(o2m)}\n }\n `;\n });\n\n dbMetadata.largeOneToManys.forEach((o2m) => {\n const { fieldName, singularName, otherEntity, otherFieldName, otherColumnName } = o2m;\n fields[fieldName] = code`\n {\n kind: \"lo2m\",\n fieldName: \"${fieldName}\",\n fieldIdName: \"${singularName}Ids\",\n required: false,\n otherMetadata: () => ${otherEntity.metaName},\n otherFieldName: \"${otherFieldName}\",\n otherColumnName: \"${otherColumnName}\",\n serde: undefined,\n immutable: false,\n }\n `;\n });\n\n dbMetadata.manyToManys.forEach((m2m) => {\n const { fieldName, singularName, otherEntity, otherFieldName, derived } = m2m;\n fields[fieldName] = code`\n {\n kind: \"m2m\",\n fieldName: \"${fieldName}\",\n fieldIdName: \"${singularName}Ids\",\n required: false,\n derived: ${derived === \"async\" ? `\"async\"` : derived === \"otherSide\" ? `\"otherSide\"` : \"false\"},\n otherMetadata: () => ${otherEntity.metaName},\n otherFieldName: \"${otherFieldName}\",\n serde: undefined,\n immutable: false,\n joinTableName: \"${m2m.joinTableName}\",\n columnNames: [\"${m2m.columnName}\", \"${m2m.otherColumnName}\"],\n hasJoinTableId: ${m2m.hasJoinTableId},\n ${maybeSoftDeletes(m2m)}\n }\n `;\n });\n\n dbMetadata.manyToManyEnums.forEach((m2m) => {\n const { fieldName, enumDetailType } = m2m;\n fields[fieldName] = code`\n {\n kind: \"m2mEnum\",\n fieldName: \"${fieldName}\",\n fieldIdName: undefined,\n required: false,\n derived: false,\n enumDetailType: ${enumDetailType},\n serde: undefined,\n immutable: false,\n joinTableName: \"${m2m.joinTableName}\",\n columnNames: [\"${m2m.columnName}\", \"${m2m.otherColumnName}\"],\n hasJoinTableId: ${m2m.hasJoinTableId},\n }\n `;\n });\n\n dbMetadata.oneToOnes.forEach((o2o) => {\n const { fieldName, otherEntity, otherFieldName, otherColumnName } = o2o;\n fields[fieldName] = code`\n {\n kind: \"o2o\",\n fieldName: \"${fieldName}\",\n fieldIdName: \"${fieldName}Id\",\n required: false,\n otherMetadata: () => ${otherEntity.metaName},\n otherFieldName: \"${otherFieldName}\",\n otherColumnName: \"${otherColumnName}\",\n serde: undefined,\n immutable: false,\n }\n `;\n });\n\n dbMetadata.polymorphics.forEach((p) => {\n const { fieldName, notNull, components } = p;\n components.forEach((component) =>\n columnRef(\n component,\n code`new ${KeySerde}(\"${config.entities[component.otherEntity.name].tag}\", \"${dbMeta.entitiesByName[component.otherEntity.name].primaryKey.columnType}\")`,\n code`true, false, false, false, false, () => ${component.otherEntity.metaName}`,\n ),\n );\n fields[fieldName] = code`\n ${polymorphicField}(\"${fieldName}\", ${notNull}, [${components.map((component) => {\n const owner = dbMeta.entitiesByName[component.columnOwner.name];\n const physical = (owner.physicalMetadata ?? owner).polymorphics\n .flatMap((field) => field.components)\n .find((c) => c.columnName === component.columnName)!;\n const target =\n physical.otherEntity.name === component.otherEntity.name\n ? \"\"\n : code`, () => ${component.otherEntity.metaName}`;\n return code`new ${PolyComponent}(${columnRef(component)}, ${q(component.otherFieldName)}${target}),`;\n })}])\n `;\n });\n\n return fields;\n}\n\n/** Emits constructor arguments using codegen's existing column facts. */\nfunction columnArgs(\n column: Pick<PrimitiveField, \"columnNotNull\" | \"columnGenerated\"> & Partial<Pick<PrimitiveField, \"columnDefault\">>,\n meta: EntityDbMetadata,\n idMetadata?: Code,\n): Code {\n const insertOptional = column === meta.createdAt || column === meta.updatedAt;\n return code`${!column.columnNotNull}, ${column.columnDefault != null && !column.columnGenerated}, ${column.columnGenerated}, ${insertOptional}, true, ${idMetadata ?? \"undefined\"}`;\n}\n\n/** Declares all physical codecs before any domain metadata; ID targets remain lazy. */\nexport function generateColumnDeclarations(config: Config, dbMeta: DbMetadata, meta: EntityDbMetadata): Code {\n if (meta.inheritanceType === \"sti\" && meta.baseClassName) return code``;\n const columns: Record<string, Code> = {};\n generateFields(config, dbMeta, meta.physicalMetadata ?? meta, (column, codec, args) => {\n const name = column.columnName;\n if (codec) columns[name] = code`new ${Column}(${q(name)}, ${args}, ${codec})`.asOneline();\n return code`${meta.entity.metaName}Columns[${q(name)}]`;\n });\n return code`const ${meta.entity.metaName}Columns = ${columns} satisfies ${ColumnDescriptors};`;\n}\n\n/** Emits a direct reference to the single physical descriptor. */\nfunction columnReference(column: Pick<PrimitiveField, \"columnName\" | \"columnOwner\">): Code {\n return code`${column.columnOwner.metaName}Columns[${q(column.columnName)}]`;\n}\n\nfunction maybeDefault(f: { hasConfigDefault: boolean; columnDefault?: number | boolean | string | null }): Code | \"\" {\n return f.hasConfigDefault ? code`default: \"config\",` : f.columnDefault != null ? code`default: \"schema\",` : \"\";\n}\n\nfunction maybeOrderBy(f: OneToManyField): Code | \"\" {\n return f.orderBy ? code`orderBy: { field: \"${f.orderBy.field}\", direction: \"${f.orderBy.direction}\" },` : \"\";\n}\n\n/** Emits the `softDeletes` config, i.e. `softDeletes: \"include\",`, for relations that opt out of hiding soft-deletes. */\nfunction maybeSoftDeletes(f: { softDeletes: \"include\" | \"exclude\" | undefined }): Code | \"\" {\n return f.softDeletes ? code`softDeletes: \"${f.softDeletes}\",` : \"\";\n}\n\n/** We sanitize/cleanStringValue all varchars, unless opted out by the column default/arrays/custom serdes. */\nfunction maybeSanitize(\n config: Config,\n f: { columnType: DatabaseColumnType; columnDefault?: any; isArray: boolean; customSerde: any },\n): Code | \"\" {\n // Only strings need to maybe turn off their cleanStringValue sanitization, if the default=\"\" or its an array\n return isString(config, f.columnType) && (f.columnDefault === \"''\" || f.isArray || f.customSerde)\n ? code`sanitize: false,`\n : \"\";\n}\n\nfunction isString(config: Config, columnType: DatabaseColumnType): boolean {\n return mapSimpleDbTypeToTypescriptType(config, columnType) === \"string\";\n}\n"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("./config.cjs");
3
+ require("./index.cjs");
4
+ let change_case = require("change-case");
5
+ let ts_poet = require("ts-poet");
6
+ //#region src/generatePgEnumFile.ts
7
+ function generatePgEnumFile(config, enumData) {
8
+ const { name, values } = enumData;
9
+ `${name}`;
10
+ return ts_poet.code`
11
+ export enum ${name} {
12
+ ${values.map((value) => `${(0, change_case.pascalCase)(value)} = '${value}'`).join(",\n")}
13
+ }
14
+
15
+
16
+ `;
17
+ }
18
+ //#endregion
19
+ exports.generatePgEnumFile = generatePgEnumFile;
20
+
21
+ //# sourceMappingURL=generatePgEnumFile.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePgEnumFile.cjs","names":["pascalCase"],"sources":["../src/generatePgEnumFile.ts"],"sourcesContent":["import { pascalCase } from \"change-case\";\nimport { type Code, code } from \"ts-poet\";\n\nimport { type Config } from \"./config.ts\";\nimport { type PgEnumData } from \"./index.ts\";\n\nexport function generatePgEnumFile(config: Config, enumData: PgEnumData): Code {\n const { name, values } = enumData;\n const detailsName = `${name}Details`;\n return code`\n export enum ${name} {\n ${values.map((value) => `${pascalCase(value)} = '${value}'`).join(\",\\n\")}\n }\n\n\n `;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,mBAAmB,QAAgB,UAA4B;CAC7E,MAAM,EAAE,MAAM,WAAW;CACL,GAAG;CACvB,OAAO,QAAA,IAAI;kBACK,KAAK;QACf,OAAO,KAAK,UAAU,IAAA,GAAGA,YAAAA,WAAAA,CAAW,KAAK,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE;;;;;AAK/E"}
@@ -0,0 +1,9 @@
1
+ import { Config } from "./config.cjs";
2
+ import "./index.cjs";
3
+ import { PgEnumData } from "./loadMetadata.cjs";
4
+ import { Code } from "ts-poet";
5
+ //#region src/generatePgEnumFile.d.ts
6
+ declare function generatePgEnumFile(config: Config, enumData: PgEnumData): Code;
7
+ //#endregion
8
+ export { generatePgEnumFile };
9
+ //# sourceMappingURL=generatePgEnumFile.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePgEnumFile.d.cts","names":[],"sources":["../src/generatePgEnumFile.ts"],"mappings":";;;;;iBAMgB,mBAAmB,QAAQ,QAAQ,UAAU,aAAa"}
@@ -0,0 +1,9 @@
1
+ import { Config } from "./config.mjs";
2
+ import "./index.mjs";
3
+ import { PgEnumData } from "./loadMetadata.mjs";
4
+ import { Code } from "ts-poet";
5
+ //#region src/generatePgEnumFile.d.ts
6
+ declare function generatePgEnumFile(config: Config, enumData: PgEnumData): Code;
7
+ //#endregion
8
+ export { generatePgEnumFile };
9
+ //# sourceMappingURL=generatePgEnumFile.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePgEnumFile.d.mts","names":[],"sources":["../src/generatePgEnumFile.ts"],"mappings":";;;;;iBAMgB,mBAAmB,QAAQ,QAAQ,UAAU,aAAa"}
@@ -1,17 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generatePgEnumFile = generatePgEnumFile;
4
- const change_case_1 = require("change-case");
5
- const ts_poet_1 = require("ts-poet");
1
+ import "./config.js";
2
+ import "./index.js";
3
+ import { pascalCase } from "change-case";
4
+ import { code } from "ts-poet";
5
+ //#region src/generatePgEnumFile.ts
6
6
  function generatePgEnumFile(config, enumData) {
7
- const { name, values } = enumData;
8
- const detailsName = `${name}Details`;
9
- return (0, ts_poet_1.code) `
7
+ const { name, values } = enumData;
8
+ `${name}`;
9
+ return code`
10
10
  export enum ${name} {
11
- ${values.map((value) => `${(0, change_case_1.pascalCase)(value)} = '${value}'`).join(",\n")}
11
+ ${values.map((value) => `${pascalCase(value)} = '${value}'`).join(",\n")}
12
12
  }
13
13
 
14
14
 
15
15
  `;
16
16
  }
17
+ //#endregion
18
+ export { generatePgEnumFile };
19
+
17
20
  //# sourceMappingURL=generatePgEnumFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePgEnumFile.js","sourceRoot":"","sources":["../src/generatePgEnumFile.ts"],"names":[],"mappings":";;AAKA,gDAUC;AAfD,6CAAyC;AACzC,qCAAqC;AAIrC,SAAgB,kBAAkB,CAAC,MAAc,EAAE,QAAoB;IACrE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAClC,MAAM,WAAW,GAAG,GAAG,IAAI,SAAS,CAAC;IACrC,OAAO,IAAA,cAAI,EAAA;kBACK,IAAI;QACd,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAA,wBAAU,EAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;GAI3E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generatePgEnumFile.js","names":[],"sources":["../src/generatePgEnumFile.ts"],"sourcesContent":["import { pascalCase } from \"change-case\";\nimport { type Code, code } from \"ts-poet\";\n\nimport { type Config } from \"./config.ts\";\nimport { type PgEnumData } from \"./index.ts\";\n\nexport function generatePgEnumFile(config: Config, enumData: PgEnumData): Code {\n const { name, values } = enumData;\n const detailsName = `${name}Details`;\n return code`\n export enum ${name} {\n ${values.map((value) => `${pascalCase(value)} = '${value}'`).join(\",\\n\")}\n }\n\n\n `;\n}\n"],"mappings":";;;;;AAMA,SAAgB,mBAAmB,QAAgB,UAA4B;CAC7E,MAAM,EAAE,MAAM,WAAW;CACL,GAAG;CACvB,OAAO,IAAI;kBACK,KAAK;QACf,OAAO,KAAK,UAAU,GAAG,WAAW,KAAK,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE;;;;;AAK/E"}