@kyro-cms/core 0.10.4 → 0.10.5

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 (301) hide show
  1. package/dist/api-handler-graphql.cjs +1 -49
  2. package/dist/api-handler-graphql.js +1 -46
  3. package/dist/api-handler-trpc.cjs +1 -38
  4. package/dist/api-handler-trpc.js +1 -36
  5. package/dist/api-handler.cjs +1 -44
  6. package/dist/api-handler.js +1 -27
  7. package/dist/bootstrap-IVQWSJXZ.js +1 -0
  8. package/dist/bootstrap-OHGQGMRV.cjs +1 -0
  9. package/dist/chunk-2BTRHVT3.cjs +20 -0
  10. package/dist/chunk-2W4FK6CJ.js +122 -0
  11. package/dist/chunk-4ORJMSJU.cjs +1 -0
  12. package/dist/chunk-5J6HXUF6.js +1 -0
  13. package/dist/chunk-65G73T7Z.cjs +2 -0
  14. package/dist/chunk-6CLRVJPP.cjs +133 -0
  15. package/dist/chunk-7N6NKCRT.js +1 -0
  16. package/dist/chunk-7WOX27LK.js +259 -0
  17. package/dist/chunk-AE6GXUT7.js +1 -0
  18. package/dist/chunk-AHSFSERC.cjs +1 -0
  19. package/dist/chunk-AJAZ7D3W.cjs +259 -0
  20. package/dist/chunk-ATLSIYRH.cjs +1 -0
  21. package/dist/chunk-AU6IWTBO.js +2 -0
  22. package/dist/chunk-CIE3XMLH.cjs +2 -0
  23. package/dist/chunk-CVVW4LXZ.cjs +1 -0
  24. package/dist/chunk-DV4LFLPL.cjs +1 -0
  25. package/dist/chunk-ELICKLFM.cjs +3 -0
  26. package/dist/chunk-EQUQJBPP.cjs +2 -0
  27. package/dist/chunk-ET6NN2V2.cjs +122 -0
  28. package/dist/chunk-F3Z67QWS.cjs +86 -0
  29. package/dist/chunk-F7SR5IDT.cjs +1 -0
  30. package/dist/chunk-FO3HLBC7.js +1 -0
  31. package/dist/chunk-G6A7OSIG.js +2 -0
  32. package/dist/chunk-GFU7AOI3.cjs +1 -0
  33. package/dist/chunk-GYQMNXXW.cjs +114 -0
  34. package/dist/chunk-HLSB2MCK.js +1 -0
  35. package/dist/chunk-HVXO3OFB.cjs +1 -0
  36. package/dist/chunk-ISWMETHJ.cjs +1 -0
  37. package/dist/chunk-K6WUOU6P.js +1 -0
  38. package/dist/chunk-KDNYHLD2.js +1 -0
  39. package/dist/chunk-L6CZYN3L.cjs +20 -0
  40. package/dist/chunk-LZ6YFYQM.js +20 -0
  41. package/dist/chunk-MIOMMB23.cjs +1 -0
  42. package/dist/chunk-MSSRVZH6.js +1 -0
  43. package/dist/chunk-NGBJKZMT.js +90 -0
  44. package/dist/chunk-NRLIGDYF.js +1 -0
  45. package/dist/chunk-NY47CFVP.cjs +1 -0
  46. package/dist/chunk-NZ35PV5R.js +2 -0
  47. package/dist/chunk-OG7CNQGU.js +1 -0
  48. package/dist/chunk-P7CESLDJ.js +1 -0
  49. package/dist/chunk-POWTSLKC.js +21 -0
  50. package/dist/chunk-PP5S2UBV.js +0 -0
  51. package/dist/chunk-PWGS2GPI.js +86 -0
  52. package/dist/chunk-Q3Q7BJVQ.cjs +1 -0
  53. package/dist/chunk-Q4CSLXCO.cjs +90 -0
  54. package/dist/chunk-QRXDCV6K.js +0 -0
  55. package/dist/chunk-R6UUTH3T.js +2 -0
  56. package/dist/chunk-RHCWCG3O.js +114 -0
  57. package/dist/chunk-SL3LZQCF.js +1 -0
  58. package/dist/chunk-TD6RULJU.cjs +21 -0
  59. package/dist/chunk-UBHFUFD4.cjs +1 -0
  60. package/dist/chunk-UBRYJP2G.js +1 -0
  61. package/dist/chunk-UDSJGML2.cjs +2 -0
  62. package/dist/chunk-UHFDH3PG.js +20 -0
  63. package/dist/chunk-UJNSOOYZ.cjs +1 -0
  64. package/dist/chunk-UVTS2IWM.js +1 -0
  65. package/dist/chunk-V65NPSR5.cjs +1 -0
  66. package/dist/chunk-VKXQUYYV.js +133 -0
  67. package/dist/chunk-WIZ6C5QZ.cjs +1 -0
  68. package/dist/chunk-Y7K26TBA.cjs +1 -0
  69. package/dist/chunk-ZAQOSRP6.js +1 -0
  70. package/dist/chunk-ZELCS7IC.js +3 -0
  71. package/dist/cli/index.cjs +35 -405
  72. package/dist/cli/index.js +35 -402
  73. package/dist/client.cjs +1 -55
  74. package/dist/client.js +1 -6
  75. package/dist/drizzle/index.cjs +1 -50
  76. package/dist/drizzle/index.d.cts +1 -2
  77. package/dist/drizzle/index.d.ts +1 -2
  78. package/dist/drizzle/index.js +1 -9
  79. package/dist/fields/index.cjs +1 -89
  80. package/dist/fields/index.js +1 -4
  81. package/dist/graphql/index.cjs +1 -31
  82. package/dist/graphql/index.d.cts +1 -1
  83. package/dist/graphql/index.d.ts +1 -1
  84. package/dist/graphql/index.js +1 -6
  85. package/dist/{index-jLs0zlft.d.ts → index-DXr33e0x.d.ts} +1 -1
  86. package/dist/{index-DHbywDs-.d.cts → index-DuuUzWBq.d.cts} +1 -1
  87. package/dist/index.cjs +29 -2464
  88. package/dist/index.d.cts +2 -2
  89. package/dist/index.d.ts +2 -2
  90. package/dist/index.js +29 -1929
  91. package/dist/integration.cjs +1 -10
  92. package/dist/integration.js +1 -4
  93. package/dist/media-L5XDD47D.js +1 -0
  94. package/dist/media-OUBQTIQP.cjs +1 -0
  95. package/dist/mongo-auth-adapter-LG5O4LIH.js +1 -0
  96. package/dist/mongo-auth-adapter-YPONSOCY.cjs +1 -0
  97. package/dist/mongodb/index.cjs +1 -29
  98. package/dist/mongodb/index.d.cts +1 -2
  99. package/dist/mongodb/index.d.ts +1 -2
  100. package/dist/mongodb/index.js +1 -8
  101. package/dist/postgres-auth-adapter-33QOIRXT.js +1 -0
  102. package/dist/postgres-auth-adapter-JKDYYULH.cjs +1 -0
  103. package/dist/redis-adapter-KECGVSVX.cjs +1 -0
  104. package/dist/redis-adapter-VAXP43GR.js +1 -0
  105. package/dist/rest/index.cjs +1 -31
  106. package/dist/rest/index.d.cts +1 -1
  107. package/dist/rest/index.d.ts +1 -1
  108. package/dist/rest/index.js +1 -18
  109. package/dist/schema-HIUSHSUI.cjs +1 -0
  110. package/dist/schema-KFYUM674.js +1 -0
  111. package/dist/sqlite-adapter-FP45QCYK.js +1 -0
  112. package/dist/sqlite-adapter-Z3IBBI4X.cjs +1 -0
  113. package/dist/templates/index.cjs +1 -207
  114. package/dist/templates/index.js +1 -6
  115. package/dist/trpc/index.cjs +1 -48
  116. package/dist/trpc/index.js +1 -7
  117. package/dist/ws/index.cjs +1 -25
  118. package/dist/ws/index.js +1 -4
  119. package/package.json +49 -12
  120. package/dist/api-handler-graphql.cjs.map +0 -1
  121. package/dist/api-handler-graphql.js.map +0 -1
  122. package/dist/api-handler-trpc.cjs.map +0 -1
  123. package/dist/api-handler-trpc.js.map +0 -1
  124. package/dist/api-handler.cjs.map +0 -1
  125. package/dist/api-handler.js.map +0 -1
  126. package/dist/bootstrap-FUAPY2OF.cjs +0 -32
  127. package/dist/bootstrap-FUAPY2OF.cjs.map +0 -1
  128. package/dist/bootstrap-OXNVM7FP.js +0 -7
  129. package/dist/bootstrap-OXNVM7FP.js.map +0 -1
  130. package/dist/chunk-2HFJUUFZ.js +0 -250
  131. package/dist/chunk-2HFJUUFZ.js.map +0 -1
  132. package/dist/chunk-3AKCVYDB.js +0 -162
  133. package/dist/chunk-3AKCVYDB.js.map +0 -1
  134. package/dist/chunk-3KTWGODI.cjs +0 -178
  135. package/dist/chunk-3KTWGODI.cjs.map +0 -1
  136. package/dist/chunk-3YELQL7Z.cjs +0 -4
  137. package/dist/chunk-3YELQL7Z.cjs.map +0 -1
  138. package/dist/chunk-4CV4JOE5.js +0 -24
  139. package/dist/chunk-4CV4JOE5.js.map +0 -1
  140. package/dist/chunk-4OCMVGEY.cjs +0 -173
  141. package/dist/chunk-4OCMVGEY.cjs.map +0 -1
  142. package/dist/chunk-4PWRCMTQ.cjs +0 -15
  143. package/dist/chunk-4PWRCMTQ.cjs.map +0 -1
  144. package/dist/chunk-53NYVYVX.js +0 -3243
  145. package/dist/chunk-53NYVYVX.js.map +0 -1
  146. package/dist/chunk-5GFQPHGT.cjs +0 -156
  147. package/dist/chunk-5GFQPHGT.cjs.map +0 -1
  148. package/dist/chunk-5RPRLTTN.js +0 -861
  149. package/dist/chunk-5RPRLTTN.js.map +0 -1
  150. package/dist/chunk-74YSDAWE.cjs +0 -2749
  151. package/dist/chunk-74YSDAWE.cjs.map +0 -1
  152. package/dist/chunk-7OGPN7MP.js +0 -352
  153. package/dist/chunk-7OGPN7MP.js.map +0 -1
  154. package/dist/chunk-7OS7TX2Q.cjs +0 -495
  155. package/dist/chunk-7OS7TX2Q.cjs.map +0 -1
  156. package/dist/chunk-ADLJSJSN.cjs +0 -13
  157. package/dist/chunk-ADLJSJSN.cjs.map +0 -1
  158. package/dist/chunk-B6X3LN25.cjs +0 -6486
  159. package/dist/chunk-B6X3LN25.cjs.map +0 -1
  160. package/dist/chunk-BYBMTIMT.js +0 -419
  161. package/dist/chunk-BYBMTIMT.js.map +0 -1
  162. package/dist/chunk-CF7OL6HR.js +0 -355
  163. package/dist/chunk-CF7OL6HR.js.map +0 -1
  164. package/dist/chunk-CJX74IYK.js +0 -489
  165. package/dist/chunk-CJX74IYK.js.map +0 -1
  166. package/dist/chunk-CKVOU6MX.cjs +0 -52
  167. package/dist/chunk-CKVOU6MX.cjs.map +0 -1
  168. package/dist/chunk-CZLDE2OZ.cjs +0 -28
  169. package/dist/chunk-CZLDE2OZ.cjs.map +0 -1
  170. package/dist/chunk-DPA3KWPY.cjs +0 -205
  171. package/dist/chunk-DPA3KWPY.cjs.map +0 -1
  172. package/dist/chunk-EEJUFDMF.cjs +0 -424
  173. package/dist/chunk-EEJUFDMF.cjs.map +0 -1
  174. package/dist/chunk-FIAMXNTH.js +0 -220
  175. package/dist/chunk-FIAMXNTH.js.map +0 -1
  176. package/dist/chunk-GAOXD3XT.js +0 -175
  177. package/dist/chunk-GAOXD3XT.js.map +0 -1
  178. package/dist/chunk-GTGRLD4Y.js +0 -3
  179. package/dist/chunk-GTGRLD4Y.js.map +0 -1
  180. package/dist/chunk-GUUB5EAG.cjs +0 -223
  181. package/dist/chunk-GUUB5EAG.cjs.map +0 -1
  182. package/dist/chunk-GXFOGU7N.cjs +0 -359
  183. package/dist/chunk-GXFOGU7N.cjs.map +0 -1
  184. package/dist/chunk-GZS4LMR7.js +0 -422
  185. package/dist/chunk-GZS4LMR7.js.map +0 -1
  186. package/dist/chunk-HY6B7B5A.js +0 -150
  187. package/dist/chunk-HY6B7B5A.js.map +0 -1
  188. package/dist/chunk-HZOMOK5Y.js +0 -2728
  189. package/dist/chunk-HZOMOK5Y.js.map +0 -1
  190. package/dist/chunk-IDVRRRAK.cjs +0 -824
  191. package/dist/chunk-IDVRRRAK.cjs.map +0 -1
  192. package/dist/chunk-KC2GDBLS.cjs +0 -84
  193. package/dist/chunk-KC2GDBLS.cjs.map +0 -1
  194. package/dist/chunk-L4EZKIEX.js +0 -185
  195. package/dist/chunk-L4EZKIEX.js.map +0 -1
  196. package/dist/chunk-LNTFRAHF.cjs +0 -473
  197. package/dist/chunk-LNTFRAHF.cjs.map +0 -1
  198. package/dist/chunk-MTIRYI7F.cjs +0 -4
  199. package/dist/chunk-MTIRYI7F.cjs.map +0 -1
  200. package/dist/chunk-N4GN6Q3V.cjs +0 -869
  201. package/dist/chunk-N4GN6Q3V.cjs.map +0 -1
  202. package/dist/chunk-N4H37VN4.cjs +0 -259
  203. package/dist/chunk-N4H37VN4.cjs.map +0 -1
  204. package/dist/chunk-N5QSHUA6.js +0 -1135
  205. package/dist/chunk-N5QSHUA6.js.map +0 -1
  206. package/dist/chunk-NKPKR5BW.cjs +0 -188
  207. package/dist/chunk-NKPKR5BW.cjs.map +0 -1
  208. package/dist/chunk-OIRG6ZRV.cjs +0 -1073
  209. package/dist/chunk-OIRG6ZRV.cjs.map +0 -1
  210. package/dist/chunk-OJ2AM75W.cjs +0 -253
  211. package/dist/chunk-OJ2AM75W.cjs.map +0 -1
  212. package/dist/chunk-OLV7K22H.js +0 -6457
  213. package/dist/chunk-OLV7K22H.js.map +0 -1
  214. package/dist/chunk-OX6GOIPH.js +0 -516
  215. package/dist/chunk-OX6GOIPH.js.map +0 -1
  216. package/dist/chunk-P2YW545G.js +0 -11
  217. package/dist/chunk-P2YW545G.js.map +0 -1
  218. package/dist/chunk-PHJRNPHY.cjs +0 -3291
  219. package/dist/chunk-PHJRNPHY.cjs.map +0 -1
  220. package/dist/chunk-Q72BOAPK.js +0 -817
  221. package/dist/chunk-Q72BOAPK.js.map +0 -1
  222. package/dist/chunk-QU2RFFH4.js +0 -3
  223. package/dist/chunk-QU2RFFH4.js.map +0 -1
  224. package/dist/chunk-RP7VZUEL.js +0 -49
  225. package/dist/chunk-RP7VZUEL.js.map +0 -1
  226. package/dist/chunk-SHTTJMLT.cjs +0 -361
  227. package/dist/chunk-SHTTJMLT.cjs.map +0 -1
  228. package/dist/chunk-SX76DNOO.js +0 -103
  229. package/dist/chunk-SX76DNOO.js.map +0 -1
  230. package/dist/chunk-THBQG64D.cjs +0 -425
  231. package/dist/chunk-THBQG64D.cjs.map +0 -1
  232. package/dist/chunk-TQG7G7YI.cjs +0 -526
  233. package/dist/chunk-TQG7G7YI.cjs.map +0 -1
  234. package/dist/chunk-U3VVLYXG.cjs +0 -189
  235. package/dist/chunk-U3VVLYXG.cjs.map +0 -1
  236. package/dist/chunk-UUDTPZX6.js +0 -193
  237. package/dist/chunk-UUDTPZX6.js.map +0 -1
  238. package/dist/chunk-V5AWATUP.js +0 -1059
  239. package/dist/chunk-V5AWATUP.js.map +0 -1
  240. package/dist/chunk-VAXLFZCV.cjs +0 -110
  241. package/dist/chunk-VAXLFZCV.cjs.map +0 -1
  242. package/dist/chunk-VKREAIBA.cjs +0 -1139
  243. package/dist/chunk-VKREAIBA.cjs.map +0 -1
  244. package/dist/chunk-WDTTHKDS.js +0 -458
  245. package/dist/chunk-WDTTHKDS.js.map +0 -1
  246. package/dist/chunk-WXVB364T.js +0 -218
  247. package/dist/chunk-WXVB364T.js.map +0 -1
  248. package/dist/chunk-X4BPPD6K.js +0 -181
  249. package/dist/chunk-X4BPPD6K.js.map +0 -1
  250. package/dist/chunk-XEB7PH2E.js +0 -81
  251. package/dist/chunk-XEB7PH2E.js.map +0 -1
  252. package/dist/chunk-YT7HXXVN.js +0 -13
  253. package/dist/chunk-YT7HXXVN.js.map +0 -1
  254. package/dist/cli/index.cjs.map +0 -1
  255. package/dist/cli/index.js.map +0 -1
  256. package/dist/client.cjs.map +0 -1
  257. package/dist/client.js.map +0 -1
  258. package/dist/drizzle/index.cjs.map +0 -1
  259. package/dist/drizzle/index.js.map +0 -1
  260. package/dist/fields/index.cjs.map +0 -1
  261. package/dist/fields/index.js.map +0 -1
  262. package/dist/graphql/index.cjs.map +0 -1
  263. package/dist/graphql/index.js.map +0 -1
  264. package/dist/index.cjs.map +0 -1
  265. package/dist/index.js.map +0 -1
  266. package/dist/integration.cjs.map +0 -1
  267. package/dist/integration.js.map +0 -1
  268. package/dist/media-7WDX4BDJ.js +0 -4
  269. package/dist/media-7WDX4BDJ.js.map +0 -1
  270. package/dist/media-TUSLVRQ6.cjs +0 -17
  271. package/dist/media-TUSLVRQ6.cjs.map +0 -1
  272. package/dist/mongo-auth-adapter-GT4S7SCU.cjs +0 -17
  273. package/dist/mongo-auth-adapter-GT4S7SCU.cjs.map +0 -1
  274. package/dist/mongo-auth-adapter-M7VV4LNB.js +0 -4
  275. package/dist/mongo-auth-adapter-M7VV4LNB.js.map +0 -1
  276. package/dist/mongodb/index.cjs.map +0 -1
  277. package/dist/mongodb/index.js.map +0 -1
  278. package/dist/postgres-auth-adapter-AFAPISH7.js +0 -5
  279. package/dist/postgres-auth-adapter-AFAPISH7.js.map +0 -1
  280. package/dist/postgres-auth-adapter-SFDTLONT.cjs +0 -14
  281. package/dist/postgres-auth-adapter-SFDTLONT.cjs.map +0 -1
  282. package/dist/redis-adapter-UQX4EE3B.cjs +0 -13
  283. package/dist/redis-adapter-UQX4EE3B.cjs.map +0 -1
  284. package/dist/redis-adapter-XALOGWY3.js +0 -4
  285. package/dist/redis-adapter-XALOGWY3.js.map +0 -1
  286. package/dist/rest/index.cjs.map +0 -1
  287. package/dist/rest/index.js.map +0 -1
  288. package/dist/schema-6QL3USNB.cjs +0 -67
  289. package/dist/schema-6QL3USNB.cjs.map +0 -1
  290. package/dist/schema-FNNWEAAW.js +0 -6
  291. package/dist/schema-FNNWEAAW.js.map +0 -1
  292. package/dist/sqlite-adapter-AQB5TCGV.cjs +0 -13
  293. package/dist/sqlite-adapter-AQB5TCGV.cjs.map +0 -1
  294. package/dist/sqlite-adapter-N5H6IM2X.js +0 -4
  295. package/dist/sqlite-adapter-N5H6IM2X.js.map +0 -1
  296. package/dist/templates/index.cjs.map +0 -1
  297. package/dist/templates/index.js.map +0 -1
  298. package/dist/trpc/index.cjs.map +0 -1
  299. package/dist/trpc/index.js.map +0 -1
  300. package/dist/ws/index.cjs.map +0 -1
  301. package/dist/ws/index.js.map +0 -1
