@kyro-cms/core 0.12.43 → 0.12.45

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 (311) hide show
  1. package/dist/{WebhookService-C19xR8qE.d.ts → WebhookService-CZf_na-J.d.ts} +1 -1
  2. package/dist/{WebhookService-BBcCHBo8.d.cts → WebhookService-DgIx21X-.d.cts} +1 -1
  3. package/dist/api-handler-graphql.cjs +1 -1
  4. package/dist/api-handler-graphql.js +2 -1
  5. package/dist/api-handler-trpc.cjs +1 -1
  6. package/dist/api-handler-trpc.js +2 -1
  7. package/dist/api-handler.cjs +1 -1
  8. package/dist/api-handler.js +1 -1
  9. package/dist/{base-yXdYZxFK.d.ts → base-7vJMzr4V.d.ts} +1 -1
  10. package/dist/{base-C2iwjdJQ.d.cts → base-DDEmdRqV.d.cts} +1 -1
  11. package/dist/bcryptjs-AZA6WEN2.js +2 -0
  12. package/dist/bcryptjs-WIQSWJGK.cjs +1 -0
  13. package/dist/better-sqlite3-42Q3FG3E.js +2 -0
  14. package/dist/better-sqlite3-5IISPX34.cjs +1 -0
  15. package/dist/bootstrap-7CI3NVSY.js +1 -0
  16. package/dist/bootstrap-DOOM2CNQ.cjs +1 -0
  17. package/dist/bowser-FI5JQGKZ.js +11 -0
  18. package/dist/bowser-VX6B6ZSE.cjs +10 -0
  19. package/dist/chokidar-24HVS6XD.cjs +5 -0
  20. package/dist/chokidar-43DT7CVN.js +6 -0
  21. package/dist/chunk-26Q7JXM4.cjs +3 -0
  22. package/dist/chunk-2BUODBE2.js +2 -0
  23. package/dist/chunk-2WFTETFB.js +2 -0
  24. package/dist/chunk-35PGCW3S.cjs +1 -0
  25. package/dist/chunk-3VXEK5ZW.cjs +1 -0
  26. package/dist/chunk-45TJAB5X.js +301 -0
  27. package/dist/chunk-5DWYVUQR.cjs +1 -0
  28. package/dist/chunk-5LPNEYK5.cjs +1 -0
  29. package/dist/chunk-66BJXVFJ.js +2 -0
  30. package/dist/chunk-6KRR7YHA.js +2 -0
  31. package/dist/chunk-6KUL2BSA.cjs +133 -0
  32. package/dist/chunk-6MSS5X77.js +2 -0
  33. package/dist/chunk-6QWLXJ7L.js +2 -0
  34. package/dist/chunk-6V3AP7HR.cjs +269 -0
  35. package/dist/chunk-73D2PNHD.cjs +7 -0
  36. package/dist/chunk-7ACHOBWY.cjs +13 -0
  37. package/dist/chunk-7AQSH3KR.js +2 -0
  38. package/dist/chunk-7GGZA5YU.cjs +2 -0
  39. package/dist/chunk-7I6URA6F.js +4 -0
  40. package/dist/chunk-7JWQ2PZP.cjs +1 -0
  41. package/dist/chunk-7SSFHJTR.js +57 -0
  42. package/dist/chunk-7T35572E.js +75 -0
  43. package/dist/chunk-7V67ONUD.js +4 -0
  44. package/dist/chunk-7WMMKGEO.cjs +1 -0
  45. package/dist/chunk-A73AVVFR.js +11 -0
  46. package/dist/chunk-AK754S3T.cjs +2 -0
  47. package/dist/chunk-AMGJ5AFH.cjs +1 -0
  48. package/dist/chunk-ATBH763U.js +2 -0
  49. package/dist/chunk-B3GDQ7UI.cjs +114 -0
  50. package/dist/chunk-BAVN7VDR.cjs +1 -0
  51. package/dist/chunk-BCEE4NBZ.cjs +2 -0
  52. package/dist/{chunk-J4252I5B.cjs → chunk-BHR7OAU4.cjs} +4 -4
  53. package/dist/chunk-BLH2MRK4.js +2 -0
  54. package/dist/chunk-BPMA2ECA.js +10 -0
  55. package/dist/chunk-BUNLC3II.cjs +1 -0
  56. package/dist/chunk-C2PXMVR5.js +2 -0
  57. package/dist/chunk-CGPAS4U5.js +4 -0
  58. package/dist/chunk-DS5DE5BU.js +2 -0
  59. package/dist/chunk-DUO523BH.cjs +1 -0
  60. package/dist/chunk-DVWYO3KK.cjs +1 -0
  61. package/dist/chunk-E27KEZPT.js +2 -0
  62. package/dist/chunk-EHWUALGH.cjs +1 -0
  63. package/dist/chunk-EN65ZEK2.cjs +2 -0
  64. package/dist/chunk-EOOZDOL7.js +3 -0
  65. package/dist/chunk-EZIDQBXI.cjs +1 -0
  66. package/dist/chunk-F4ITQ6XQ.cjs +3 -0
  67. package/dist/chunk-FLM37UVD.js +2 -0
  68. package/dist/chunk-GIS6X43A.cjs +3 -0
  69. package/dist/chunk-GNEVCEJU.cjs +3 -0
  70. package/dist/chunk-GNOSG3PK.cjs +1 -0
  71. package/dist/chunk-HLAEJB5R.js +384 -0
  72. package/dist/chunk-HPYH7GTS.cjs +1 -0
  73. package/dist/chunk-HT44I66C.js +24 -0
  74. package/dist/chunk-HTYVI2HK.cjs +9 -0
  75. package/dist/chunk-ICVQWR2A.js +2 -0
  76. package/dist/chunk-IP6JUEH3.js +3 -0
  77. package/dist/chunk-IPXOY4RI.js +2 -0
  78. package/dist/chunk-J6U5LWZ7.js +11 -0
  79. package/dist/{chunk-UHFDH3PG.js → chunk-JT36FTHY.cjs} +4 -4
  80. package/dist/chunk-JUJZOG6P.js +2 -0
  81. package/dist/{chunk-2BTRHVT3.cjs → chunk-K7YNEKVE.js} +5 -4
  82. package/dist/chunk-KCHPADCH.cjs +7 -0
  83. package/dist/chunk-KH7LM52S.js +3 -0
  84. package/dist/chunk-LEBM6ZSZ.cjs +10 -0
  85. package/dist/chunk-LQ3YZTPU.cjs +15 -0
  86. package/dist/chunk-LY7N3UHH.cjs +23 -0
  87. package/dist/chunk-M6ESQ5TE.cjs +56 -0
  88. package/dist/chunk-MCZ3YZ2L.js +2 -0
  89. package/dist/chunk-MP5VC5ER.cjs +1 -0
  90. package/dist/chunk-MVX2PYJJ.cjs +1 -0
  91. package/dist/chunk-MY42EWZP.js +2 -0
  92. package/dist/chunk-MZOWPV4D.js +20 -0
  93. package/dist/chunk-NGNJSUGL.cjs +1 -0
  94. package/dist/chunk-NWCREF47.js +3 -0
  95. package/dist/chunk-OMWQVPV7.js +14 -0
  96. package/dist/chunk-ORG67NXX.js +3 -0
  97. package/dist/chunk-OSAVAYJZ.js +16 -0
  98. package/dist/chunk-P7XYIKL6.cjs +300 -0
  99. package/dist/chunk-PBOZJOKN.js +2 -0
  100. package/dist/chunk-PITMDQYN.cjs +18 -0
  101. package/dist/chunk-PL5AIE6F.js +2 -0
  102. package/dist/chunk-QC4YXUBT.cjs +383 -0
  103. package/dist/chunk-QDHP5E4P.cjs +2 -0
  104. package/dist/chunk-QYI3GOHF.cjs +1 -0
  105. package/dist/chunk-R3NEPC4I.js +3 -0
  106. package/dist/chunk-R4LXRAMX.js +2 -0
  107. package/dist/chunk-S5HTTLN7.cjs +2 -0
  108. package/dist/chunk-STX5V7HG.cjs +20 -0
  109. package/dist/chunk-SVYUTQVE.js +115 -0
  110. package/dist/chunk-SYEP5QLG.js +19 -0
  111. package/dist/chunk-TR3ZS3T3.js +3 -0
  112. package/dist/chunk-UB5TJHQR.js +2 -0
  113. package/dist/chunk-UD6ZPO7T.js +2 -0
  114. package/dist/chunk-UK43ADRO.js +270 -0
  115. package/dist/chunk-UNYXWPLZ.cjs +2 -0
  116. package/dist/chunk-VBPAAQEF.js +2 -0
  117. package/dist/chunk-VIUU4D5I.js +2 -0
  118. package/dist/chunk-VJ2WMKPK.js +21 -0
  119. package/dist/chunk-VOQUO2EZ.cjs +74 -0
  120. package/dist/chunk-VQ53TFYA.cjs +1 -0
  121. package/dist/chunk-VRZC4TTF.cjs +1 -0
  122. package/dist/chunk-W46LZ4MY.js +2 -0
  123. package/dist/chunk-WCFHS7EZ.cjs +1 -0
  124. package/dist/chunk-WGESLAWV.js +8 -0
  125. package/dist/chunk-WSP7PSXC.js +8 -0
  126. package/dist/chunk-X54XZACS.cjs +10 -0
  127. package/dist/{chunk-Q2UYCYKV.js → chunk-XBH4YMC7.js} +5 -4
  128. package/dist/chunk-XDE7CFV6.cjs +19 -0
  129. package/dist/chunk-XOACKBG7.js +4 -0
  130. package/dist/chunk-XPPVX4GQ.cjs +1 -0
  131. package/dist/chunk-ZJE3VAAW.js +134 -0
  132. package/dist/chunk-ZO3YB5DK.cjs +1 -0
  133. package/dist/chunk-ZOVH6QT5.cjs +1 -0
  134. package/dist/chunk-ZYDOF65Q.cjs +1 -0
  135. package/dist/cli/index.cjs +197 -78
  136. package/dist/cli/index.js +198 -78
  137. package/dist/client.cjs +1 -1
  138. package/dist/client.d.cts +1 -1
  139. package/dist/client.d.ts +1 -1
  140. package/dist/client.js +2 -1
  141. package/dist/d1-5ZQJOFDX.cjs +1 -0
  142. package/dist/d1-VPH75GI2.js +2 -0
  143. package/dist/dist-es-3SSNUZST.cjs +1 -0
  144. package/dist/dist-es-6SVFVYN3.js +1 -0
  145. package/dist/dist-es-6TQTDPE7.js +2 -0
  146. package/dist/dist-es-A5OF2STN.cjs +2 -0
  147. package/dist/dist-es-BOW5V247.cjs +6 -0
  148. package/dist/dist-es-CRIMATLL.cjs +2 -0
  149. package/dist/dist-es-DL3VLVP6.cjs +1 -0
  150. package/dist/dist-es-EMUQ6ZNZ.js +3 -0
  151. package/dist/dist-es-MNIQZC4U.js +2 -0
  152. package/dist/dist-es-P25IKLBI.cjs +1 -0
  153. package/dist/dist-es-SJ76GYCI.js +2 -0
  154. package/dist/dist-es-SRPWSAF4.cjs +1 -0
  155. package/dist/dist-es-T2H2W5BX.cjs +3 -0
  156. package/dist/dist-es-TX4DBXEW.js +3 -0
  157. package/dist/dist-es-U4ZB3ZDA.js +7 -0
  158. package/dist/dist-es-XZBHIIKY.js +4 -0
  159. package/dist/drizzle/index.cjs +1 -1
  160. package/dist/drizzle/index.d.cts +2 -2
  161. package/dist/drizzle/index.d.ts +2 -2
  162. package/dist/drizzle/index.js +1 -1
  163. package/dist/drizzle-orm-47ELDEM6.cjs +1 -0
  164. package/dist/drizzle-orm-7YTX5NTT.js +1 -0
  165. package/dist/event-streams-25YJ2Z6R.js +1 -0
  166. package/dist/event-streams-JBMWCI2O.cjs +1 -0
  167. package/dist/fields/index.cjs +1 -1
  168. package/dist/fields/index.js +1 -1
  169. package/dist/fs-DGKZLRM6.cjs +1 -0
  170. package/dist/fs-YZJ5FM6J.js +2 -0
  171. package/dist/graphql/index.cjs +1 -1
  172. package/dist/graphql/index.d.cts +2 -2
  173. package/dist/graphql/index.d.ts +2 -2
  174. package/dist/graphql/index.js +1 -1
  175. package/dist/{index-DTz6u7w9.d.cts → index-BJ1rwHxk.d.cts} +1 -1
  176. package/dist/{index-BeQtbl3z.d.ts → index-BTjlptCL.d.ts} +1 -1
  177. package/dist/index.cjs +28 -46
  178. package/dist/index.d.cts +23 -9
  179. package/dist/index.d.ts +23 -9
  180. package/dist/index.js +29 -46
  181. package/dist/integration.cjs +1 -1
  182. package/dist/integration.js +1 -1
  183. package/dist/jsonwebtoken-DFB6ZBZA.cjs +8 -0
  184. package/dist/jsonwebtoken-S7BG2YWK.js +9 -0
  185. package/dist/lib-5QYYN6ML.cjs +12 -0
  186. package/dist/lib-IYW32OER.js +13 -0
  187. package/dist/loadSso-JY4WDQPS.cjs +2 -0
  188. package/dist/loadSso-YTG2GQGW.js +3 -0
  189. package/dist/local-VDCSEMC2.js +1 -0
  190. package/dist/local-YCWBUF3R.cjs +1 -0
  191. package/dist/media-3Z6YW5J4.cjs +1 -0
  192. package/dist/media-HK2IZMUZ.js +1 -0
  193. package/dist/mongo-auth-adapter-7K64Y2QM.cjs +1 -0
  194. package/dist/mongo-auth-adapter-BUKINEZL.js +1 -0
  195. package/dist/mongodb/index.cjs +1 -1
  196. package/dist/mongodb/index.d.cts +2 -2
  197. package/dist/mongodb/index.d.ts +2 -2
  198. package/dist/mongodb/index.js +1 -1
  199. package/dist/nodemailer-AXROO37D.js +54 -0
  200. package/dist/nodemailer-IDML4L6W.cjs +53 -0
  201. package/dist/postgres-auth-adapter-2M4RNEY3.cjs +1 -0
  202. package/dist/postgres-auth-adapter-MKSHIJDL.js +1 -0
  203. package/dist/postgres-js-3Y54EXVQ.cjs +1 -0
  204. package/dist/postgres-js-INQPBHJP.js +1 -0
  205. package/dist/redis-adapter-EGMUN65D.cjs +1 -0
  206. package/dist/redis-adapter-SXOXLHNH.js +1 -0
  207. package/dist/rest/index.cjs +1 -1
  208. package/dist/rest/index.d.cts +5 -5
  209. package/dist/rest/index.d.ts +5 -5
  210. package/dist/rest/index.js +1 -1
  211. package/dist/schema-RT6WSUYC.cjs +1 -0
  212. package/dist/schema-XC5ISGNR.js +2 -0
  213. package/dist/signin-KZBIAHGS.js +3 -0
  214. package/dist/signin-VFBLX7EL.cjs +2 -0
  215. package/dist/sqlite-adapter-DV7ZX2EJ.js +1 -0
  216. package/dist/sqlite-adapter-ZTABLT2X.cjs +1 -0
  217. package/dist/src-6LAUXXDM.cjs +1 -0
  218. package/dist/src-GZRZ4VAO.js +1 -0
  219. package/dist/sso-oidc-54BIRYR6.cjs +2 -0
  220. package/dist/sso-oidc-SX5OIQGG.js +3 -0
  221. package/dist/sts-HVGDJYIF.js +3 -0
  222. package/dist/sts-YLXXIB3X.cjs +2 -0
  223. package/dist/templates/index.cjs +1 -1
  224. package/dist/templates/index.d.cts +1 -1
  225. package/dist/templates/index.d.ts +1 -1
  226. package/dist/templates/index.js +1 -1
  227. package/dist/trpc/index.cjs +1 -1
  228. package/dist/trpc/index.d.cts +7 -7
  229. package/dist/trpc/index.d.ts +7 -7
  230. package/dist/trpc/index.js +1 -1
  231. package/dist/{types-CaXXmV9h.d.ts → types-CYGXsNcJ.d.ts} +5 -5
  232. package/dist/{types-BjivdGbU.d.cts → types-DOKMyC3y.d.cts} +5 -5
  233. package/dist/ws/index.cjs +1 -1
  234. package/dist/ws/index.js +1 -1
  235. package/package.json +2 -2
  236. package/dist/bootstrap-ROSTPMVL.js +0 -1
  237. package/dist/bootstrap-WW5NJ6EB.cjs +0 -1
  238. package/dist/chunk-3CVLI5C5.cjs +0 -3
  239. package/dist/chunk-3Q2WUG63.cjs +0 -2
  240. package/dist/chunk-3RSMK4DA.cjs +0 -2
  241. package/dist/chunk-4IGWJMBY.cjs +0 -2
  242. package/dist/chunk-4ORJMSJU.cjs +0 -1
  243. package/dist/chunk-4RMFCTWH.js +0 -1
  244. package/dist/chunk-5B6X2GBJ.js +0 -2
  245. package/dist/chunk-5J6HXUF6.js +0 -1
  246. package/dist/chunk-5KOQYQEE.js +0 -1
  247. package/dist/chunk-5SEHX7ON.js +0 -1
  248. package/dist/chunk-6ROHVUXF.js +0 -1
  249. package/dist/chunk-6SPPR5JZ.js +0 -3
  250. package/dist/chunk-7IVN6TTY.js +0 -133
  251. package/dist/chunk-AHSFSERC.cjs +0 -1
  252. package/dist/chunk-B5XWYVWK.js +0 -1
  253. package/dist/chunk-BGX27ZRG.cjs +0 -300
  254. package/dist/chunk-C2W5PSHC.js +0 -300
  255. package/dist/chunk-CCUQZ66T.cjs +0 -133
  256. package/dist/chunk-D5P2IPGX.cjs +0 -3
  257. package/dist/chunk-EPMGPNBE.js +0 -1
  258. package/dist/chunk-FHJJKFAU.cjs +0 -1
  259. package/dist/chunk-FVZ5RFLO.js +0 -2
  260. package/dist/chunk-FZ6Q2EBJ.cjs +0 -20
  261. package/dist/chunk-G3J2EU5D.cjs +0 -1
  262. package/dist/chunk-G7SSHELM.cjs +0 -1
  263. package/dist/chunk-GKYEJ2UF.js +0 -1
  264. package/dist/chunk-GO34AOBZ.cjs +0 -1
  265. package/dist/chunk-GYQMNXXW.cjs +0 -114
  266. package/dist/chunk-HLSB2MCK.js +0 -1
  267. package/dist/chunk-HQP2Y7QQ.js +0 -251
  268. package/dist/chunk-HS2KNFAB.cjs +0 -2
  269. package/dist/chunk-HVXO3OFB.cjs +0 -1
  270. package/dist/chunk-IETGL7WJ.js +0 -1
  271. package/dist/chunk-IFJ73O3A.cjs +0 -1
  272. package/dist/chunk-ILEZ3NYX.cjs +0 -2
  273. package/dist/chunk-INB4LNA6.js +0 -90
  274. package/dist/chunk-K6WUOU6P.js +0 -1
  275. package/dist/chunk-KD7LUCFY.cjs +0 -1
  276. package/dist/chunk-KDNYHLD2.js +0 -1
  277. package/dist/chunk-LHW4R367.js +0 -1
  278. package/dist/chunk-MIOMMB23.cjs +0 -1
  279. package/dist/chunk-N5VNHUJS.cjs +0 -4
  280. package/dist/chunk-NRLIGDYF.js +0 -1
  281. package/dist/chunk-NY47CFVP.cjs +0 -1
  282. package/dist/chunk-NZJAGASC.cjs +0 -251
  283. package/dist/chunk-OG7CNQGU.js +0 -1
  284. package/dist/chunk-PP5S2UBV.js +0 -0
  285. package/dist/chunk-PP7W5UKL.js +0 -2
  286. package/dist/chunk-Q3Q7BJVQ.cjs +0 -1
  287. package/dist/chunk-QCA3AP3M.cjs +0 -1
  288. package/dist/chunk-QOCHBPMK.js +0 -2
  289. package/dist/chunk-QYFU5Y7S.js +0 -3
  290. package/dist/chunk-RHCWCG3O.js +0 -114
  291. package/dist/chunk-SK2Q4PRV.cjs +0 -90
  292. package/dist/chunk-TFBHE5FF.cjs +0 -1
  293. package/dist/chunk-UBRYJP2G.js +0 -1
  294. package/dist/chunk-V65NPSR5.cjs +0 -1
  295. package/dist/chunk-VGQ4VUG6.js +0 -2
  296. package/dist/chunk-W7C6SJXZ.js +0 -20
  297. package/dist/chunk-WIZ6C5QZ.cjs +0 -1
  298. package/dist/chunk-ZIWJJRWQ.js +0 -4
  299. package/dist/chunk-ZUVP4UK7.cjs +0 -1
  300. package/dist/media-L5XDD47D.js +0 -1
  301. package/dist/media-OUBQTIQP.cjs +0 -1
  302. package/dist/mongo-auth-adapter-5TJO5J5U.js +0 -1
  303. package/dist/mongo-auth-adapter-JVE5M3S4.cjs +0 -1
  304. package/dist/postgres-auth-adapter-33QOIRXT.js +0 -1
  305. package/dist/postgres-auth-adapter-JKDYYULH.cjs +0 -1
  306. package/dist/redis-adapter-NN3H4GRX.js +0 -1
  307. package/dist/redis-adapter-OUKQGYCH.cjs +0 -1
  308. package/dist/schema-HIUSHSUI.cjs +0 -1
  309. package/dist/schema-KFYUM674.js +0 -1
  310. package/dist/sqlite-adapter-GTTVSXRV.cjs +0 -1
  311. package/dist/sqlite-adapter-UPANATIW.js +0 -1
