@kyro-cms/core 0.9.0 → 0.9.2

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 (265) hide show
  1. package/README.md +55 -593
  2. package/dist/{WebhookService-AefJfqX0.d.cts → WebhookService-BKszZlG0.d.cts} +1 -1
  3. package/dist/{WebhookService-118ZTFis.d.ts → WebhookService-Ccf1j-IN.d.ts} +1 -1
  4. package/dist/api-handler-graphql.cjs +44 -0
  5. package/dist/api-handler-graphql.cjs.map +1 -0
  6. package/dist/api-handler-graphql.d.cts +6 -0
  7. package/dist/api-handler-graphql.d.ts +6 -0
  8. package/dist/api-handler-graphql.js +41 -0
  9. package/dist/api-handler-graphql.js.map +1 -0
  10. package/dist/api-handler-trpc.cjs +38 -0
  11. package/dist/api-handler-trpc.cjs.map +1 -0
  12. package/dist/api-handler-trpc.d.cts +5 -0
  13. package/dist/api-handler-trpc.d.ts +5 -0
  14. package/dist/api-handler-trpc.js +36 -0
  15. package/dist/api-handler-trpc.js.map +1 -0
  16. package/dist/api-handler.cjs +33 -99
  17. package/dist/api-handler.cjs.map +1 -1
  18. package/dist/api-handler.d.cts +2 -1
  19. package/dist/api-handler.d.ts +2 -1
  20. package/dist/api-handler.js +21 -97
  21. package/dist/api-handler.js.map +1 -1
  22. package/dist/{tenant-B1YB0Jy8.d.ts → base-CIuXkrH4.d.cts} +7 -15
  23. package/dist/{tenant-Cpeveji6.d.cts → base-fFo4lqER.d.ts} +7 -15
  24. package/dist/bootstrap-3PV3GJ3S.js +7 -0
  25. package/dist/{bootstrap-JCML6NFO.js.map → bootstrap-3PV3GJ3S.js.map} +1 -1
  26. package/dist/bootstrap-4CELFLJO.cjs +32 -0
  27. package/dist/{bootstrap-AKAUP6F6.cjs.map → bootstrap-4CELFLJO.cjs.map} +1 -1
  28. package/dist/{chunk-VJT6P4N6.cjs → chunk-3HR772HI.cjs} +199 -32
  29. package/dist/chunk-3HR772HI.cjs.map +1 -0
  30. package/dist/chunk-3KTWGODI.cjs +178 -0
  31. package/dist/chunk-3KTWGODI.cjs.map +1 -0
  32. package/dist/{chunk-QXIQWPAP.js → chunk-3UK5XBVJ.js} +4 -134
  33. package/dist/chunk-3UK5XBVJ.js.map +1 -0
  34. package/dist/{chunk-FXYP2HA6.js → chunk-4AO3A3JM.js} +48 -4
  35. package/dist/chunk-4AO3A3JM.js.map +1 -0
  36. package/dist/{chunk-Z6ZWNWWR.js → chunk-4CV4JOE5.js} +3 -9
  37. package/dist/{chunk-Z6ZWNWWR.js.map → chunk-4CV4JOE5.js.map} +1 -1
  38. package/dist/chunk-4M7X5HAB.cjs +173 -0
  39. package/dist/chunk-4M7X5HAB.cjs.map +1 -0
  40. package/dist/chunk-53NYVYVX.js +3243 -0
  41. package/dist/chunk-53NYVYVX.js.map +1 -0
  42. package/dist/{chunk-35U3FROB.js → chunk-5H3MWQJS.js} +714 -184
  43. package/dist/chunk-5H3MWQJS.js.map +1 -0
  44. package/dist/{chunk-YVUJBEXE.cjs → chunk-5PMQQFRE.cjs} +16 -7
  45. package/dist/chunk-5PMQQFRE.cjs.map +1 -0
  46. package/dist/{chunk-57P6MJKC.js → chunk-6UNONDW7.js} +94 -10
  47. package/dist/chunk-6UNONDW7.js.map +1 -0
  48. package/dist/{chunk-Y3N7UUDO.js → chunk-7OGPN7MP.js} +5 -2
  49. package/dist/chunk-7OGPN7MP.js.map +1 -0
  50. package/dist/{chunk-2OL4O2TH.cjs → chunk-7OS7TX2Q.cjs} +68 -62
  51. package/dist/chunk-7OS7TX2Q.cjs.map +1 -0
  52. package/dist/{chunk-3TPQ2BU6.js → chunk-BYBMTIMT.js} +2 -6
  53. package/dist/chunk-BYBMTIMT.js.map +1 -0
  54. package/dist/{chunk-ES5HNFFT.js → chunk-CF7OL6HR.js} +4 -2
  55. package/dist/chunk-CF7OL6HR.js.map +1 -0
  56. package/dist/chunk-CJONKRHJ.js +162 -0
  57. package/dist/chunk-CJONKRHJ.js.map +1 -0
  58. package/dist/{chunk-OHVB4AJ7.js → chunk-CJX74IYK.js} +24 -18
  59. package/dist/chunk-CJX74IYK.js.map +1 -0
  60. package/dist/{chunk-5KVM3WEY.cjs → chunk-CNKT4PME.cjs} +1592 -868
  61. package/dist/chunk-CNKT4PME.cjs.map +1 -0
  62. package/dist/{chunk-G7VZBCD6.cjs → chunk-CZLDE2OZ.cjs} +2 -9
  63. package/dist/{chunk-G7VZBCD6.cjs.map → chunk-CZLDE2OZ.cjs.map} +1 -1
  64. package/dist/{chunk-WQBRWOQT.cjs → chunk-DPA3KWPY.cjs} +4 -3
  65. package/dist/chunk-DPA3KWPY.cjs.map +1 -0
  66. package/dist/{chunk-LINKCEG4.cjs → chunk-E2763JUP.cjs} +726 -196
  67. package/dist/chunk-E2763JUP.cjs.map +1 -0
  68. package/dist/chunk-E5UJBLQ7.js +220 -0
  69. package/dist/chunk-E5UJBLQ7.js.map +1 -0
  70. package/dist/{chunk-DVD5P72E.cjs → chunk-EEJUFDMF.cjs} +2 -6
  71. package/dist/chunk-EEJUFDMF.cjs.map +1 -0
  72. package/dist/chunk-FSKONGCX.cjs +253 -0
  73. package/dist/chunk-FSKONGCX.cjs.map +1 -0
  74. package/dist/{chunk-Y3QQN7PN.js → chunk-GAAHG2Z4.js} +13 -4
  75. package/dist/chunk-GAAHG2Z4.js.map +1 -0
  76. package/dist/chunk-GAOXD3XT.js +175 -0
  77. package/dist/chunk-GAOXD3XT.js.map +1 -0
  78. package/dist/{chunk-SA7NSSIQ.cjs → chunk-GUUB5EAG.cjs} +13 -187
  79. package/dist/chunk-GUUB5EAG.cjs.map +1 -0
  80. package/dist/{chunk-4DA7QPLA.cjs → chunk-GXFOGU7N.cjs} +5 -2
  81. package/dist/chunk-GXFOGU7N.cjs.map +1 -0
  82. package/dist/{chunk-I7HHI6QV.cjs → chunk-IDVRRRAK.cjs} +17 -9
  83. package/dist/chunk-IDVRRRAK.cjs.map +1 -0
  84. package/dist/{chunk-HXRD4B37.js → chunk-IPTZM3VE.js} +1423 -704
  85. package/dist/chunk-IPTZM3VE.js.map +1 -0
  86. package/dist/chunk-KC2GDBLS.cjs +84 -0
  87. package/dist/chunk-KC2GDBLS.cjs.map +1 -0
  88. package/dist/{chunk-QUW2RZTM.cjs → chunk-L46ROHUS.cjs} +51 -7
  89. package/dist/chunk-L46ROHUS.cjs.map +1 -0
  90. package/dist/chunk-L4EZKIEX.js +185 -0
  91. package/dist/chunk-L4EZKIEX.js.map +1 -0
  92. package/dist/{chunk-REK7AYOC.js → chunk-L5UKKZQN.js} +199 -32
  93. package/dist/chunk-L5UKKZQN.js.map +1 -0
  94. package/dist/chunk-NKPKR5BW.cjs +188 -0
  95. package/dist/chunk-NKPKR5BW.cjs.map +1 -0
  96. package/dist/chunk-NWUEVLQT.cjs +99 -0
  97. package/dist/chunk-NWUEVLQT.cjs.map +1 -0
  98. package/dist/{chunk-3AJE4SEG.js → chunk-OHC6UHFY.js} +208 -76
  99. package/dist/chunk-OHC6UHFY.js.map +1 -0
  100. package/dist/chunk-PHJRNPHY.cjs +3291 -0
  101. package/dist/chunk-PHJRNPHY.cjs.map +1 -0
  102. package/dist/{chunk-DXHRBMGB.js → chunk-PQ72Z6WC.js} +67 -112
  103. package/dist/chunk-PQ72Z6WC.js.map +1 -0
  104. package/dist/{chunk-K7JPTH3G.cjs → chunk-PV2I2KMI.cjs} +214 -82
  105. package/dist/chunk-PV2I2KMI.cjs.map +1 -0
  106. package/dist/{chunk-PDYFVNUX.cjs → chunk-Q23GAMLE.cjs} +71 -116
  107. package/dist/chunk-Q23GAMLE.cjs.map +1 -0
  108. package/dist/{chunk-H727JIG7.js → chunk-Q72BOAPK.js} +16 -8
  109. package/dist/chunk-Q72BOAPK.js.map +1 -0
  110. package/dist/{chunk-IBG6V56E.cjs → chunk-QFLB4EIJ.cjs} +2 -139
  111. package/dist/chunk-QFLB4EIJ.cjs.map +1 -0
  112. package/dist/{chunk-2KVHZE6O.cjs → chunk-RFFSZSCL.cjs} +282 -190
  113. package/dist/chunk-RFFSZSCL.cjs.map +1 -0
  114. package/dist/{chunk-V3LKPM3O.cjs → chunk-SHTTJMLT.cjs} +4 -2
  115. package/dist/chunk-SHTTJMLT.cjs.map +1 -0
  116. package/dist/{chunk-WOWUL7ZY.js → chunk-UUDTPZX6.js} +5 -4
  117. package/dist/chunk-UUDTPZX6.js.map +1 -0
  118. package/dist/{chunk-QPPDLRNR.js → chunk-V7KZQIZ6.js} +277 -185
  119. package/dist/chunk-V7KZQIZ6.js.map +1 -0
  120. package/dist/{chunk-3ZFYL34R.js → chunk-WXVB364T.js} +12 -185
  121. package/dist/chunk-WXVB364T.js.map +1 -0
  122. package/dist/chunk-XEB7PH2E.js +81 -0
  123. package/dist/chunk-XEB7PH2E.js.map +1 -0
  124. package/dist/{chunk-IA6AU5PI.cjs → chunk-Y7AQK4R4.cjs} +94 -10
  125. package/dist/chunk-Y7AQK4R4.cjs.map +1 -0
  126. package/dist/chunk-YFAVQQTU.js +92 -0
  127. package/dist/chunk-YFAVQQTU.js.map +1 -0
  128. package/dist/cli/index.cjs +6 -6
  129. package/dist/cli/index.cjs.map +1 -1
  130. package/dist/cli/index.js +6 -6
  131. package/dist/cli/index.js.map +1 -1
  132. package/dist/client.cjs +4 -4
  133. package/dist/client.d.cts +3 -3
  134. package/dist/client.d.ts +3 -3
  135. package/dist/client.js +2 -2
  136. package/dist/drizzle/index.cjs +15 -14
  137. package/dist/drizzle/index.d.cts +10 -14
  138. package/dist/drizzle/index.d.ts +10 -14
  139. package/dist/drizzle/index.js +6 -5
  140. package/dist/fields/index.cjs +22 -38
  141. package/dist/fields/index.d.cts +2 -22
  142. package/dist/fields/index.d.ts +2 -22
  143. package/dist/fields/index.js +2 -2
  144. package/dist/graphql/index.cjs +6 -5
  145. package/dist/graphql/index.d.cts +5 -3
  146. package/dist/graphql/index.d.ts +5 -3
  147. package/dist/graphql/index.js +4 -3
  148. package/dist/index-BKta3cBH.d.cts +277 -0
  149. package/dist/index-ClOqnkTO.d.ts +277 -0
  150. package/dist/index.cjs +310 -168
  151. package/dist/index.cjs.map +1 -1
  152. package/dist/index.d.cts +130 -211
  153. package/dist/index.d.ts +130 -211
  154. package/dist/index.js +174 -35
  155. package/dist/index.js.map +1 -1
  156. package/dist/integration.cjs +3 -3
  157. package/dist/integration.js +2 -2
  158. package/dist/media-7WDX4BDJ.js +4 -0
  159. package/dist/{media-GPPTZ43E.js.map → media-7WDX4BDJ.js.map} +1 -1
  160. package/dist/{media-XNTUFJZR.cjs → media-TUSLVRQ6.cjs} +3 -3
  161. package/dist/{media-XNTUFJZR.cjs.map → media-TUSLVRQ6.cjs.map} +1 -1
  162. package/dist/mongo-auth-adapter-GT4S7SCU.cjs +17 -0
  163. package/dist/{mongo-auth-adapter-NHHUJHVH.cjs.map → mongo-auth-adapter-GT4S7SCU.cjs.map} +1 -1
  164. package/dist/mongo-auth-adapter-M7VV4LNB.js +4 -0
  165. package/dist/{mongo-auth-adapter-NJQUUCTP.js.map → mongo-auth-adapter-M7VV4LNB.js.map} +1 -1
  166. package/dist/mongodb/index.cjs +9 -8
  167. package/dist/mongodb/index.d.cts +6 -13
  168. package/dist/mongodb/index.d.ts +6 -13
  169. package/dist/mongodb/index.js +5 -4
  170. package/dist/postgres-auth-adapter-AFAPISH7.js +5 -0
  171. package/dist/{postgres-auth-adapter-3T2NKTSE.js.map → postgres-auth-adapter-AFAPISH7.js.map} +1 -1
  172. package/dist/postgres-auth-adapter-SFDTLONT.cjs +14 -0
  173. package/dist/{postgres-auth-adapter-7IEENCKQ.cjs.map → postgres-auth-adapter-SFDTLONT.cjs.map} +1 -1
  174. package/dist/redis-adapter-UQX4EE3B.cjs +13 -0
  175. package/dist/{redis-adapter-D2E2S3GB.cjs.map → redis-adapter-UQX4EE3B.cjs.map} +1 -1
  176. package/dist/redis-adapter-XALOGWY3.js +4 -0
  177. package/dist/{redis-adapter-VQXD7ESY.js.map → redis-adapter-XALOGWY3.js.map} +1 -1
  178. package/dist/rest/index.cjs +16 -15
  179. package/dist/rest/index.d.cts +4 -4
  180. package/dist/rest/index.d.ts +4 -4
  181. package/dist/rest/index.js +14 -13
  182. package/dist/{schema-37SE2F4B.cjs → schema-6QL3USNB.cjs} +15 -15
  183. package/dist/{schema-37SE2F4B.cjs.map → schema-6QL3USNB.cjs.map} +1 -1
  184. package/dist/{schema-5PHL5IVB.js → schema-FNNWEAAW.js} +4 -4
  185. package/dist/{schema-5PHL5IVB.js.map → schema-FNNWEAAW.js.map} +1 -1
  186. package/dist/sqlite-adapter-AQB5TCGV.cjs +13 -0
  187. package/dist/{sqlite-adapter-LVK5PS4T.cjs.map → sqlite-adapter-AQB5TCGV.cjs.map} +1 -1
  188. package/dist/sqlite-adapter-N5H6IM2X.js +4 -0
  189. package/dist/{sqlite-adapter-TR3U3W6Q.js.map → sqlite-adapter-N5H6IM2X.js.map} +1 -1
  190. package/dist/templates/index.cjs +134 -32
  191. package/dist/templates/index.d.cts +52 -9
  192. package/dist/templates/index.d.ts +52 -9
  193. package/dist/templates/index.js +4 -2
  194. package/dist/trpc/index.cjs +14 -13
  195. package/dist/trpc/index.d.cts +55 -49
  196. package/dist/trpc/index.d.ts +55 -49
  197. package/dist/trpc/index.js +5 -4
  198. package/dist/{types-D6ZLRGbH.d.cts → types-CpjuXbe7.d.cts} +2 -0
  199. package/dist/{types-D6ZLRGbH.d.ts → types-CpjuXbe7.d.ts} +2 -0
  200. package/dist/{types-VtjUxIMp.d.cts → types-DeSApf9T.d.cts} +36 -14
  201. package/dist/{types-VtjUxIMp.d.ts → types-DeSApf9T.d.ts} +36 -14
  202. package/dist/{types-J3R9nVsZ.d.cts → types-Dgzlftb7.d.ts} +32 -28
  203. package/dist/{types-Bs1up4yP.d.ts → types-Ds0tCA3L.d.cts} +32 -28
  204. package/dist/ws/index.cjs +6 -6
  205. package/dist/ws/index.js +2 -2
  206. package/package.json +22 -4
  207. package/dist/bootstrap-AKAUP6F6.cjs +0 -32
  208. package/dist/bootstrap-JCML6NFO.js +0 -7
  209. package/dist/chunk-2KVHZE6O.cjs.map +0 -1
  210. package/dist/chunk-2OL4O2TH.cjs.map +0 -1
  211. package/dist/chunk-35U3FROB.js.map +0 -1
  212. package/dist/chunk-3AJE4SEG.js.map +0 -1
  213. package/dist/chunk-3J4MFTI3.js +0 -3872
  214. package/dist/chunk-3J4MFTI3.js.map +0 -1
  215. package/dist/chunk-3TPQ2BU6.js.map +0 -1
  216. package/dist/chunk-3ZFYL34R.js.map +0 -1
  217. package/dist/chunk-4DA7QPLA.cjs.map +0 -1
  218. package/dist/chunk-57P6MJKC.js.map +0 -1
  219. package/dist/chunk-5KVM3WEY.cjs.map +0 -1
  220. package/dist/chunk-6IMPH6WV.cjs +0 -3897
  221. package/dist/chunk-6IMPH6WV.cjs.map +0 -1
  222. package/dist/chunk-ATBOUGQP.cjs +0 -513
  223. package/dist/chunk-ATBOUGQP.cjs.map +0 -1
  224. package/dist/chunk-DVD5P72E.cjs.map +0 -1
  225. package/dist/chunk-DXHRBMGB.js.map +0 -1
  226. package/dist/chunk-ES5HNFFT.js.map +0 -1
  227. package/dist/chunk-FXYP2HA6.js.map +0 -1
  228. package/dist/chunk-H727JIG7.js.map +0 -1
  229. package/dist/chunk-HXRD4B37.js.map +0 -1
  230. package/dist/chunk-I7HHI6QV.cjs.map +0 -1
  231. package/dist/chunk-IA6AU5PI.cjs.map +0 -1
  232. package/dist/chunk-IBG6V56E.cjs.map +0 -1
  233. package/dist/chunk-K7JPTH3G.cjs.map +0 -1
  234. package/dist/chunk-LINKCEG4.cjs.map +0 -1
  235. package/dist/chunk-OHVB4AJ7.js.map +0 -1
  236. package/dist/chunk-PDYFVNUX.cjs.map +0 -1
  237. package/dist/chunk-Q23JB3KL.js +0 -488
  238. package/dist/chunk-Q23JB3KL.js.map +0 -1
  239. package/dist/chunk-QPPDLRNR.js.map +0 -1
  240. package/dist/chunk-QUW2RZTM.cjs.map +0 -1
  241. package/dist/chunk-QXIQWPAP.js.map +0 -1
  242. package/dist/chunk-R3XIBBAW.cjs +0 -34
  243. package/dist/chunk-R3XIBBAW.cjs.map +0 -1
  244. package/dist/chunk-REK7AYOC.js.map +0 -1
  245. package/dist/chunk-SA7NSSIQ.cjs.map +0 -1
  246. package/dist/chunk-SDMNUYVU.js +0 -30
  247. package/dist/chunk-SDMNUYVU.js.map +0 -1
  248. package/dist/chunk-V3LKPM3O.cjs.map +0 -1
  249. package/dist/chunk-VJT6P4N6.cjs.map +0 -1
  250. package/dist/chunk-WOWUL7ZY.js.map +0 -1
  251. package/dist/chunk-WQBRWOQT.cjs.map +0 -1
  252. package/dist/chunk-Y3N7UUDO.js.map +0 -1
  253. package/dist/chunk-Y3QQN7PN.js.map +0 -1
  254. package/dist/chunk-YVUJBEXE.cjs.map +0 -1
  255. package/dist/index-CLp-DRKA.d.ts +0 -64
  256. package/dist/index-DfO7G4kN.d.cts +0 -64
  257. package/dist/media-GPPTZ43E.js +0 -4
  258. package/dist/mongo-auth-adapter-NHHUJHVH.cjs +0 -17
  259. package/dist/mongo-auth-adapter-NJQUUCTP.js +0 -4
  260. package/dist/postgres-auth-adapter-3T2NKTSE.js +0 -5
  261. package/dist/postgres-auth-adapter-7IEENCKQ.cjs +0 -14
  262. package/dist/redis-adapter-D2E2S3GB.cjs +0 -13
  263. package/dist/redis-adapter-VQXD7ESY.js +0 -4
  264. package/dist/sqlite-adapter-LVK5PS4T.cjs +0 -13
  265. package/dist/sqlite-adapter-TR3U3W6Q.js +0 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["Command","resolve","glob","join","existsSync","mkdirSync","writeFileSync","__filename","fileURLToPath","__dirname","dirname","readFileSync"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { glob } from 'glob';\n\n// ============================================================================\n// Type Generator\n// ============================================================================\n\ninterface FieldConfig {\n name?: string;\n type: string;\n required?: boolean;\n fields?: FieldConfig[];\n relationTo?: string | string[];\n hasMany?: boolean;\n options?: Array<{ label: string; value: string }>;\n}\n\ninterface CollectionConfig {\n slug: string;\n label?: string;\n fields: FieldConfig[];\n}\n\nfunction fieldToType(field: FieldConfig): string {\n switch (field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'color':\n case 'code':\n case 'markdown':\n case 'date':\n case 'richtext':\n case 'json':\n return field.hasMany ? 'string[]' : 'string';\n case 'number':\n return field.hasMany ? 'number[]' : 'number';\n case 'checkbox':\n return 'boolean';\n case 'select':\n case 'radio':\n if (field.options) {\n const values = field.options.map(o => `'${o.value}'`).join(' | ');\n return field.hasMany ? `(${values})[]` : values;\n }\n return field.hasMany ? 'string[]' : 'string';\n case 'relationship':\n if (Array.isArray(field.relationTo)) {\n const types = field.relationTo.map(r => `${capitalize(r)} | string`).join(' | ');\n return field.hasMany ? `(${types})[]` : `(${types})`;\n }\n const relTo = field.relationTo || 'unknown';\n return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;\n case 'upload':\n return field.hasMany ? '(Media | string)[]' : 'Media | string';\n case 'array':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `Array<{\\n${itemFields}\\n }>`;\n }\n return 'Record<string, any>[]';\n case 'group':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `{\\n${itemFields}\\n}`;\n }\n return 'Record<string, any>';\n case 'blocks':\n return 'Block[]';\n default:\n return 'any';\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction collectionToInterface(collection: CollectionConfig): string {\n const name = capitalize(collection.slug);\n const fields = collection.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n\n // Add default fields\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n\n return `export interface ${name} {\\n${fields.join('\\n')}\\n}`;\n}\n\nfunction generateTypes(collections: CollectionConfig[]): string {\n const interfaces = collections.map(c => collectionToInterface(c));\n \n const header = `// ============================================================================\n// Auto-generated by kyro generate\n// ============================================================================\n\nimport type { RichTextBlock } from '@kyro-cms/core';\n\nexport interface Media {\n id: string;\n url: string;\n filename: string;\n mimeType: string;\n filesize: number;\n width?: number;\n height?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Block {\n blockType: string;\n [key: string]: any;\n}\n\n`;\n\n const body = interfaces.join('\\n\\n');\n\n const footer = `\n\n// ============================================================================\n// Query Types\n// ============================================================================\n\nexport interface KyroWhereClause {\n [field: string]: {\n equals?: any;\n not_equals?: any;\n in?: any[];\n not_in?: any[];\n greater_than?: number;\n greater_than_equal?: number;\n less_than?: number;\n less_than_equal?: number;\n like?: string;\n exists?: boolean;\n };\n}\n\nexport interface KyroFindArgs {\n where?: KyroWhereClause;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n}\n\nexport interface KyroFindResult<T> {\n docs: T[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n}\n\nexport interface KyroCreateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroUpdateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroDeleteResult<T> {\n doc: T;\n message: string;\n}\n\n// ============================================================================\n// Collection Map\n// ============================================================================\n\nexport interface KyroCollections {\n${collections.map(c => ` ${c.slug}: ${capitalize(c.slug)};`).join('\\n')}\n}\n\n// ============================================================================\n// Typed Client\n// ============================================================================\n\nexport interface KyroTypedClient<C extends keyof KyroCollections> {\n find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;\n findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;\n create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;\n update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;\n delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;\n count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;\n}\n\nexport interface KyroClient {\n${collections.map(c => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join('\\n')}\n}\n\nexport function createClient(config: { url: string; token?: string }): KyroClient {\n // Client implementation would be here\n throw new Error('Not implemented');\n}\n`;\n\n return header + body + footer;\n}\n\n// ============================================================================\n// CLI Command\n// ============================================================================\n\nexport function createGenerateCommand(): Command {\n const generate = new Command('generate')\n .description('Generate TypeScript types from collection configs')\n .option('-c, --config <path>', 'Path to config file or directory', './src/kyro')\n .option('-o, --output <path>', 'Output file path', './src/types/kyro.d.ts')\n .option('-w, --watch', 'Watch for changes and regenerate')\n .action(async (options) => {\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n console.log('🔧 Generating types from:', configPath);\n\n try {\n // Find all config files\n const configFiles = await glob(`${configPath}/**/*.{ts,js}`);\n \n if (configFiles.length === 0) {\n console.error('❌ No config files found at:', configPath);\n process.exit(1);\n }\n\n // Parse configs\n const collections: CollectionConfig[] = [];\n \n for (const file of configFiles) {\n try {\n // Dynamic import of config file\n const mod = await import(file);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n collections.push(...(configs as CollectionConfig[]));\n } catch (error) {\n console.warn(`⚠️ Could not parse: ${file}`);\n }\n }\n\n if (collections.length === 0) {\n console.error('❌ No valid collection configs found');\n process.exit(1);\n }\n\n console.log(`📦 Found ${collections.length} collection(s):`);\n collections.forEach(c => console.log(` - ${c.slug}`));\n\n // Generate types\n const types = generateTypes(collections);\n\n // Write output\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n writeFileSync(outputPath, types);\n console.log(`✅ Types generated at: ${outputPath}`);\n\n // Watch mode\n if (options.watch) {\n console.log('\\n👁️ Watching for changes...');\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n console.log(`\\n🔄 File changed: ${filename}`);\n // Regenerate\n const newCollections: CollectionConfig[] = [];\n for (const file of configFiles) {\n try {\n const mod = await import(file + `?t=${Date.now()}`);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n newCollections.push(...(configs as CollectionConfig[]));\n } catch {}\n }\n const newTypes = generateTypes(newCollections);\n writeFileSync(outputPath, newTypes);\n console.log('✅ Types regenerated');\n });\n }\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n });\n\n return generate;\n}\n\nexport default createGenerateCommand;\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { join, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { createGenerateCommand } from \"./generate.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet version = \"0.1.0\";\ntry {\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n version = pkg.version;\n} catch {}\n\nconst program = new Command();\n\nprogram\n .name(\"kyro\")\n .description(\"Kyro CMS - Astro-native headless CMS\")\n .version(version);\n\n// Dev command\nprogram\n .command(\"dev\")\n .description(\"Start Kyro CMS development server\")\n .option(\"-p, --port <port>\", \"Port to run on\", \"4321\")\n .option(\"-h, --host <host>\", \"Host to bind to\", \"localhost\")\n .action(async (options) => {\n console.log(\"🚀 Starting Kyro CMS development server...\");\n console.log(` Port: ${options.port}`);\n console.log(` Host: ${options.host}`);\n \n const { exec } = await import(\"child_process\");\n const child = exec(`astro dev --port ${options.port} --host ${options.host}`, {\n env: { ...process.env },\n });\n \n child.stdout?.on(\"data\", (data) => process.stdout.write(data));\n child.stderr?.on(\"data\", (data) => process.stderr.write(data));\n \n process.on(\"SIGINT\", () => {\n child.kill(\"SIGINT\");\n process.exit(0);\n });\n \n process.on(\"SIGTERM\", () => {\n child.kill(\"SIGTERM\");\n process.exit(0);\n });\n });\n\n// Generate command\nprogram\n .command(\"generate\")\n .description(\"Generate types and schemas\")\n .action(async () => {\n console.log(\"📝 Generating types and schemas...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/cli/generate.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// Register commands\nprogram.addCommand(createGenerateCommand());\n\n// DB command group\nconst dbCommand = program\n .command(\"db\")\n .description(\"Database management commands\");\n\n// DB Generate\ndbCommand\n .command(\"generate\")\n .description(\"Generate migrations from schema\")\n .action(async () => {\n console.log(\"📝 Generating migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit generate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n console.log(\"🔄 Running migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit migrate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Migration failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n console.log(\"🔄 Pushing schema...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit push\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Push failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n console.log(\"🌱 Seeding database...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/database/drizzle/seed.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Seeding failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n console.log(\"🔓 Opening Drizzle Studio...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit studio\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Studio failed:\", error.message);\n process.exit(1);\n }\n });\n });\n\n// Auth command group\nconst authCommand = program\n .command(\"auth\")\n .description(\"Authentication management commands\");\n\n// Bootstrap admin\nauthCommand\n .command(\"bootstrap\")\n .description(\"Create initial admin user\")\n .option(\"-e, --email <email>\", \"Admin email\", process.env.KYRO_ADMIN_EMAIL)\n .option(\n \"-p, --password <password>\",\n \"Admin password\",\n process.env.KYRO_ADMIN_PASSWORD,\n )\n .option(\n \"-r, --role <role>\",\n \"Admin role\",\n process.env.KYRO_ADMIN_ROLE || \"admin\",\n )\n .action(async (options) => {\n if (!options.email || !options.password) {\n console.error(\n \"❌ Email and password are required. Set KYRO_ADMIN_EMAIL and KYRO_ADMIN_PASSWORD env vars or use -e and -p options.\",\n );\n process.exit(1);\n }\n\n console.log(\"👤 Creating admin user...\");\n console.log(` Email: ${options.email}`);\n console.log(` Role: ${options.role}`);\n\n try {\n const { bootstrapAdmin } = await import(\"../auth/bootstrap.js\");\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n let adapter: any;\n\n if (isPostgres) {\n const { PostgresAuthAdapter } = await import(\"../database/drizzle/postgres-auth-adapter.js\");\n const { drizzle } = await import(\"drizzle-orm/postgres-js\");\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n const db = drizzle(client);\n adapter = new PostgresAuthAdapter({ db });\n console.log(\" Database: PostgreSQL\");\n } else if (isMongo) {\n const { MongoDBAuthAdapter } = await import(\"../database/mongodb/mongo-auth-adapter.js\");\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n const db = client.db();\n adapter = new MongoDBAuthAdapter({ db });\n console.log(\" Database: MongoDB\");\n } else {\n const { SQLiteAuthAdapter } = await import(\"../auth/sqlite-adapter.js\");\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n adapter = new SQLiteAuthAdapter({ path: authDbPath });\n console.log(\" Database: SQLite\");\n }\n\n if (adapter.connect) {\n await adapter.connect();\n }\n\n const result = await bootstrapAdmin({\n authAdapter: adapter,\n adminEmail: options.email,\n adminPassword: options.password,\n adminRole: options.role,\n });\n\n if (adapter.disconnect) {\n await adapter.disconnect();\n }\n\n if (result.success) {\n console.log(\"✅ Admin user created successfully!\");\n } else {\n console.error(\"❌ Failed to create admin:\", result.error);\n process.exit(1);\n }\n } catch (error) {\n console.error(\"❌ Bootstrap failed:\", error);\n process.exit(1);\n }\n });\n\n// Health command\nprogram\n .command(\"health\")\n .description(\"Check system health\")\n .action(async () => {\n console.log(\"🏥 System Health Check\");\n\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n if (isPostgres) {\n try {\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n await client.unsafe(\"SELECT 1\");\n console.log(\" ✅ Database (PostgreSQL): Connected\");\n await client.end();\n } catch {\n console.log(\" ❌ Database (PostgreSQL): Not connected\");\n }\n } else if (isMongo) {\n try {\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n await client.db().admin().ping();\n console.log(\" ✅ Database (MongoDB): Connected\");\n await client.close();\n } catch {\n console.log(\" ❌ Database (MongoDB): Not connected\");\n }\n } else if (isSQLite) {\n try {\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n const { existsSync } = await import(\"fs\");\n if (existsSync(authDbPath)) {\n console.log(` ✅ Database (SQLite): File exists at ${authDbPath}`);\n } else {\n console.log(` ⚠️ Database (SQLite): No file yet at ${authDbPath} (will be created on first run)`);\n }\n } catch {\n console.log(\" ❌ Database (SQLite): Error checking file\");\n }\n }\n\n console.log(\" ✅ API: Running\");\n });\n\n// Parse arguments\nprogram.parse();\n\n// Show help if no command\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n"]}
1
+ {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["Command","resolve","glob","join","existsSync","mkdirSync","writeFileSync","__filename","fileURLToPath","__dirname","dirname","readFileSync"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { glob } from 'glob';\n\n// ============================================================================\n// Type Generator\n// ============================================================================\n\ninterface FieldConfig {\n name?: string;\n type: string;\n required?: boolean;\n fields?: FieldConfig[];\n relationTo?: string | string[];\n hasMany?: boolean;\n options?: Array<{ label: string; value: string }>;\n}\n\ninterface CollectionConfig {\n slug: string;\n label?: string;\n fields: FieldConfig[];\n}\n\nfunction fieldToType(field: FieldConfig): string {\n switch (field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'color':\n case 'code':\n case 'markdown':\n case 'date':\n case 'richtext':\n case 'json':\n return field.hasMany ? 'string[]' : 'string';\n case 'number':\n return field.hasMany ? 'number[]' : 'number';\n case 'checkbox':\n return 'boolean';\n case 'select':\n case 'radio':\n if (field.options) {\n const values = field.options.map(o => `'${o.value}'`).join(' | ');\n return field.hasMany ? `(${values})[]` : values;\n }\n return field.hasMany ? 'string[]' : 'string';\n case 'relationship':\n if (Array.isArray(field.relationTo)) {\n const types = field.relationTo.map(r => `${capitalize(r)} | string`).join(' | ');\n return field.hasMany ? `(${types})[]` : `(${types})`;\n }\n const relTo = field.relationTo || 'unknown';\n return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;\n case 'upload':\n return field.hasMany ? '(Media | string)[]' : 'Media | string';\n case 'array':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `Array<{\\n${itemFields}\\n }>`;\n }\n return 'Record<string, any>[]';\n case 'group':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `{\\n${itemFields}\\n}`;\n }\n return 'Record<string, any>';\n case 'blocks':\n return 'Block[]';\n default:\n return 'any';\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction collectionToInterface(collection: CollectionConfig): string {\n const name = capitalize(collection.slug);\n const fields = collection.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n\n // Add default fields\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n\n return `export interface ${name} {\\n${fields.join('\\n')}\\n}`;\n}\n\nfunction generateTypes(collections: CollectionConfig[]): string {\n const interfaces = collections.map(c => collectionToInterface(c));\n \n const header = `// ============================================================================\n// Auto-generated by kyro generate\n// ============================================================================\n\nimport type { RichTextBlock } from '@kyro-cms/core';\n\nexport interface Media {\n id: string;\n url: string;\n filename: string;\n mimeType: string;\n filesize: number;\n width?: number;\n height?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Block {\n blockType: string;\n [key: string]: any;\n}\n\n`;\n\n const body = interfaces.join('\\n\\n');\n\n const footer = `\n\n// ============================================================================\n// Query Types\n// ============================================================================\n\nexport interface KyroWhereClause {\n [field: string]: {\n equals?: any;\n not_equals?: any;\n in?: any[];\n not_in?: any[];\n greater_than?: number;\n greater_than_equal?: number;\n less_than?: number;\n less_than_equal?: number;\n like?: string;\n exists?: boolean;\n };\n}\n\nexport interface KyroFindArgs {\n where?: KyroWhereClause;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n}\n\nexport interface KyroFindResult<T> {\n docs: T[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n}\n\nexport interface KyroCreateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroUpdateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroDeleteResult<T> {\n doc: T;\n message: string;\n}\n\n// ============================================================================\n// Collection Map\n// ============================================================================\n\nexport interface KyroCollections {\n${collections.map(c => ` ${c.slug}: ${capitalize(c.slug)};`).join('\\n')}\n}\n\n// ============================================================================\n// Typed Client\n// ============================================================================\n\nexport interface KyroTypedClient<C extends keyof KyroCollections> {\n find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;\n findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;\n create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;\n update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;\n delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;\n count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;\n}\n\nexport interface KyroClient {\n${collections.map(c => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join('\\n')}\n}\n\nexport function createClient(config: { url: string; token?: string }): KyroClient {\n // Client implementation would be here\n throw new Error('Not implemented');\n}\n`;\n\n return header + body + footer;\n}\n\n// ============================================================================\n// CLI Command\n// ============================================================================\n\nexport function createGenerateCommand(): Command {\n const generate = new Command('generate')\n .description('Generate TypeScript types from collection configs')\n .option('-c, --config <path>', 'Path to config file or directory', './src/kyro')\n .option('-o, --output <path>', 'Output file path', './src/types/kyro.d.ts')\n .option('-w, --watch', 'Watch for changes and regenerate')\n .action(async (options) => {\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n console.log('🔧 Generating types from:', configPath);\n\n try {\n // Find all config files\n const configFiles = await glob(`${configPath}/**/*.{ts,js}`);\n \n if (configFiles.length === 0) {\n console.error('❌ No config files found at:', configPath);\n process.exit(1);\n }\n\n // Parse configs\n const collections: CollectionConfig[] = [];\n \n for (const file of configFiles) {\n try {\n // Dynamic import of config file\n const mod = await import(file);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n collections.push(...(configs as CollectionConfig[]));\n } catch (error) {\n console.warn(`⚠️ Could not parse: ${file}`);\n }\n }\n\n if (collections.length === 0) {\n console.error('❌ No valid collection configs found');\n process.exit(1);\n }\n\n console.log(`📦 Found ${collections.length} collection(s):`);\n collections.forEach(c => console.log(` - ${c.slug}`));\n\n // Generate types\n const types = generateTypes(collections);\n\n // Write output\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n writeFileSync(outputPath, types);\n console.log(`✅ Types generated at: ${outputPath}`);\n\n // Watch mode\n if (options.watch) {\n console.log('\\n👁️ Watching for changes...');\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n console.log(`\\n🔄 File changed: ${filename}`);\n // Regenerate\n const newCollections: CollectionConfig[] = [];\n for (const file of configFiles) {\n try {\n const mod = await import(file + `?t=${Date.now()}`);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n newCollections.push(...(configs as CollectionConfig[]));\n } catch {}\n }\n const newTypes = generateTypes(newCollections);\n writeFileSync(outputPath, newTypes);\n console.log('✅ Types regenerated');\n });\n }\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n });\n\n return generate;\n}\n\nexport default createGenerateCommand;\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { join, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { createGenerateCommand } from \"./generate.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet version = \"0.1.0\";\ntry {\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n version = pkg.version;\n} catch {}\n\nconst program = new Command();\n\nprogram\n .name(\"kyro\")\n .description(\"Kyro CMS - Astro-native headless CMS\")\n .version(version);\n\n// Dev command\nprogram\n .command(\"dev\")\n .description(\"Start Kyro CMS development server\")\n .option(\"-p, --port <port>\", \"Port to run on\", \"4321\")\n .option(\"-h, --host <host>\", \"Host to bind to\", \"localhost\")\n .action(async (options) => {\n console.log(\"🚀 Starting Kyro CMS development server...\");\n console.log(` Port: ${options.port}`);\n console.log(` Host: ${options.host}`);\n \n const { exec } = await import(\"child_process\");\n const child = exec(`astro dev --port ${options.port} --host ${options.host}`, {\n env: { ...process.env, NODE_NO_WARNINGS: \"1\" },\n });\n \n child.stdout?.on(\"data\", (data) => process.stdout.write(data));\n child.stderr?.on(\"data\", (data) => process.stderr.write(data));\n \n process.on(\"SIGINT\", () => {\n child.kill(\"SIGINT\");\n process.exit(0);\n });\n \n process.on(\"SIGTERM\", () => {\n child.kill(\"SIGTERM\");\n process.exit(0);\n });\n });\n\n// Generate command\nprogram\n .command(\"generate\")\n .description(\"Generate types and schemas\")\n .action(async () => {\n console.log(\"📝 Generating types and schemas...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/cli/generate.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// Register commands\nprogram.addCommand(createGenerateCommand());\n\n// DB command group\nconst dbCommand = program\n .command(\"db\")\n .description(\"Database management commands\");\n\n// DB Generate\ndbCommand\n .command(\"generate\")\n .description(\"Generate migrations from schema\")\n .action(async () => {\n console.log(\"📝 Generating migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit generate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n console.log(\"🔄 Running migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit migrate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Migration failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n console.log(\"🔄 Pushing schema...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit push\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Push failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n console.log(\"🌱 Seeding database...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/database/drizzle/seed.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Seeding failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n console.log(\"🔓 Opening Drizzle Studio...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit studio\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Studio failed:\", error.message);\n process.exit(1);\n }\n });\n });\n\n// Auth command group\nconst authCommand = program\n .command(\"auth\")\n .description(\"Authentication management commands\");\n\n// Bootstrap admin\nauthCommand\n .command(\"bootstrap\")\n .description(\"Create initial admin user\")\n .option(\"-e, --email <email>\", \"Admin email\", process.env.KYRO_ADMIN_EMAIL)\n .option(\n \"-p, --password <password>\",\n \"Admin password\",\n process.env.KYRO_ADMIN_PASSWORD,\n )\n .option(\n \"-r, --role <role>\",\n \"Admin role\",\n process.env.KYRO_ADMIN_ROLE || \"admin\",\n )\n .action(async (options) => {\n if (!options.email || !options.password) {\n console.error(\n \"❌ Email and password are required. Set KYRO_ADMIN_EMAIL and KYRO_ADMIN_PASSWORD env vars or use -e and -p options.\",\n );\n process.exit(1);\n }\n\n console.log(\"👤 Creating admin user...\");\n console.log(` Email: ${options.email}`);\n console.log(` Role: ${options.role}`);\n\n try {\n const { bootstrapAdmin } = await import(\"../auth/bootstrap.js\");\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n let adapter: any;\n\n if (isPostgres) {\n const { PostgresAuthAdapter } = await import(\"../database/drizzle/postgres-auth-adapter.js\");\n const { drizzle } = await import(\"drizzle-orm/postgres-js\");\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n const db = drizzle(client);\n adapter = new PostgresAuthAdapter({ db });\n console.log(\" Database: PostgreSQL\");\n } else if (isMongo) {\n const { MongoDBAuthAdapter } = await import(\"../database/mongodb/mongo-auth-adapter.js\");\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n const db = client.db();\n adapter = new MongoDBAuthAdapter({ db });\n console.log(\" Database: MongoDB\");\n } else {\n const { SQLiteAuthAdapter } = await import(\"../auth/sqlite-adapter.js\");\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n adapter = new SQLiteAuthAdapter({ path: authDbPath });\n console.log(\" Database: SQLite\");\n }\n\n if (adapter.connect) {\n await adapter.connect();\n }\n\n const result = await bootstrapAdmin({\n authAdapter: adapter,\n adminEmail: options.email,\n adminPassword: options.password,\n adminRole: options.role,\n });\n\n if (adapter.disconnect) {\n await adapter.disconnect();\n }\n\n if (result.success) {\n console.log(\"✅ Admin user created successfully!\");\n } else {\n console.error(\"❌ Failed to create admin:\", result.error);\n process.exit(1);\n }\n } catch (error) {\n console.error(\"❌ Bootstrap failed:\", error);\n process.exit(1);\n }\n });\n\n// Health command\nprogram\n .command(\"health\")\n .description(\"Check system health\")\n .action(async () => {\n console.log(\"🏥 System Health Check\");\n\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n if (isPostgres) {\n try {\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n await client.unsafe(\"SELECT 1\");\n console.log(\" ✅ Database (PostgreSQL): Connected\");\n await client.end();\n } catch {\n console.log(\" ❌ Database (PostgreSQL): Not connected\");\n }\n } else if (isMongo) {\n try {\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n await client.db().admin().ping();\n console.log(\" ✅ Database (MongoDB): Connected\");\n await client.close();\n } catch {\n console.log(\" ❌ Database (MongoDB): Not connected\");\n }\n } else if (isSQLite) {\n try {\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n const { existsSync } = await import(\"fs\");\n if (existsSync(authDbPath)) {\n console.log(` ✅ Database (SQLite): File exists at ${authDbPath}`);\n } else {\n console.log(` ⚠️ Database (SQLite): No file yet at ${authDbPath} (will be created on first run)`);\n }\n } catch {\n console.log(\" ❌ Database (SQLite): Error checking file\");\n }\n }\n\n console.log(\" ✅ API: Running\");\n });\n\n// Parse arguments\nprogram.parse();\n\n// Show help if no command\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n"]}
package/dist/cli/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import '../chunk-Z6ZWNWWR.js';
2
+ import '../chunk-4CV4JOE5.js';
3
3
  import { Command } from 'commander';
4
4
  import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
5
5
  import { dirname, join, resolve } from 'path';
@@ -281,7 +281,7 @@ program.command("dev").description("Start Kyro CMS development server").option("
281
281
  console.log(` Host: ${options.host}`);
282
282
  const { exec } = await import('child_process');
283
283
  const child = exec(`astro dev --port ${options.port} --host ${options.host}`, {
284
- env: { ...process.env }
284
+ env: { ...process.env, NODE_NO_WARNINGS: "1" }
285
285
  });
286
286
  child.stdout?.on("data", (data) => process.stdout.write(data));
287
287
  child.stderr?.on("data", (data) => process.stderr.write(data));
@@ -381,14 +381,14 @@ authCommand.command("bootstrap").description("Create initial admin user").option
381
381
  console.log(` Email: ${options.email}`);
382
382
  console.log(` Role: ${options.role}`);
383
383
  try {
384
- const { bootstrapAdmin } = await import('../bootstrap-JCML6NFO.js');
384
+ const { bootstrapAdmin } = await import('../bootstrap-3PV3GJ3S.js');
385
385
  const databaseUrl = process.env.DATABASE_URL || "";
386
386
  const isPostgres = databaseUrl.toLowerCase().startsWith("postgres://") || databaseUrl.toLowerCase().startsWith("postgresql://");
387
387
  const isMongo = databaseUrl.toLowerCase().startsWith("mongodb://") || databaseUrl.toLowerCase().startsWith("mongodb+srv://");
388
388
  const isSQLite = !databaseUrl || databaseUrl.includes(".db") || databaseUrl.includes("sqlite") || databaseUrl.includes("file:");
389
389
  let adapter;
390
390
  if (isPostgres) {
391
- const { PostgresAuthAdapter } = await import('../postgres-auth-adapter-3T2NKTSE.js');
391
+ const { PostgresAuthAdapter } = await import('../postgres-auth-adapter-AFAPISH7.js');
392
392
  const { drizzle } = await import('drizzle-orm/postgres-js');
393
393
  const { default: postgres } = await import('postgres');
394
394
  const client = postgres(databaseUrl, { max: 1, onnotice: () => {
@@ -397,7 +397,7 @@ authCommand.command("bootstrap").description("Create initial admin user").option
397
397
  adapter = new PostgresAuthAdapter({ db });
398
398
  console.log(" Database: PostgreSQL");
399
399
  } else if (isMongo) {
400
- const { MongoDBAuthAdapter } = await import('../mongo-auth-adapter-NJQUUCTP.js');
400
+ const { MongoDBAuthAdapter } = await import('../mongo-auth-adapter-M7VV4LNB.js');
401
401
  const { MongoClient } = await import('mongodb');
402
402
  const client = new MongoClient(databaseUrl);
403
403
  await client.connect();
@@ -405,7 +405,7 @@ authCommand.command("bootstrap").description("Create initial admin user").option
405
405
  adapter = new MongoDBAuthAdapter({ db });
406
406
  console.log(" Database: MongoDB");
407
407
  } else {
408
- const { SQLiteAuthAdapter } = await import('../sqlite-adapter-TR3U3W6Q.js');
408
+ const { SQLiteAuthAdapter } = await import('../sqlite-adapter-N5H6IM2X.js');
409
409
  const authDbPath = process.env.KYRO_AUTH_DB_PATH || "./data/auth.db";
410
410
  adapter = new SQLiteAuthAdapter({ path: authDbPath });
411
411
  console.log(" Database: SQLite");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["__filename","__dirname","readFileSync","join","Command","existsSync"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { glob } from 'glob';\n\n// ============================================================================\n// Type Generator\n// ============================================================================\n\ninterface FieldConfig {\n name?: string;\n type: string;\n required?: boolean;\n fields?: FieldConfig[];\n relationTo?: string | string[];\n hasMany?: boolean;\n options?: Array<{ label: string; value: string }>;\n}\n\ninterface CollectionConfig {\n slug: string;\n label?: string;\n fields: FieldConfig[];\n}\n\nfunction fieldToType(field: FieldConfig): string {\n switch (field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'color':\n case 'code':\n case 'markdown':\n case 'date':\n case 'richtext':\n case 'json':\n return field.hasMany ? 'string[]' : 'string';\n case 'number':\n return field.hasMany ? 'number[]' : 'number';\n case 'checkbox':\n return 'boolean';\n case 'select':\n case 'radio':\n if (field.options) {\n const values = field.options.map(o => `'${o.value}'`).join(' | ');\n return field.hasMany ? `(${values})[]` : values;\n }\n return field.hasMany ? 'string[]' : 'string';\n case 'relationship':\n if (Array.isArray(field.relationTo)) {\n const types = field.relationTo.map(r => `${capitalize(r)} | string`).join(' | ');\n return field.hasMany ? `(${types})[]` : `(${types})`;\n }\n const relTo = field.relationTo || 'unknown';\n return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;\n case 'upload':\n return field.hasMany ? '(Media | string)[]' : 'Media | string';\n case 'array':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `Array<{\\n${itemFields}\\n }>`;\n }\n return 'Record<string, any>[]';\n case 'group':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `{\\n${itemFields}\\n}`;\n }\n return 'Record<string, any>';\n case 'blocks':\n return 'Block[]';\n default:\n return 'any';\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction collectionToInterface(collection: CollectionConfig): string {\n const name = capitalize(collection.slug);\n const fields = collection.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n\n // Add default fields\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n\n return `export interface ${name} {\\n${fields.join('\\n')}\\n}`;\n}\n\nfunction generateTypes(collections: CollectionConfig[]): string {\n const interfaces = collections.map(c => collectionToInterface(c));\n \n const header = `// ============================================================================\n// Auto-generated by kyro generate\n// ============================================================================\n\nimport type { RichTextBlock } from '@kyro-cms/core';\n\nexport interface Media {\n id: string;\n url: string;\n filename: string;\n mimeType: string;\n filesize: number;\n width?: number;\n height?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Block {\n blockType: string;\n [key: string]: any;\n}\n\n`;\n\n const body = interfaces.join('\\n\\n');\n\n const footer = `\n\n// ============================================================================\n// Query Types\n// ============================================================================\n\nexport interface KyroWhereClause {\n [field: string]: {\n equals?: any;\n not_equals?: any;\n in?: any[];\n not_in?: any[];\n greater_than?: number;\n greater_than_equal?: number;\n less_than?: number;\n less_than_equal?: number;\n like?: string;\n exists?: boolean;\n };\n}\n\nexport interface KyroFindArgs {\n where?: KyroWhereClause;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n}\n\nexport interface KyroFindResult<T> {\n docs: T[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n}\n\nexport interface KyroCreateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroUpdateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroDeleteResult<T> {\n doc: T;\n message: string;\n}\n\n// ============================================================================\n// Collection Map\n// ============================================================================\n\nexport interface KyroCollections {\n${collections.map(c => ` ${c.slug}: ${capitalize(c.slug)};`).join('\\n')}\n}\n\n// ============================================================================\n// Typed Client\n// ============================================================================\n\nexport interface KyroTypedClient<C extends keyof KyroCollections> {\n find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;\n findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;\n create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;\n update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;\n delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;\n count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;\n}\n\nexport interface KyroClient {\n${collections.map(c => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join('\\n')}\n}\n\nexport function createClient(config: { url: string; token?: string }): KyroClient {\n // Client implementation would be here\n throw new Error('Not implemented');\n}\n`;\n\n return header + body + footer;\n}\n\n// ============================================================================\n// CLI Command\n// ============================================================================\n\nexport function createGenerateCommand(): Command {\n const generate = new Command('generate')\n .description('Generate TypeScript types from collection configs')\n .option('-c, --config <path>', 'Path to config file or directory', './src/kyro')\n .option('-o, --output <path>', 'Output file path', './src/types/kyro.d.ts')\n .option('-w, --watch', 'Watch for changes and regenerate')\n .action(async (options) => {\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n console.log('🔧 Generating types from:', configPath);\n\n try {\n // Find all config files\n const configFiles = await glob(`${configPath}/**/*.{ts,js}`);\n \n if (configFiles.length === 0) {\n console.error('❌ No config files found at:', configPath);\n process.exit(1);\n }\n\n // Parse configs\n const collections: CollectionConfig[] = [];\n \n for (const file of configFiles) {\n try {\n // Dynamic import of config file\n const mod = await import(file);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n collections.push(...(configs as CollectionConfig[]));\n } catch (error) {\n console.warn(`⚠️ Could not parse: ${file}`);\n }\n }\n\n if (collections.length === 0) {\n console.error('❌ No valid collection configs found');\n process.exit(1);\n }\n\n console.log(`📦 Found ${collections.length} collection(s):`);\n collections.forEach(c => console.log(` - ${c.slug}`));\n\n // Generate types\n const types = generateTypes(collections);\n\n // Write output\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n writeFileSync(outputPath, types);\n console.log(`✅ Types generated at: ${outputPath}`);\n\n // Watch mode\n if (options.watch) {\n console.log('\\n👁️ Watching for changes...');\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n console.log(`\\n🔄 File changed: ${filename}`);\n // Regenerate\n const newCollections: CollectionConfig[] = [];\n for (const file of configFiles) {\n try {\n const mod = await import(file + `?t=${Date.now()}`);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n newCollections.push(...(configs as CollectionConfig[]));\n } catch {}\n }\n const newTypes = generateTypes(newCollections);\n writeFileSync(outputPath, newTypes);\n console.log('✅ Types regenerated');\n });\n }\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n });\n\n return generate;\n}\n\nexport default createGenerateCommand;\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { join, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { createGenerateCommand } from \"./generate.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet version = \"0.1.0\";\ntry {\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n version = pkg.version;\n} catch {}\n\nconst program = new Command();\n\nprogram\n .name(\"kyro\")\n .description(\"Kyro CMS - Astro-native headless CMS\")\n .version(version);\n\n// Dev command\nprogram\n .command(\"dev\")\n .description(\"Start Kyro CMS development server\")\n .option(\"-p, --port <port>\", \"Port to run on\", \"4321\")\n .option(\"-h, --host <host>\", \"Host to bind to\", \"localhost\")\n .action(async (options) => {\n console.log(\"🚀 Starting Kyro CMS development server...\");\n console.log(` Port: ${options.port}`);\n console.log(` Host: ${options.host}`);\n \n const { exec } = await import(\"child_process\");\n const child = exec(`astro dev --port ${options.port} --host ${options.host}`, {\n env: { ...process.env },\n });\n \n child.stdout?.on(\"data\", (data) => process.stdout.write(data));\n child.stderr?.on(\"data\", (data) => process.stderr.write(data));\n \n process.on(\"SIGINT\", () => {\n child.kill(\"SIGINT\");\n process.exit(0);\n });\n \n process.on(\"SIGTERM\", () => {\n child.kill(\"SIGTERM\");\n process.exit(0);\n });\n });\n\n// Generate command\nprogram\n .command(\"generate\")\n .description(\"Generate types and schemas\")\n .action(async () => {\n console.log(\"📝 Generating types and schemas...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/cli/generate.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// Register commands\nprogram.addCommand(createGenerateCommand());\n\n// DB command group\nconst dbCommand = program\n .command(\"db\")\n .description(\"Database management commands\");\n\n// DB Generate\ndbCommand\n .command(\"generate\")\n .description(\"Generate migrations from schema\")\n .action(async () => {\n console.log(\"📝 Generating migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit generate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n console.log(\"🔄 Running migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit migrate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Migration failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n console.log(\"🔄 Pushing schema...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit push\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Push failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n console.log(\"🌱 Seeding database...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/database/drizzle/seed.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Seeding failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n console.log(\"🔓 Opening Drizzle Studio...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit studio\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Studio failed:\", error.message);\n process.exit(1);\n }\n });\n });\n\n// Auth command group\nconst authCommand = program\n .command(\"auth\")\n .description(\"Authentication management commands\");\n\n// Bootstrap admin\nauthCommand\n .command(\"bootstrap\")\n .description(\"Create initial admin user\")\n .option(\"-e, --email <email>\", \"Admin email\", process.env.KYRO_ADMIN_EMAIL)\n .option(\n \"-p, --password <password>\",\n \"Admin password\",\n process.env.KYRO_ADMIN_PASSWORD,\n )\n .option(\n \"-r, --role <role>\",\n \"Admin role\",\n process.env.KYRO_ADMIN_ROLE || \"admin\",\n )\n .action(async (options) => {\n if (!options.email || !options.password) {\n console.error(\n \"❌ Email and password are required. Set KYRO_ADMIN_EMAIL and KYRO_ADMIN_PASSWORD env vars or use -e and -p options.\",\n );\n process.exit(1);\n }\n\n console.log(\"👤 Creating admin user...\");\n console.log(` Email: ${options.email}`);\n console.log(` Role: ${options.role}`);\n\n try {\n const { bootstrapAdmin } = await import(\"../auth/bootstrap.js\");\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n let adapter: any;\n\n if (isPostgres) {\n const { PostgresAuthAdapter } = await import(\"../database/drizzle/postgres-auth-adapter.js\");\n const { drizzle } = await import(\"drizzle-orm/postgres-js\");\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n const db = drizzle(client);\n adapter = new PostgresAuthAdapter({ db });\n console.log(\" Database: PostgreSQL\");\n } else if (isMongo) {\n const { MongoDBAuthAdapter } = await import(\"../database/mongodb/mongo-auth-adapter.js\");\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n const db = client.db();\n adapter = new MongoDBAuthAdapter({ db });\n console.log(\" Database: MongoDB\");\n } else {\n const { SQLiteAuthAdapter } = await import(\"../auth/sqlite-adapter.js\");\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n adapter = new SQLiteAuthAdapter({ path: authDbPath });\n console.log(\" Database: SQLite\");\n }\n\n if (adapter.connect) {\n await adapter.connect();\n }\n\n const result = await bootstrapAdmin({\n authAdapter: adapter,\n adminEmail: options.email,\n adminPassword: options.password,\n adminRole: options.role,\n });\n\n if (adapter.disconnect) {\n await adapter.disconnect();\n }\n\n if (result.success) {\n console.log(\"✅ Admin user created successfully!\");\n } else {\n console.error(\"❌ Failed to create admin:\", result.error);\n process.exit(1);\n }\n } catch (error) {\n console.error(\"❌ Bootstrap failed:\", error);\n process.exit(1);\n }\n });\n\n// Health command\nprogram\n .command(\"health\")\n .description(\"Check system health\")\n .action(async () => {\n console.log(\"🏥 System Health Check\");\n\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n if (isPostgres) {\n try {\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n await client.unsafe(\"SELECT 1\");\n console.log(\" ✅ Database (PostgreSQL): Connected\");\n await client.end();\n } catch {\n console.log(\" ❌ Database (PostgreSQL): Not connected\");\n }\n } else if (isMongo) {\n try {\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n await client.db().admin().ping();\n console.log(\" ✅ Database (MongoDB): Connected\");\n await client.close();\n } catch {\n console.log(\" ❌ Database (MongoDB): Not connected\");\n }\n } else if (isSQLite) {\n try {\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n const { existsSync } = await import(\"fs\");\n if (existsSync(authDbPath)) {\n console.log(` ✅ Database (SQLite): File exists at ${authDbPath}`);\n } else {\n console.log(` ⚠️ Database (SQLite): No file yet at ${authDbPath} (will be created on first run)`);\n }\n } catch {\n console.log(\" ❌ Database (SQLite): Error checking file\");\n }\n }\n\n console.log(\" ✅ API: Running\");\n });\n\n// Parse arguments\nprogram.parse();\n\n// Show help if no command\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n"]}
1
+ {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["__filename","__dirname","readFileSync","join","Command","existsSync"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { glob } from 'glob';\n\n// ============================================================================\n// Type Generator\n// ============================================================================\n\ninterface FieldConfig {\n name?: string;\n type: string;\n required?: boolean;\n fields?: FieldConfig[];\n relationTo?: string | string[];\n hasMany?: boolean;\n options?: Array<{ label: string; value: string }>;\n}\n\ninterface CollectionConfig {\n slug: string;\n label?: string;\n fields: FieldConfig[];\n}\n\nfunction fieldToType(field: FieldConfig): string {\n switch (field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'color':\n case 'code':\n case 'markdown':\n case 'date':\n case 'richtext':\n case 'json':\n return field.hasMany ? 'string[]' : 'string';\n case 'number':\n return field.hasMany ? 'number[]' : 'number';\n case 'checkbox':\n return 'boolean';\n case 'select':\n case 'radio':\n if (field.options) {\n const values = field.options.map(o => `'${o.value}'`).join(' | ');\n return field.hasMany ? `(${values})[]` : values;\n }\n return field.hasMany ? 'string[]' : 'string';\n case 'relationship':\n if (Array.isArray(field.relationTo)) {\n const types = field.relationTo.map(r => `${capitalize(r)} | string`).join(' | ');\n return field.hasMany ? `(${types})[]` : `(${types})`;\n }\n const relTo = field.relationTo || 'unknown';\n return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;\n case 'upload':\n return field.hasMany ? '(Media | string)[]' : 'Media | string';\n case 'array':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `Array<{\\n${itemFields}\\n }>`;\n }\n return 'Record<string, any>[]';\n case 'group':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `{\\n${itemFields}\\n}`;\n }\n return 'Record<string, any>';\n case 'blocks':\n return 'Block[]';\n default:\n return 'any';\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction collectionToInterface(collection: CollectionConfig): string {\n const name = capitalize(collection.slug);\n const fields = collection.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n\n // Add default fields\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n\n return `export interface ${name} {\\n${fields.join('\\n')}\\n}`;\n}\n\nfunction generateTypes(collections: CollectionConfig[]): string {\n const interfaces = collections.map(c => collectionToInterface(c));\n \n const header = `// ============================================================================\n// Auto-generated by kyro generate\n// ============================================================================\n\nimport type { RichTextBlock } from '@kyro-cms/core';\n\nexport interface Media {\n id: string;\n url: string;\n filename: string;\n mimeType: string;\n filesize: number;\n width?: number;\n height?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Block {\n blockType: string;\n [key: string]: any;\n}\n\n`;\n\n const body = interfaces.join('\\n\\n');\n\n const footer = `\n\n// ============================================================================\n// Query Types\n// ============================================================================\n\nexport interface KyroWhereClause {\n [field: string]: {\n equals?: any;\n not_equals?: any;\n in?: any[];\n not_in?: any[];\n greater_than?: number;\n greater_than_equal?: number;\n less_than?: number;\n less_than_equal?: number;\n like?: string;\n exists?: boolean;\n };\n}\n\nexport interface KyroFindArgs {\n where?: KyroWhereClause;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n}\n\nexport interface KyroFindResult<T> {\n docs: T[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n}\n\nexport interface KyroCreateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroUpdateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroDeleteResult<T> {\n doc: T;\n message: string;\n}\n\n// ============================================================================\n// Collection Map\n// ============================================================================\n\nexport interface KyroCollections {\n${collections.map(c => ` ${c.slug}: ${capitalize(c.slug)};`).join('\\n')}\n}\n\n// ============================================================================\n// Typed Client\n// ============================================================================\n\nexport interface KyroTypedClient<C extends keyof KyroCollections> {\n find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;\n findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;\n create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;\n update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;\n delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;\n count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;\n}\n\nexport interface KyroClient {\n${collections.map(c => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join('\\n')}\n}\n\nexport function createClient(config: { url: string; token?: string }): KyroClient {\n // Client implementation would be here\n throw new Error('Not implemented');\n}\n`;\n\n return header + body + footer;\n}\n\n// ============================================================================\n// CLI Command\n// ============================================================================\n\nexport function createGenerateCommand(): Command {\n const generate = new Command('generate')\n .description('Generate TypeScript types from collection configs')\n .option('-c, --config <path>', 'Path to config file or directory', './src/kyro')\n .option('-o, --output <path>', 'Output file path', './src/types/kyro.d.ts')\n .option('-w, --watch', 'Watch for changes and regenerate')\n .action(async (options) => {\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n console.log('🔧 Generating types from:', configPath);\n\n try {\n // Find all config files\n const configFiles = await glob(`${configPath}/**/*.{ts,js}`);\n \n if (configFiles.length === 0) {\n console.error('❌ No config files found at:', configPath);\n process.exit(1);\n }\n\n // Parse configs\n const collections: CollectionConfig[] = [];\n \n for (const file of configFiles) {\n try {\n // Dynamic import of config file\n const mod = await import(file);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n collections.push(...(configs as CollectionConfig[]));\n } catch (error) {\n console.warn(`⚠️ Could not parse: ${file}`);\n }\n }\n\n if (collections.length === 0) {\n console.error('❌ No valid collection configs found');\n process.exit(1);\n }\n\n console.log(`📦 Found ${collections.length} collection(s):`);\n collections.forEach(c => console.log(` - ${c.slug}`));\n\n // Generate types\n const types = generateTypes(collections);\n\n // Write output\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n writeFileSync(outputPath, types);\n console.log(`✅ Types generated at: ${outputPath}`);\n\n // Watch mode\n if (options.watch) {\n console.log('\\n👁️ Watching for changes...');\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n console.log(`\\n🔄 File changed: ${filename}`);\n // Regenerate\n const newCollections: CollectionConfig[] = [];\n for (const file of configFiles) {\n try {\n const mod = await import(file + `?t=${Date.now()}`);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n newCollections.push(...(configs as CollectionConfig[]));\n } catch {}\n }\n const newTypes = generateTypes(newCollections);\n writeFileSync(outputPath, newTypes);\n console.log('✅ Types regenerated');\n });\n }\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n });\n\n return generate;\n}\n\nexport default createGenerateCommand;\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { join, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { createGenerateCommand } from \"./generate.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet version = \"0.1.0\";\ntry {\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n version = pkg.version;\n} catch {}\n\nconst program = new Command();\n\nprogram\n .name(\"kyro\")\n .description(\"Kyro CMS - Astro-native headless CMS\")\n .version(version);\n\n// Dev command\nprogram\n .command(\"dev\")\n .description(\"Start Kyro CMS development server\")\n .option(\"-p, --port <port>\", \"Port to run on\", \"4321\")\n .option(\"-h, --host <host>\", \"Host to bind to\", \"localhost\")\n .action(async (options) => {\n console.log(\"🚀 Starting Kyro CMS development server...\");\n console.log(` Port: ${options.port}`);\n console.log(` Host: ${options.host}`);\n \n const { exec } = await import(\"child_process\");\n const child = exec(`astro dev --port ${options.port} --host ${options.host}`, {\n env: { ...process.env, NODE_NO_WARNINGS: \"1\" },\n });\n \n child.stdout?.on(\"data\", (data) => process.stdout.write(data));\n child.stderr?.on(\"data\", (data) => process.stderr.write(data));\n \n process.on(\"SIGINT\", () => {\n child.kill(\"SIGINT\");\n process.exit(0);\n });\n \n process.on(\"SIGTERM\", () => {\n child.kill(\"SIGTERM\");\n process.exit(0);\n });\n });\n\n// Generate command\nprogram\n .command(\"generate\")\n .description(\"Generate types and schemas\")\n .action(async () => {\n console.log(\"📝 Generating types and schemas...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/cli/generate.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// Register commands\nprogram.addCommand(createGenerateCommand());\n\n// DB command group\nconst dbCommand = program\n .command(\"db\")\n .description(\"Database management commands\");\n\n// DB Generate\ndbCommand\n .command(\"generate\")\n .description(\"Generate migrations from schema\")\n .action(async () => {\n console.log(\"📝 Generating migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit generate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n console.log(\"🔄 Running migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit migrate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Migration failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n console.log(\"🔄 Pushing schema...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit push\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Push failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n console.log(\"🌱 Seeding database...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/database/drizzle/seed.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Seeding failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n console.log(\"🔓 Opening Drizzle Studio...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit studio\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Studio failed:\", error.message);\n process.exit(1);\n }\n });\n });\n\n// Auth command group\nconst authCommand = program\n .command(\"auth\")\n .description(\"Authentication management commands\");\n\n// Bootstrap admin\nauthCommand\n .command(\"bootstrap\")\n .description(\"Create initial admin user\")\n .option(\"-e, --email <email>\", \"Admin email\", process.env.KYRO_ADMIN_EMAIL)\n .option(\n \"-p, --password <password>\",\n \"Admin password\",\n process.env.KYRO_ADMIN_PASSWORD,\n )\n .option(\n \"-r, --role <role>\",\n \"Admin role\",\n process.env.KYRO_ADMIN_ROLE || \"admin\",\n )\n .action(async (options) => {\n if (!options.email || !options.password) {\n console.error(\n \"❌ Email and password are required. Set KYRO_ADMIN_EMAIL and KYRO_ADMIN_PASSWORD env vars or use -e and -p options.\",\n );\n process.exit(1);\n }\n\n console.log(\"👤 Creating admin user...\");\n console.log(` Email: ${options.email}`);\n console.log(` Role: ${options.role}`);\n\n try {\n const { bootstrapAdmin } = await import(\"../auth/bootstrap.js\");\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n let adapter: any;\n\n if (isPostgres) {\n const { PostgresAuthAdapter } = await import(\"../database/drizzle/postgres-auth-adapter.js\");\n const { drizzle } = await import(\"drizzle-orm/postgres-js\");\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n const db = drizzle(client);\n adapter = new PostgresAuthAdapter({ db });\n console.log(\" Database: PostgreSQL\");\n } else if (isMongo) {\n const { MongoDBAuthAdapter } = await import(\"../database/mongodb/mongo-auth-adapter.js\");\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n const db = client.db();\n adapter = new MongoDBAuthAdapter({ db });\n console.log(\" Database: MongoDB\");\n } else {\n const { SQLiteAuthAdapter } = await import(\"../auth/sqlite-adapter.js\");\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n adapter = new SQLiteAuthAdapter({ path: authDbPath });\n console.log(\" Database: SQLite\");\n }\n\n if (adapter.connect) {\n await adapter.connect();\n }\n\n const result = await bootstrapAdmin({\n authAdapter: adapter,\n adminEmail: options.email,\n adminPassword: options.password,\n adminRole: options.role,\n });\n\n if (adapter.disconnect) {\n await adapter.disconnect();\n }\n\n if (result.success) {\n console.log(\"✅ Admin user created successfully!\");\n } else {\n console.error(\"❌ Failed to create admin:\", result.error);\n process.exit(1);\n }\n } catch (error) {\n console.error(\"❌ Bootstrap failed:\", error);\n process.exit(1);\n }\n });\n\n// Health command\nprogram\n .command(\"health\")\n .description(\"Check system health\")\n .action(async () => {\n console.log(\"🏥 System Health Check\");\n\n const databaseUrl = process.env.DATABASE_URL || \"\";\n const isPostgres = databaseUrl.toLowerCase().startsWith(\"postgres://\") || databaseUrl.toLowerCase().startsWith(\"postgresql://\");\n const isMongo = databaseUrl.toLowerCase().startsWith(\"mongodb://\") || databaseUrl.toLowerCase().startsWith(\"mongodb+srv://\");\n const isSQLite = !databaseUrl || databaseUrl.includes(\".db\") || databaseUrl.includes(\"sqlite\") || databaseUrl.includes(\"file:\");\n\n if (isPostgres) {\n try {\n const { default: postgres } = await import(\"postgres\");\n const client = postgres(databaseUrl, { max: 1, onnotice: () => {} });\n await client.unsafe(\"SELECT 1\");\n console.log(\" ✅ Database (PostgreSQL): Connected\");\n await client.end();\n } catch {\n console.log(\" ❌ Database (PostgreSQL): Not connected\");\n }\n } else if (isMongo) {\n try {\n const { MongoClient } = await import(\"mongodb\");\n const client = new MongoClient(databaseUrl);\n await client.connect();\n await client.db().admin().ping();\n console.log(\" ✅ Database (MongoDB): Connected\");\n await client.close();\n } catch {\n console.log(\" ❌ Database (MongoDB): Not connected\");\n }\n } else if (isSQLite) {\n try {\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n const { existsSync } = await import(\"fs\");\n if (existsSync(authDbPath)) {\n console.log(` ✅ Database (SQLite): File exists at ${authDbPath}`);\n } else {\n console.log(` ⚠️ Database (SQLite): No file yet at ${authDbPath} (will be created on first run)`);\n }\n } catch {\n console.log(\" ❌ Database (SQLite): Error checking file\");\n }\n }\n\n console.log(\" ✅ API: Running\");\n });\n\n// Parse arguments\nprogram.parse();\n\n// Show help if no command\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n"]}
package/dist/client.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkN4H37VN4_cjs = require('./chunk-N4H37VN4.cjs');
4
- var chunkATBOUGQP_cjs = require('./chunk-ATBOUGQP.cjs');
4
+ var chunkFSKONGCX_cjs = require('./chunk-FSKONGCX.cjs');
5
5
  var chunkADLJSJSN_cjs = require('./chunk-ADLJSJSN.cjs');
6
- require('./chunk-G7VZBCD6.cjs');
6
+ require('./chunk-CZLDE2OZ.cjs');
7
7
 
8
8
 
9
9
 
@@ -41,11 +41,11 @@ Object.defineProperty(exports, "generateTailwindConfig", {
41
41
  });
42
42
  Object.defineProperty(exports, "renderRichText", {
43
43
  enumerable: true,
44
- get: function () { return chunkATBOUGQP_cjs.renderRichText; }
44
+ get: function () { return chunkFSKONGCX_cjs.renderRichText; }
45
45
  });
46
46
  Object.defineProperty(exports, "richTextStyles", {
47
47
  enumerable: true,
48
- get: function () { return chunkATBOUGQP_cjs.richTextStyles; }
48
+ get: function () { return chunkFSKONGCX_cjs.richTextStyles; }
49
49
  });
50
50
  Object.defineProperty(exports, "createAuditContext", {
51
51
  enumerable: true,
package/dist/client.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- export { A as AdminConfig, a as AuthConfig, C as CollectionConfig, G as GlobalConfig, I as ImageSize, K as KyroConfig, U as UploadConfig, V as VersionConfig } from './types-J3R9nVsZ.cjs';
2
- export { A as ArrayField, B as BaseField, a as Block, b as BlockAdmin, c as BlockImage, d as BlocksField, C as CheckboxField, e as CodeField, f as CollapsibleField, g as ColorField, D as DateField, E as EmailField, F as Field, h as FieldAdmin, i as FieldType, G as GroupField, I as ImageField, J as JSONField, M as MarkdownField, N as NumberField, P as PasswordField, R as RadioField, j as RelationshipField, k as RichTextBlock, l as RichTextField, m as RowField, S as SelectField, T as TabsField, n as TextField, o as TextareaField, U as UploadField } from './types-VtjUxIMp.cjs';
1
+ export { A as AdminConfig, a as AuthConfig, C as CollectionConfig, G as GlobalConfig, I as ImageSize, K as KyroConfig, U as UploadConfig, V as VersionConfig } from './types-Ds0tCA3L.cjs';
2
+ export { A as ArrayField, B as BaseField, a as Block, b as BlockAdmin, c as BlockImage, d as BlocksField, C as CheckboxField, e as CodeField, f as CollapsibleField, g as ColorField, D as DateField, h as DeclarativeCondition, E as EmailField, F as Field, i as FieldAdmin, j as FieldType, G as GroupField, I as ImageField, J as JSONField, M as MarkdownField, N as NumberField, P as PasswordField, R as RadioField, k as RelationshipField, l as RichTextBlock, m as RichTextField, n as RowField, S as SecretField, o as SelectField, T as TabsField, p as TextField, q as TextareaField, U as UploadField } from './types-DeSApf9T.cjs';
3
3
  export { renderRichText, richTextStyles } from './fields/index.cjs';
4
- export { A as AuthAdapter, a as AuthResult, S as AuthSession, b as AuthTokenConfig, c as AuthUser, J as JWTPayload, L as LoginCredentials, R as RegisterData, S as Session, U as UserRole } from './types-D6ZLRGbH.cjs';
4
+ export { A as AuthAdapter, a as AuthResult, S as AuthSession, b as AuthTokenConfig, c as AuthUser, J as JWTPayload, L as LoginCredentials, R as RegisterData, S as Session, U as UserRole } from './types-CpjuXbe7.cjs';
5
5
  export { A as AdminStylingConfig, C as CSSGenerator, F as FieldStyling, S as StylingConfig, a as StylingMode, T as ThemeBorderRadius, b as ThemeColors, c as ThemeConfig, d as ThemeFonts, e as ThemeShadows, f as ThemeSpacing, g as createAdminStyling, h as defaultDarkTheme, i as defaultFieldStyling, j as defaultLightTheme, k as ecommerce2026Theme, l as generateCSSVariables, m as generateTailwindConfig } from './index-Bz9JqRGI.cjs';
6
6
 
7
7
  declare function createAuditContext(req: Request): {
package/dist/client.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { A as AdminConfig, a as AuthConfig, C as CollectionConfig, G as GlobalConfig, I as ImageSize, K as KyroConfig, U as UploadConfig, V as VersionConfig } from './types-Bs1up4yP.js';
2
- export { A as ArrayField, B as BaseField, a as Block, b as BlockAdmin, c as BlockImage, d as BlocksField, C as CheckboxField, e as CodeField, f as CollapsibleField, g as ColorField, D as DateField, E as EmailField, F as Field, h as FieldAdmin, i as FieldType, G as GroupField, I as ImageField, J as JSONField, M as MarkdownField, N as NumberField, P as PasswordField, R as RadioField, j as RelationshipField, k as RichTextBlock, l as RichTextField, m as RowField, S as SelectField, T as TabsField, n as TextField, o as TextareaField, U as UploadField } from './types-VtjUxIMp.js';
1
+ export { A as AdminConfig, a as AuthConfig, C as CollectionConfig, G as GlobalConfig, I as ImageSize, K as KyroConfig, U as UploadConfig, V as VersionConfig } from './types-Dgzlftb7.js';
2
+ export { A as ArrayField, B as BaseField, a as Block, b as BlockAdmin, c as BlockImage, d as BlocksField, C as CheckboxField, e as CodeField, f as CollapsibleField, g as ColorField, D as DateField, h as DeclarativeCondition, E as EmailField, F as Field, i as FieldAdmin, j as FieldType, G as GroupField, I as ImageField, J as JSONField, M as MarkdownField, N as NumberField, P as PasswordField, R as RadioField, k as RelationshipField, l as RichTextBlock, m as RichTextField, n as RowField, S as SecretField, o as SelectField, T as TabsField, p as TextField, q as TextareaField, U as UploadField } from './types-DeSApf9T.js';
3
3
  export { renderRichText, richTextStyles } from './fields/index.js';
4
- export { A as AuthAdapter, a as AuthResult, S as AuthSession, b as AuthTokenConfig, c as AuthUser, J as JWTPayload, L as LoginCredentials, R as RegisterData, S as Session, U as UserRole } from './types-D6ZLRGbH.js';
4
+ export { A as AuthAdapter, a as AuthResult, S as AuthSession, b as AuthTokenConfig, c as AuthUser, J as JWTPayload, L as LoginCredentials, R as RegisterData, S as Session, U as UserRole } from './types-CpjuXbe7.js';
5
5
  export { A as AdminStylingConfig, C as CSSGenerator, F as FieldStyling, S as StylingConfig, a as StylingMode, T as ThemeBorderRadius, b as ThemeColors, c as ThemeConfig, d as ThemeFonts, e as ThemeShadows, f as ThemeSpacing, g as createAdminStyling, h as defaultDarkTheme, i as defaultFieldStyling, j as defaultLightTheme, k as ecommerce2026Theme, l as generateCSSVariables, m as generateTailwindConfig } from './index-Bz9JqRGI.js';
6
6
 
7
7
  declare function createAuditContext(req: Request): {
package/dist/client.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { CSSGenerator, createAdminStyling, defaultDarkTheme, defaultFieldStyling, defaultLightTheme, ecommerce2026Theme, generateCSSVariables, generateTailwindConfig } from './chunk-2HFJUUFZ.js';
2
- export { renderRichText, richTextStyles } from './chunk-Q23JB3KL.js';
2
+ export { renderRichText, richTextStyles } from './chunk-E5UJBLQ7.js';
3
3
  export { createAuditContext } from './chunk-P2YW545G.js';
4
- import './chunk-Z6ZWNWWR.js';
4
+ import './chunk-4CV4JOE5.js';
5
5
  //# sourceMappingURL=client.js.map
6
6
  //# sourceMappingURL=client.js.map
@@ -1,49 +1,50 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-3YELQL7Z.cjs');
4
- var chunk2KVHZE6O_cjs = require('../chunk-2KVHZE6O.cjs');
5
- var chunk2OL4O2TH_cjs = require('../chunk-2OL4O2TH.cjs');
6
- require('../chunk-WQBRWOQT.cjs');
7
- require('../chunk-SA7NSSIQ.cjs');
8
- require('../chunk-G7VZBCD6.cjs');
4
+ var chunkRFFSZSCL_cjs = require('../chunk-RFFSZSCL.cjs');
5
+ var chunk7OS7TX2Q_cjs = require('../chunk-7OS7TX2Q.cjs');
6
+ require('../chunk-DPA3KWPY.cjs');
7
+ require('../chunk-GUUB5EAG.cjs');
8
+ require('../chunk-NKPKR5BW.cjs');
9
+ require('../chunk-CZLDE2OZ.cjs');
9
10
 
10
11
 
11
12
 
12
13
  Object.defineProperty(exports, "DrizzleAdapter", {
13
14
  enumerable: true,
14
- get: function () { return chunk2KVHZE6O_cjs.DrizzleAdapter; }
15
+ get: function () { return chunkRFFSZSCL_cjs.DrizzleAdapter; }
15
16
  });
16
17
  Object.defineProperty(exports, "collectionToDrizzleSchema", {
17
18
  enumerable: true,
18
- get: function () { return chunk2KVHZE6O_cjs.collectionToDrizzleSchema; }
19
+ get: function () { return chunkRFFSZSCL_cjs.collectionToDrizzleSchema; }
19
20
  });
20
21
  Object.defineProperty(exports, "createDatabase", {
21
22
  enumerable: true,
22
- get: function () { return chunk2KVHZE6O_cjs.createDatabase; }
23
+ get: function () { return chunkRFFSZSCL_cjs.createDatabase; }
23
24
  });
24
25
  Object.defineProperty(exports, "createDrizzleAdapter", {
25
26
  enumerable: true,
26
- get: function () { return chunk2KVHZE6O_cjs.createDrizzleAdapter; }
27
+ get: function () { return chunkRFFSZSCL_cjs.createDrizzleAdapter; }
27
28
  });
28
29
  Object.defineProperty(exports, "fieldToDrizzleType", {
29
30
  enumerable: true,
30
- get: function () { return chunk2KVHZE6O_cjs.fieldToDrizzleType; }
31
+ get: function () { return chunkRFFSZSCL_cjs.fieldToDrizzleType; }
31
32
  });
32
33
  Object.defineProperty(exports, "genId", {
33
34
  enumerable: true,
34
- get: function () { return chunk2KVHZE6O_cjs.genId; }
35
+ get: function () { return chunkRFFSZSCL_cjs.genId; }
35
36
  });
36
37
  Object.defineProperty(exports, "runMigrations", {
37
38
  enumerable: true,
38
- get: function () { return chunk2KVHZE6O_cjs.runMigrations; }
39
+ get: function () { return chunkRFFSZSCL_cjs.runMigrations; }
39
40
  });
40
41
  Object.defineProperty(exports, "seedDefaultRoles", {
41
42
  enumerable: true,
42
- get: function () { return chunk2KVHZE6O_cjs.seedDefaultRoles; }
43
+ get: function () { return chunkRFFSZSCL_cjs.seedDefaultRoles; }
43
44
  });
44
45
  Object.defineProperty(exports, "PostgresAuthAdapter", {
45
46
  enumerable: true,
46
- get: function () { return chunk2OL4O2TH_cjs.PostgresAuthAdapter; }
47
+ get: function () { return chunk7OS7TX2Q_cjs.PostgresAuthAdapter; }
47
48
  });
48
49
  //# sourceMappingURL=index.cjs.map
49
50
  //# sourceMappingURL=index.cjs.map