@@ -1,13 +0,0 @@
1
- import { pgTable, timestamp, text, varchar } from 'drizzle-orm/pg-core';
2
-
3
- // src/database/drizzle/schema/settings.ts
4
- var settings = pgTable("settings", {
5
- key: varchar("key", { length: 255 }).primaryKey(),
6
- value: text("value").notNull(),
7
- description: text("description"),
8
- updatedAt: timestamp("updated_at").defaultNow()
9
- });
10
-
11
- export { settings };
12
- //# sourceMappingURL=chunk-YT7HXXVN.js.map
13
- //# sourceMappingURL=chunk-YT7HXXVN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/database/drizzle/schema/settings.ts"],"names":[],"mappings":";;;AAEO,IAAM,QAAA,GAAW,QAAQ,UAAA,EAAY;AAAA,EAC1C,GAAA,EAAK,QAAQ,KAAA,EAAO,EAAE,QAAQ,GAAA,EAAK,EAAE,UAAA,EAAW;AAAA,EAChD,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,EAAQ;AAAA,EAC7B,WAAA,EAAa,KAAK,aAAa,CAAA;AAAA,EAC/B,SAAA,EAAW,SAAA,CAAU,YAAY,CAAA,CAAE,UAAA;AACrC,CAAC","file":"chunk-YT7HXXVN.js","sourcesContent":["import { pgTable, varchar, text, timestamp } from \"drizzle-orm/pg-core\";\n\nexport const settings = pgTable(\"settings\", {\n key: varchar(\"key\", { length: 255 }).primaryKey(),\n value: text(\"value\").notNull(),\n description: text(\"description\"),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n});\n\nexport type Setting = typeof settings.$inferSelect;\nexport type NewSetting = typeof settings.$inferInsert;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["Command","outputPath","resolve","join","existsSync","mkdirSync","writeFileSync","glob","__filename","fileURLToPath","__dirname","dirname","readFileSync"],"mappings":";;;;;;;;;;;AAyBA,SAAS,YAAY,KAAA,EAA4B;AAC/C,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,KAAA,CAAM,UAAU,UAAA,GAAa,QAAA;AAAA,IACtC,KAAK,QAAA;AACH,MAAA,OAAO,KAAA,CAAM,UAAU,UAAA,GAAa,QAAA;AAAA,IACtC,KAAK,UAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,QAAA;AAAA,IACL,KAAK,OAAA;AACH,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,KAAK,CAAA,CAAA,CAAG,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAChE,QAAA,OAAO,KAAA,CAAM,OAAA,GAAU,CAAA,CAAA,EAAI,MAAM,CAAA,GAAA,CAAA,GAAQ,MAAA;AAAA,MAC3C;AACA,MAAA,OAAO,KAAA,CAAM,UAAU,UAAA,GAAa,QAAA;AAAA,IACtC,KAAK,cAAA;AACH,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,EAAG;AACnC,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,UAAA,CAAW,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA,SAAA,CAAW,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAC/E,QAAA,OAAO,MAAM,OAAA,GAAU,CAAA,CAAA,EAAI,KAAK,CAAA,GAAA,CAAA,GAAQ,IAAI,KAAK,CAAA,CAAA,CAAA;AAAA,MACnD;AACA,MAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,IAAc,SAAA;AAClC,MAAA,OAAO,KAAA,CAAM,OAAA,GAAU,CAAA,CAAA,EAAI,UAAA,CAAW,KAAK,CAAC,CAAA,YAAA,CAAA,GAAiB,CAAA,EAAG,UAAA,CAAW,KAAK,CAAC,CAAA,SAAA,CAAA;AAAA,IACnF,KAAK,QAAA;AACH,MAAA,OAAO,KAAA,CAAM,UAAU,oBAAA,GAAuB,gBAAA;AAAA,IAChD,KAAK,OAAA;AACH,MAAA,IAAI,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,MAAA,CAAO,SAAS,CAAA,EAAG;AAC3C,QAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,MAAA,CAAO,OAAK,CAAA,CAAE,IAAI,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK;AAC3D,UAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,UAAA,OAAO,CAAA,IAAA,EAAO,EAAE,IAAI,CAAA,EAAG,EAAE,QAAA,GAAW,EAAA,GAAK,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAAA,QACvD,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACZ,QAAA,OAAO,CAAA;AAAA,EAAY,UAAU;AAAA,IAAA,CAAA;AAAA,MAC/B;AACA,MAAA,OAAO,uBAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,IAAI,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,MAAA,CAAO,SAAS,CAAA,EAAG;AAC3C,QAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,MAAA,CAAO,OAAK,CAAA,CAAE,IAAI,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK;AAC3D,UAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,UAAA,OAAO,CAAA,EAAA,EAAK,EAAE,IAAI,CAAA,EAAG,EAAE,QAAA,GAAW,EAAA,GAAK,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAAA,QACrD,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACZ,QAAA,OAAO,CAAA;AAAA,EAAM,UAAU;AAAA,CAAA,CAAA;AAAA,MACzB;AACA,MAAA,OAAO,qBAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAEA,SAAS,WAAW,GAAA,EAAqB;AACvC,EAAA,OAAO,IAAI,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA,CAAE,QAAQ,WAAA,EAAa,CAAC,GAAG,MAAA,KAAW,MAAA,CAAO,aAAa,CAAA;AAC5G;AAEA,SAAS,QAAQ,GAAA,EAAqB;AACpC,EAAA,OAAO,GAAA,CAAI,QAAQ,WAAA,EAAa,CAAC,GAAG,MAAA,KAAW,MAAA,CAAO,aAAa,CAAA;AACrE;AAEA,SAAS,sBAAsB,UAAA,EAAsC;AACnE,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA;AACvC,EAAA,MAAM,MAAA,GAAS,WAAW,MAAA,CAAO,MAAA,CAAO,OAAK,CAAA,CAAE,IAAI,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK;AAC5D,IAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,IAAA,OAAO,CAAA,EAAA,EAAK,EAAE,IAAI,CAAA,EAAG,EAAE,QAAA,GAAW,EAAA,GAAK,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAAA,EACrD,CAAC,CAAA;AAGD,EAAA,MAAA,CAAO,QAAQ,eAAe,CAAA;AAC9B,EAAA,MAAA,CAAO,KAAK,sBAAsB,CAAA;AAClC,EAAA,MAAA,CAAO,KAAK,sBAAsB,CAAA;AAElC,EAAA,OAAO,oBAAoB,IAAI,CAAA;AAAA,EAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC;AAAA,CAAA,CAAA;AACzD;AAEA,SAAS,cAAc,WAAA,EAAyC;AAC9D,EAAA,MAAM,aAAa,WAAA,CAAY,GAAA,CAAI,CAAA,CAAA,KAAK,qBAAA,CAAsB,CAAC,CAAC,CAAA;AAEhE,EAAA,MAAM,MAAA,GAAS,CAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA,CAAA;AAyBf,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA;AAEnC,EAAA,MAAM,MAAA,GAAS;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,EA+Df,YAAY,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,EAAA,EAAK,OAAA,CAAQ,EAAE,IAAI,CAAC,CAAA,EAAA,EAAK,UAAA,CAAW,EAAE,IAAI,CAAC,GAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,EAAA,EAiB7E,WAAA,CAAY,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAA,mBAAA,EAAsB,EAAE,IAAI,CAAA,GAAA,CAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AASxF,EAAA,OAAO,SAAS,IAAA,GAAO,MAAA;AACzB;AAMA,eAAe,iBAAA,CAAkB,KAAa,MAAA,EAAgC;AAC5E,EAAA,MAAM,YAAY,CAAA,EAAG,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA,aAAA,CAAA;AAC5C,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,SAAA,EAAW;AAAA,IACjC,OAAA,EAAS,EAAE,aAAA,EAAe,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA;AAAG,GAC9C,CAAA;AACD,EAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,IAAI,MAAM,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,IAAI,IAAA,EAAK;AAClB;AAEA,SAAS,oBAAoB,WAAA,EAA4B;AACvD,EAAA,IAAI,MAAA,GAAS,CAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA,CAAA;AAyBb,EAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AAChC,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAW,CAAA,CAAE,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAW;AACnE,MAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,MAAA,OAAO,CAAA,EAAA,EAAK,EAAE,IAAI,CAAA,EAAG,EAAE,QAAA,GAAW,EAAA,GAAK,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAAA,IACrD,CAAC,CAAA;AACD,IAAA,MAAA,CAAO,QAAQ,eAAe,CAAA;AAC9B,IAAA,MAAA,CAAO,KAAK,sBAAsB,CAAA;AAClC,IAAA,MAAA,CAAO,KAAK,sBAAsB,CAAA;AAClC,IAAA,MAAA,IAAU,oBAAoB,IAAI,CAAA;AAAA,EAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC;AAAA;;AAAA,CAAA;AAAA,EAC5D;AAGA,EAAA,MAAA,IAAU,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,EAuCV,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,KAAa;AAC9B,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AAChC,IAAA,OAAO,CAAA,IAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA;AAAA,wBAAA,EAEP,IAAI,CAAA,0GAAA,EAA6G,GAAA,CAAI,IAAI,CAAA;AAAA;AAAA,gBAAA,EAEjI,IAAI,CAAA,KAAA,EAAQ,GAAA,CAAI,IAAI,CAAA;AAAA;AAAA,wBAAA,EAEZ,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,IAAI,CAAA;AAAA,6BAAA,EACnB,IAAI,CAAA;AAAA,uBAAA,EACV,IAAI,CAAA,yBAAA,EAA4B,GAAA,CAAI,IAAI,CAAA;AAAA,yCAAA,EACtB,IAAI,CAAA;AAAA,uBAAA,EACtB,IAAI,CAAA,yBAAA,EAA4B,GAAA,CAAI,IAAI,CAAA;AAAA;AAAA,uBAAA,EAExC,IAAI,CAAA,wBAAA,EAA2B,GAAA,CAAI,IAAI,CAAA;AAAA;AAAA,0CAAA,EAEpB,IAAI,IAAI,CAAA;AAAA,MAAA,CAAA;AAAA,EAEpD,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC;AAAA;AAAA;AAAA,CAAA;AAKX,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,qBAAA,GAAiC;AAC/C,EAAA,MAAM,QAAA,GAAW,IAAIA,iBAAA,CAAQ,UAAU,EACpC,WAAA,CAAY,mDAAmD,CAAA,CAC/D,MAAA,CAAO,qBAAA,EAAuB,kCAAA,EAAoC,YAAY,CAAA,CAC9E,OAAO,qBAAA,EAAuB,kBAAA,EAAoB,uBAAuB,CAAA,CACzE,MAAA,CAAO,aAAA,EAAe,kCAAkC,CAAA,CACxD,OAAO,aAAA,EAAe,0DAA0D,CAAA,CAChF,MAAA,CAAO,iBAAA,EAAmB,kDAAkD,CAAA,CAC5E,MAAA,CAAO,OAAO,OAAA,KAAY;AACzB,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAA,IAAI,CAAC,QAAQ,GAAA,EAAK;AAChB,QAAA,OAAA,CAAQ,MAAM,2CAAsC,CAAA;AACpD,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AACA,MAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,QAAA,OAAA,CAAQ,MAAM,+CAA0C,CAAA;AACxD,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AAEA,MAAA,MAAMC,WAAAA,GAAaC,YAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA;AAGzC,MAAA,IAAI;AACF,QAAA,MAAM,cAAc,MAAM,iBAAA,CAAkB,OAAA,CAAQ,GAAA,EAAK,QAAQ,MAAM,CAAA;AAGvE,QAAA,MAAM,KAAA,GAAQ,oBAAoB,WAAW,CAAA;AAE7C,QAAA,MAAM,SAAA,GAAYC,SAAA,CAAKF,WAAAA,EAAY,IAAI,CAAA;AACvC,QAAA,IAAI,CAACG,aAAA,CAAW,SAAS,CAAA,EAAG;AAC1B,UAAAC,YAAA,CAAU,SAAA,EAAW,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAAA,QAC1C;AACA,QAAAC,gBAAA,CAAcL,aAAY,KAAK,CAAA;AAAA,MAEjC,SAAS,KAAA,EAAY;AACnB,QAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,EAAY,KAAA,CAAM,OAAO,CAAA;AACvC,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAaC,YAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA;AACzC,IAAA,MAAM,UAAA,GAAaA,YAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA;AAIzC,IAAA,IAAI;AAEF,MAAA,MAAM,WAAA,GAAc,MAAMK,SAAA,CAAK,CAAA,EAAG,UAAU,CAAA,aAAA,CAAe,CAAA;AAE3D,MAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,QAAA,OAAA,CAAQ,KAAA,CAAM,oCAA+B,UAAU,CAAA;AACvD,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AAGA,MAAA,MAAM,cAAkC,EAAC;AAEzC,MAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,QAAA,IAAI;AAEF,UAAA,MAAM,GAAA,GAAM,MAAM,OAAO,IAAA,CAAA;AACzB,UAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAW,CAAA,IAAK,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE,MAAM,CAAA;AAC7E,UAAA,WAAA,CAAY,IAAA,CAAK,GAAI,OAA8B,CAAA;AAAA,QACrD,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAwB,IAAI,CAAA,CAAE,CAAA;AAAA,QAC7C;AAAA,MACF;AAEA,MAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,QAAA,OAAA,CAAQ,MAAM,0CAAqC,CAAA;AACnD,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AAKA,MAAA,MAAM,KAAA,GAAQ,cAAc,WAAW,CAAA;AAGvC,MAAA,MAAM,SAAA,GAAYJ,SAAA,CAAK,UAAA,EAAY,IAAI,CAAA;AACvC,MAAA,IAAI,CAACC,aAAA,CAAW,SAAS,CAAA,EAAG;AAC1B,QAAAC,YAAA,CAAU,SAAA,EAAW,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAAA,MAC1C;AAEA,MAAAC,gBAAA,CAAc,YAAY,KAAK,CAAA;AAI/B,MAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,QAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAM,OAAO,IAAI,CAAA;AACnC,QAAA,KAAA,CAAM,YAAY,EAAE,SAAA,EAAW,MAAK,EAAG,OAAO,WAAW,QAAA,KAAa;AAGpE,UAAA,MAAM,iBAAqC,EAAC;AAC5C,UAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,YAAA,IAAI;AACF,cAAA,MAAM,MAAM,MAAM,OAAO,OAAO,CAAA,GAAA,EAAM,IAAA,CAAK,KAAK,CAAA,CAAA,CAAA;AAChD,cAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAW,CAAA,IAAK,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE,MAAM,CAAA;AAC7E,cAAA,cAAA,CAAe,IAAA,CAAK,GAAI,OAA8B,CAAA;AAAA,YACxD,CAAA,CAAA,MAAQ;AAAA,YAAC;AAAA,UACX;AACA,UAAA,MAAM,QAAA,GAAW,cAAc,cAAc,CAAA;AAC7C,UAAAA,gBAAA,CAAc,YAAY,QAAQ,CAAA;AAAA,QAEpC,CAAC,CAAA;AAAA,MACH;AAAA,IACF,SAAS,KAAA,EAAY;AACnB,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,EAAY,KAAA,CAAM,OAAO,CAAA;AACvC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,OAAO,QAAA;AACT;;;ACtcA,IAAME,YAAA,GAAaC,iBAAA,CAAc,2PAAe,CAAA;AAChD,IAAMC,WAAA,GAAYC,aAAQH,YAAU,CAAA;AAGpC,IAAI,OAAA,GAAU,OAAA;AACd,IAAI;AACF,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA;AAAA,IACfI,eAAAA,CAAaT,SAAAA,CAAKO,WAAA,EAAW,oBAAoB,GAAG,OAAO;AAAA,GAC7D;AACA,EAAA,OAAA,GAAU,GAAA,CAAI,OAAA;AAChB,CAAA,CAAA,MAAQ;AAAC;AAET,IAAM,OAAA,GAAU,IAAIV,iBAAAA,EAAQ;AAE5B,OAAA,CACG,KAAK,MAAM,CAAA,CACX,YAAY,sCAAsC,CAAA,CAClD,QAAQ,OAAO,CAAA;AAGlB,OAAA,CACG,QAAQ,KAAK,CAAA,CACb,YAAY,mCAAmC,CAAA,CAC/C,OAAO,mBAAA,EAAqB,gBAAA,EAAkB,MAAM,CAAA,CACpD,OAAO,mBAAA,EAAqB,iBAAA,EAAmB,WAAW,CAAA,CAC1D,MAAA,CAAO,OAAO,OAAA,KAAY;AAGzB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,eAAe,CAAA;AAC7C,EAAA,MAAM,KAAA,GAAQ,KAAK,CAAA,iBAAA,EAAoB,OAAA,CAAQ,IAAI,CAAA,QAAA,EAAW,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI;AAAA,IAC5E,KAAK,EAAE,GAAG,OAAA,CAAQ,GAAA,EAAK,kBAAkB,GAAA;AAAI,GAC9C,CAAA;AAED,EAAA,KAAA,CAAM,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAC,SAAS,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AAC7D,EAAA,KAAA,CAAM,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAC,SAAS,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AAE7D,EAAA,OAAA,CAAQ,EAAA,CAAG,UAAU,MAAM;AACzB,IAAA,KAAA,CAAM,KAAK,QAAQ,CAAA;AACnB,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,OAAA,CAAQ,EAAA,CAAG,WAAW,MAAM;AAC1B,IAAA,KAAA,CAAM,KAAK,SAAS,CAAA;AACpB,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB,CAAC,CAAA;AACH,CAAC,CAAA;AAGH,OAAA,CAAQ,UAAA,CAAW,uBAAuB,CAAA;AAG1C,IAAM,YAAY,OAAA,CACf,OAAA,CAAQ,IAAI,CAAA,CACZ,YAAY,8BAA8B,CAAA;AAG7C,SAAA,CACG,QAAQ,UAAU,CAAA,CAClB,YAAY,iCAAiC,CAAA,CAC7C,OAAO,YAAY;AAElB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,0BAAA,EAA4B,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AAC1D,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,2BAAA,EAAwB,KAAA,CAAM,OAAO,CAAA;AACnD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH,CAAC,CAAA;AAGH,SAAA,CACG,QAAQ,SAAS,CAAA,CACjB,YAAY,yBAAyB,CAAA,CACrC,OAAO,YAAY;AAElB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,yBAAA,EAA2B,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACzD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,0BAAA,EAAuB,KAAA,CAAM,OAAO,CAAA;AAClD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH,CAAC,CAAA;AAGH,SAAA,CACG,QAAQ,MAAM,CAAA,CACd,YAAY,uCAAuC,CAAA,CACnD,OAAO,YAAY;AAElB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,sBAAA,EAAwB,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACtD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,qBAAA,EAAkB,KAAA,CAAM,OAAO,CAAA;AAC7C,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH,CAAC,CAAA;AAGH,SAAA,CACG,QAAQ,MAAM,CAAA,CACd,YAAY,iCAAiC,CAAA,CAC7C,OAAO,YAAY;AAElB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,sCAAA,EAAwC,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACtE,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,wBAAA,EAAqB,KAAA,CAAM,OAAO,CAAA;AAChD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH,CAAC,CAAA;AAGH,SAAA,CACG,QAAQ,QAAQ,CAAA,CAChB,YAAY,qBAAqB,CAAA,CACjC,OAAO,YAAY;AAElB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,wBAAA,EAA0B,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACxD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,uBAAA,EAAoB,KAAA,CAAM,OAAO,CAAA;AAC/C,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH,CAAC,CAAA;AAGH,IAAM,cAAc,OAAA,CACjB,OAAA,CAAQ,MAAM,CAAA,CACd,YAAY,oCAAoC,CAAA;AAGnD,WAAA,CACG,OAAA,CAAQ,WAAW,CAAA,CACnB,WAAA,CAAY,2BAA2B,CAAA,CACvC,MAAA,CAAO,qBAAA,EAAuB,aAAA,EAAe,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA,CACzE,MAAA;AAAA,EACC,2BAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAQ,GAAA,CAAI;AACd,CAAA,CACC,MAAA;AAAA,EACC,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA,CAAQ,IAAI,eAAA,IAAmB;AACjC,CAAA,CACC,MAAA,CAAO,OAAO,OAAA,KAAY;AACzB,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAA,IAAS,CAAC,QAAQ,QAAA,EAAU;AACvC,IAAA,OAAA,CAAQ,KAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAIA,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,cAAA,EAAe,GAAI,MAAM,OAAO,2BAAsB,CAAA;AAC9D,IAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,CAAI,YAAA,IAAgB,EAAA;AAChD,IAAA,MAAM,UAAA,GAAa,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,aAAa,CAAA,IAAK,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,eAAe,CAAA;AAC9H,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,YAAY,CAAA,IAAK,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,gBAAgB,CAAA;AAC3H,IAAA,MAAM,QAAA,GAAW,CAAC,WAAA,IAAe,WAAA,CAAY,QAAA,CAAS,KAAK,CAAA,IAAK,WAAA,CAAY,QAAA,CAAS,QAAQ,CAAA,IAAK,WAAA,CAAY,SAAS,OAAO,CAAA;AAE9H,IAAA,IAAI,OAAA;AAEJ,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,EAAE,mBAAA,EAAoB,GAAI,MAAM,OAAO,uCAA8C,CAAA;AAC3F,MAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,OAAO,yBAAyB,CAAA;AAC1D,MAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAI,MAAM,OAAO,UAAU,CAAA;AACrD,MAAA,MAAM,SAAS,QAAA,CAAS,WAAA,EAAa,EAAE,GAAA,EAAK,CAAA,EAAG,UAAU,MAAM;AAAA,MAAC,GAAG,CAAA;AACnE,MAAA,MAAM,EAAA,GAAK,QAAQ,MAAM,CAAA;AACzB,MAAA,OAAA,GAAU,IAAI,mBAAA,CAAoB,EAAE,EAAA,EAAI,CAAA;AAAA,IAE1C,WAAW,OAAA,EAAS;AAClB,MAAA,MAAM,EAAE,kBAAA,EAAmB,GAAI,MAAM,OAAO,oCAA2C,CAAA;AACvF,MAAA,MAAM,EAAE,WAAA,EAAY,GAAI,MAAM,OAAO,SAAS,CAAA;AAC9C,MAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY,WAAW,CAAA;AAC1C,MAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,MAAA,MAAM,EAAA,GAAK,OAAO,EAAA,EAAG;AACrB,MAAA,OAAA,GAAU,IAAI,kBAAA,CAAmB,EAAE,EAAA,EAAI,CAAA;AAAA,IAEzC,CAAA,MAAO;AACL,MAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,MAAM,OAAO,gCAA2B,CAAA;AACtE,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,GAAA,CAAI,iBAAA,IAAqB,gBAAA;AACpD,MAAA,OAAA,GAAU,IAAI,iBAAA,CAAkB,EAAE,IAAA,EAAM,YAAY,CAAA;AAAA,IAEtD;AAEA,IAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,MAAA,MAAM,QAAQ,OAAA,EAAQ;AAAA,IACxB;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe;AAAA,MAClC,WAAA,EAAa,OAAA;AAAA,MACb,YAAY,OAAA,CAAQ,KAAA;AAAA,MACpB,eAAe,OAAA,CAAQ,QAAA;AAAA,MACvB,WAAW,OAAA,CAAQ;AAAA,KACpB,CAAA;AAED,IAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,MAAA,MAAM,QAAQ,UAAA,EAAW;AAAA,IAC3B;AAEA,IAAA,IAAI,OAAO,OAAA,EAAS;AAAA,IACpB,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,KAAA,CAAM,gCAAA,EAA6B,MAAA,CAAO,KAAK,CAAA;AACvD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,4BAAuB,KAAK,CAAA;AAC1C,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF,CAAC,CAAA;AAGH,OAAA,CACG,QAAQ,QAAQ,CAAA,CAChB,YAAY,qBAAqB,CAAA,CACjC,OAAO,YAAY;AAGlB,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,CAAI,YAAA,IAAgB,EAAA;AAChD,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,aAAa,CAAA,IAAK,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,eAAe,CAAA;AAC9H,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,YAAY,CAAA,IAAK,WAAA,CAAY,WAAA,EAAY,CAAE,UAAA,CAAW,gBAAgB,CAAA;AAC3H,EAAA,MAAM,QAAA,GAAW,CAAC,WAAA,IAAe,WAAA,CAAY,QAAA,CAAS,KAAK,CAAA,IAAK,WAAA,CAAY,QAAA,CAAS,QAAQ,CAAA,IAAK,WAAA,CAAY,SAAS,OAAO,CAAA;AAE9H,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAI,MAAM,OAAO,UAAU,CAAA;AACrD,MAAA,MAAM,SAAS,QAAA,CAAS,WAAA,EAAa,EAAE,GAAA,EAAK,CAAA,EAAG,UAAU,MAAM;AAAA,MAAC,GAAG,CAAA;AACnE,MAAA,MAAM,MAAA,CAAO,OAAO,UAAU,CAAA;AAE9B,MAAA,MAAM,OAAO,GAAA,EAAI;AAAA,IACnB,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,WAAW,OAAA,EAAS;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,WAAA,EAAY,GAAI,MAAM,OAAO,SAAS,CAAA;AAC9C,MAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY,WAAW,CAAA;AAC1C,MAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,MAAA,MAAM,MAAA,CAAO,EAAA,EAAG,CAAE,KAAA,GAAQ,IAAA,EAAK;AAE/B,MAAA,MAAM,OAAO,KAAA,EAAM;AAAA,IACrB,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,WAAW,QAAA,EAAU;AACnB,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,GAAA,CAAI,iBAAA,IAAqB,gBAAA;AACpD,MAAA,MAAM,EAAE,UAAA,EAAAI,WAAAA,EAAW,GAAI,MAAM,OAAO,IAAI,CAAA;AACxC,MAAA,IAAIA,WAAAA,CAAW,UAAU,CAAA,EAAG;AAAA,MAE5B,CAAA,MAAO;AAAA,MAEP;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAGF,CAAC,CAAA;AAGH,OAAA,CAAQ,KAAA,EAAM;AAGd,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,EAAE,MAAA,EAAQ;AACjC,EAAA,OAAA,CAAQ,UAAA,EAAW;AACrB","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 toCamel(str: string): string {\n return str.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 => ` ${toCamel(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 => ` ${toCamel(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\nasync function fetchRemoteSchema(url: string, apiKey: string): Promise<any[]> {\n const schemaUrl = `${url.replace(/\\/+$/, \"\")}/api/__schema`;\n const res = await fetch(schemaUrl, {\n headers: { Authorization: `ApiKey ${apiKey}` },\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`Schema fetch failed (${res.status}): ${body}`);\n }\n return res.json();\n}\n\nfunction generateRemoteTypes(collections: any[]): string {\n let output = `// ============================================================================\n// Auto-generated by kyro generate --api\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 for (const col of collections) {\n const name = capitalize(col.slug);\n const fields = col.fields.filter((f: any) => f.name).map((f: any) => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n output += `export interface ${name} {\\n${fields.join('\\n')}\\n}\\n\\n`;\n }\n\n // Typed REST Client\n output += `// ============================================================================\n// Typed REST Client\n// ============================================================================\n\nexport interface KyroClientOptions {\n url: string;\n apiKey: string;\n fetch?: typeof globalThis.fetch;\n}\n\nexport function createKyroClient(opts: KyroClientOptions) {\n const base = opts.url.replace(/\\\\/+$/, \"\");\n const http = opts.fetch || globalThis.fetch;\n\n async function request<T>(path: string, init?: RequestInit): Promise<T> {\n const res = await http(\\`\\${base}/api\\${path}\\`, {\n headers: {\n \"Authorization\": \\`ApiKey \\${opts.apiKey}\\`,\n \"Content-Type\": \"application/json\",\n ...init?.headers,\n },\n ...init,\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(\\`Kyro API error \\${res.status}: \\${body}\\`);\n }\n return res.json();\n }\n\n function qs(params: Record<string, any>): string {\n const s = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined && v !== null) s.set(k, typeof v === \"object\" ? JSON.stringify(v) : String(v));\n }\n return s.toString();\n }\n\n return {\n${collections.map((col: any) => {\n const name = capitalize(col.slug);\n return ` ${toCamel(col.slug)}: {\n find: (args?: { where?: Record<string, any>; sort?: string; limit?: number; page?: number; draft?: boolean }) =>\n request<{ docs: ${name}[]; totalDocs: number; page: number; totalPages: number; hasNextPage: boolean; hasPrevPage: boolean }>(\\`/${col.slug}\\${args ? \"?\" + qs(args) : \"\"}\\`),\n findByID: (id: string, args?: { draft?: boolean }) =>\n request<${name}>(\\`/${col.slug}/\\${id}\\${args ? \"?\" + qs(args) : \"\"}\\`),\n findBySlug: (slug: string, args?: { draft?: boolean }) =>\n request<{ docs: ${name}[] }>(\\`/${col.slug}?where=\\${encodeURIComponent(JSON.stringify({ slug: { equals: slug } }))}\\`),\n create: (data: Partial<${name}>) =>\n request<{ doc: ${name}; message?: string }>(\\`/${col.slug}\\`, { method: \"POST\", body: JSON.stringify(data) }),\n update: (id: string, data: Partial<${name}>, args?: { baseUpdatedAt?: string }) =>\n request<{ doc: ${name}; message?: string }>(\\`/${col.slug}/\\${id}\\`, { method: \"PATCH\", body: JSON.stringify({ ...data, ...args }) }),\n delete: (id: string) =>\n request<{ doc: ${name}; message: string }>(\\`/${col.slug}/\\${id}\\`, { method: \"DELETE\" }),\n count: (args?: { where?: Record<string, any> }) =>\n request<{ totalDocs: number }>(\\`/${col.slug}/count\\${args ? \"?\" + qs(args) : \"\"}\\`),\n },`;\n}).join('\\n')}\n };\n}\n`;\n\n return output;\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 .option('--url <url>', 'URL of a running Kyro CMS instance (enables remote mode)')\n .option('--api-key <key>', 'API key for authentication (required with --url)')\n .action(async (options) => {\n if (options.url) {\n if (!options.url) {\n console.error('❌ --url is required when using --api');\n process.exit(1);\n }\n if (!options.apiKey) {\n console.error('❌ --api-key is required when using --api');\n process.exit(1);\n }\n\n const outputPath = resolve(options.output);\n\n\n try {\n const collections = await fetchRemoteSchema(options.url, options.apiKey);\n\n\n const types = generateRemoteTypes(collections);\n\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n writeFileSync(outputPath, types);\n\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n return;\n }\n\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n\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\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\n\n // Watch mode\n if (options.watch) {\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n\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\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\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// 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\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 });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n\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 });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n\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 });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n\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 });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n\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\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\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\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\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 } 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\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\n await client.end();\n } catch {\n\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\n await client.close();\n } catch {\n\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\n } else {\n\n }\n } catch {\n\n }\n }\n\n\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 +0,0 @@
1
- {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["outputPath","__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 toCamel(str: string): string {\n return str.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 => ` ${toCamel(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 => ` ${toCamel(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\nasync function fetchRemoteSchema(url: string, apiKey: string): Promise<any[]> {\n const schemaUrl = `${url.replace(/\\/+$/, \"\")}/api/__schema`;\n const res = await fetch(schemaUrl, {\n headers: { Authorization: `ApiKey ${apiKey}` },\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`Schema fetch failed (${res.status}): ${body}`);\n }\n return res.json();\n}\n\nfunction generateRemoteTypes(collections: any[]): string {\n let output = `// ============================================================================\n// Auto-generated by kyro generate --api\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 for (const col of collections) {\n const name = capitalize(col.slug);\n const fields = col.fields.filter((f: any) => f.name).map((f: any) => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n output += `export interface ${name} {\\n${fields.join('\\n')}\\n}\\n\\n`;\n }\n\n // Typed REST Client\n output += `// ============================================================================\n// Typed REST Client\n// ============================================================================\n\nexport interface KyroClientOptions {\n url: string;\n apiKey: string;\n fetch?: typeof globalThis.fetch;\n}\n\nexport function createKyroClient(opts: KyroClientOptions) {\n const base = opts.url.replace(/\\\\/+$/, \"\");\n const http = opts.fetch || globalThis.fetch;\n\n async function request<T>(path: string, init?: RequestInit): Promise<T> {\n const res = await http(\\`\\${base}/api\\${path}\\`, {\n headers: {\n \"Authorization\": \\`ApiKey \\${opts.apiKey}\\`,\n \"Content-Type\": \"application/json\",\n ...init?.headers,\n },\n ...init,\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(\\`Kyro API error \\${res.status}: \\${body}\\`);\n }\n return res.json();\n }\n\n function qs(params: Record<string, any>): string {\n const s = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined && v !== null) s.set(k, typeof v === \"object\" ? JSON.stringify(v) : String(v));\n }\n return s.toString();\n }\n\n return {\n${collections.map((col: any) => {\n const name = capitalize(col.slug);\n return ` ${toCamel(col.slug)}: {\n find: (args?: { where?: Record<string, any>; sort?: string; limit?: number; page?: number; draft?: boolean }) =>\n request<{ docs: ${name}[]; totalDocs: number; page: number; totalPages: number; hasNextPage: boolean; hasPrevPage: boolean }>(\\`/${col.slug}\\${args ? \"?\" + qs(args) : \"\"}\\`),\n findByID: (id: string, args?: { draft?: boolean }) =>\n request<${name}>(\\`/${col.slug}/\\${id}\\${args ? \"?\" + qs(args) : \"\"}\\`),\n findBySlug: (slug: string, args?: { draft?: boolean }) =>\n request<{ docs: ${name}[] }>(\\`/${col.slug}?where=\\${encodeURIComponent(JSON.stringify({ slug: { equals: slug } }))}\\`),\n create: (data: Partial<${name}>) =>\n request<{ doc: ${name}; message?: string }>(\\`/${col.slug}\\`, { method: \"POST\", body: JSON.stringify(data) }),\n update: (id: string, data: Partial<${name}>, args?: { baseUpdatedAt?: string }) =>\n request<{ doc: ${name}; message?: string }>(\\`/${col.slug}/\\${id}\\`, { method: \"PATCH\", body: JSON.stringify({ ...data, ...args }) }),\n delete: (id: string) =>\n request<{ doc: ${name}; message: string }>(\\`/${col.slug}/\\${id}\\`, { method: \"DELETE\" }),\n count: (args?: { where?: Record<string, any> }) =>\n request<{ totalDocs: number }>(\\`/${col.slug}/count\\${args ? \"?\" + qs(args) : \"\"}\\`),\n },`;\n}).join('\\n')}\n };\n}\n`;\n\n return output;\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 .option('--url <url>', 'URL of a running Kyro CMS instance (enables remote mode)')\n .option('--api-key <key>', 'API key for authentication (required with --url)')\n .action(async (options) => {\n if (options.url) {\n if (!options.url) {\n console.error('❌ --url is required when using --api');\n process.exit(1);\n }\n if (!options.apiKey) {\n console.error('❌ --api-key is required when using --api');\n process.exit(1);\n }\n\n const outputPath = resolve(options.output);\n\n\n try {\n const collections = await fetchRemoteSchema(options.url, options.apiKey);\n\n\n const types = generateRemoteTypes(collections);\n\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n writeFileSync(outputPath, types);\n\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n return;\n }\n\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n\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\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\n\n // Watch mode\n if (options.watch) {\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n\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\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\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// 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\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 });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n\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 });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n\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 });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n\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 });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n\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\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\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\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\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 } 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\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\n await client.end();\n } catch {\n\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\n await client.close();\n } catch {\n\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\n } else {\n\n }\n } catch {\n\n }\n }\n\n\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 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"client.cjs"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"client.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}