@@ -0,0 +1,2 @@
1
+ import {createRequire}from'module';import {a}from'./chunk-BPMA2ECA.js';import {g as g$1,e}from'./chunk-C2PXMVR5.js';import {randomUUID,randomBytes}from'crypto';createRequire(import.meta.url);
2
+ g$1();var c=e(a(),1);var g=class{db;adapter;prefix;sessionTTL;refreshTokenTTL;indexesEnsured=false;constructor(e){this.db=e.db,this.adapter=e.adapter,this.prefix=e.collectionPrefix||"",this.sessionTTL=e.sessionTTL||86400,this.refreshTokenTTL=e.refreshTokenTTL||604800;}getDatabase(){let e=typeof this.db=="function"?this.db():this.db;if(!e&&this.adapter&&(this.adapter.db?e=this.adapter.db:this.adapter.client&&(this.adapter.db=this.adapter.client.db(this.adapter.database||"kyro_cms"),e=this.adapter.db)),!e)throw new Error("MongoDB database not initialized");return e}col(e){return this.getDatabase().collection(`${this.prefix}${e}`)}async connect(){this.indexesEnsured||await this.ensureIndexes();}async disconnect(){}async ensureIndexes(){await this.col("users").createIndex({email:1},{unique:true}),await this.col("users").createIndex({tenantId:1}),await this.col("users").createIndex({role:1}),await this.col("sessions").createIndex({token:1},{unique:true}),await this.col("sessions").createIndex({refreshToken:1}),await this.col("sessions").createIndex({userId:1}),await this.col("sessions").createIndex({expiresAt:1},{expireAfterSeconds:0}),await this.col("audit_logs").createIndex({timestamp:-1}),await this.col("audit_logs").createIndex({userId:1}),await this.col("audit_logs").createIndex({action:1}),await this.col("audit_logs").createIndex({resource:1}),await this.col("password_history").createIndex({userId:1,createdAt:-1}),await this.col("lockouts").createIndex({userId:1},{unique:true}),await this.col("lockouts").createIndex({lockedUntil:1}),this.indexesEnsured=true;}async createUser(e){let s=randomUUID(),t=new Date,i=await this.hashPassword(e.password),r={_id:s,name:e.name||null,email:e.email.toLowerCase(),passwordHash:i,role:e.role||"customer",avatar:e.avatar||null,tenantId:e.tenantId||null,emailVerified:false,locked:false,lastLogin:null,failedLoginAttempts:0,createdAt:t,updatedAt:t};return await this.col("users").insertOne(r),this.docToAuthUser(r)}async findUserByEmail(e){let s=await this.col("users").findOne({email:e.toLowerCase()});return s?this.docToAuthUser(s):null}async findUserById(e){let s=await this.col("users").findOne({_id:e});return s?this.docToAuthUser(s):null}async updateUser(e,s){let t={updatedAt:new Date};s.name!==void 0&&(t.name=s.name),s.email!==void 0&&(t.email=s.email),s.passwordHash!==void 0&&(t.passwordHash=s.passwordHash),s.role!==void 0&&(t.role=s.role),s.avatar!==void 0&&(t.avatar=s.avatar),s.tenantId!==void 0&&(t.tenantId=s.tenantId),s.emailVerified!==void 0&&(t.emailVerified=s.emailVerified),s.locked!==void 0&&(t.locked=s.locked),s.lastLogin!==void 0&&(t.lastLogin=s.lastLogin?new Date(s.lastLogin):null),s.failedLoginAttempts!==void 0&&(t.failedLoginAttempts=s.failedLoginAttempts);let i=await this.col("users").findOneAndUpdate({_id:e},{$set:t},{returnDocument:"after"});return i?this.docToAuthUser(i):null}async deleteUser(e){return (await this.col("users").deleteOne({_id:e})).deletedCount>0}async verifyPassword(e,s){let t=await this.findUserByEmail(e);if(!t)return null;let i=await this.col("users").findOne({email:e.toLowerCase()},{projection:{passwordHash:1}});return i?.passwordHash&&await c.default.compare(s,i.passwordHash)?t:null}async hashPassword(e){return c.default.hash(e,12)}async createSession(e,s){let t=randomUUID(),i=randomBytes(32).toString("base64url"),r=randomBytes(32).toString("base64url"),o=new Date,u=new Date(o.getTime()+this.sessionTTL*1e3),d={_id:t,userId:e,token:i,refreshToken:r,ipAddress:s?.ipAddress||null,userAgent:s?.userAgent||null,expiresAt:u,createdAt:o};return await this.col("sessions").insertOne(d),this.docToSession(d)}async findSessionByToken(e){let s=await this.col("sessions").findOne({token:e,expiresAt:{$gt:new Date}});return s?this.docToSession(s):null}async findSessionByRefreshToken(e){let s=await this.col("sessions").findOne({refreshToken:e,expiresAt:{$gt:new Date}});return s?this.docToSession(s):null}async deleteSession(e){return (await this.col("sessions").deleteOne({_id:e})).deletedCount>0}async deleteUserSessions(e){return (await this.col("sessions").deleteMany({userId:e})).deletedCount}async hasAnyUsers(){return await this.col("users").countDocuments()>0}async addPasswordToHistory(e,s){await this.col("password_history").insertOne({userId:e,passwordHash:s,createdAt:new Date});}async getPasswordHistory(e,s=5){return (await this.col("password_history").find({userId:e}).sort({createdAt:-1}).limit(s).toArray()).map(i=>i.passwordHash)}async isPasswordInHistory(e,s,t=5){let i=await this.getPasswordHistory(s,t);for(let r of i)if(await c.default.compare(e,r))return true;return false}async findAuditLogs(e){let{limit:s=50,offset:t=0,userId:i,action:r,resource:o,resourceId:u,success:d,startDate:f,endDate:h}=e,a={};i&&(a.userId=i),r&&(Array.isArray(r)?a.action={$in:r}:a.action=r),o&&(a.resource=o),u&&(a.resourceId=u),d!==void 0&&(a.success=d),(f||h)&&(a.timestamp={},f&&(a.timestamp.$gte=f),h&&(a.timestamp.$lte=h));let w=await this.col("audit_logs").countDocuments(a);return {logs:(await this.col("audit_logs").find(a).sort({timestamp:-1}).skip(t).limit(s).toArray()).map(n=>({id:n._id,timestamp:n.timestamp,action:n.action,userId:n.userId||void 0,userEmail:n.userEmail||void 0,role:n.role||void 0,resource:n.resource,resourceId:n.resourceId||void 0,changes:n.changes||void 0,ipAddress:n.ipAddress||void 0,userAgent:n.userAgent||void 0,success:n.success,error:n.error||void 0,metadata:n.metadata||void 0})),total:w}}async createAuditLog(e){let s=randomUUID(),t=new Date;return await this.col("audit_logs").insertOne({_id:s,action:e.action,userId:e.userId||null,userEmail:e.userEmail||null,role:e.role||null,resource:e.resource,resourceId:e.resourceId||null,changes:e.changes||null,ipAddress:e.ipAddress||null,userAgent:e.userAgent||null,success:e.success,error:e.error||null,metadata:e.metadata||null,timestamp:t}),{...e,id:s,timestamp:t}}docToAuthUser(e){return {id:e._id,name:e.name||void 0,email:e.email,passwordHash:e.passwordHash||void 0,role:e.role,tenantId:e.tenantId||void 0,avatar:e.avatar||void 0,emailVerified:e.emailVerified||false,locked:e.locked||false,lastLogin:e.lastLogin?.toISOString?.()||e.lastLogin||void 0,failedLoginAttempts:e.failedLoginAttempts||0,createdAt:e.createdAt?.toISOString?.()||e.createdAt,updatedAt:e.updatedAt?.toISOString?.()||e.updatedAt}}docToSession(e){return {id:e._id,userId:e.userId,token:e.token,refreshToken:e.refreshToken||void 0,expiresAt:e.expiresAt?.toISOString?.()||e.expiresAt,createdAt:e.createdAt?.toISOString?.()||e.createdAt,ipAddress:e.ipAddress||void 0,userAgent:e.userAgent||void 0}}async createEmailVerificationToken(e){let s=randomBytes(32).toString("hex"),t=new Date(Date.now()+1440*60*1e3),i=await import('./lib-IYW32OER.js');return await this.db.collection("email_verifications").insertOne({userId:new i.ObjectId(e),token:s,expiresAt:t,createdAt:new Date}),{token:s,expiresAt:t}}async verifyEmailToken(e){let s=await this.db.collection("email_verifications").findOne({token:e});return s?s.expiresAt<new Date?{success:false,error:"Verification token has expired"}:(await this.db.collection("users").updateOne({_id:s.userId},{$set:{emailVerified:true}}),await this.db.collection("email_verifications").deleteOne({_id:s._id}),{success:true,userId:s.userId.toString()}):{success:false,error:"Invalid verification token"}}async createPasswordResetToken(e){let s=await this.findUserByEmail(e);if(!s)return {token:"",expiresAt:new Date,error:"User not found"};let t=randomBytes(32).toString("hex"),i=new Date(Date.now()+3600*1e3),r=await import('./lib-IYW32OER.js');return await this.db.collection("password_resets").insertOne({userId:new r.ObjectId(s.id),token:t,expiresAt:i,createdAt:new Date}),{token:t,expiresAt:i}}async resetPasswordWithToken(e,s){let t=await this.db.collection("password_resets").findOne({token:e});if(!t)return {success:false,error:"Invalid reset token"};if(t.expiresAt<new Date)return {success:false,error:"Reset token has expired"};if(t.usedAt)return {success:false,error:"Reset token has already been used"};let i=await this.hashPassword(s);return await this.db.collection("users").updateOne({_id:t.userId},{$set:{passwordHash:i,updatedAt:new Date}}),await this.db.collection("password_resets").updateOne({_id:t._id},{$set:{usedAt:new Date}}),await this.db.collection("sessions").deleteMany({userId:t.userId}),{success:true}}};export{g as a};