sa2kit 2.0.4 → 3.1.0

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 (354) hide show
  1. package/dist/{UniversalFileService-GsP6D3Rc.d.ts → UniversalFileService-CC4d3wkc.d.ts} +2 -2
  2. package/dist/{UniversalFileService-BpvbZitV.d.mts → UniversalFileService-CzAE_G4V.d.mts} +2 -2
  3. package/dist/ai/llm/ui/miniapp/index.d.mts +2 -2
  4. package/dist/ai/llm/ui/miniapp/index.d.ts +2 -2
  5. package/dist/ai/llm/ui/rn/index.d.mts +2 -2
  6. package/dist/ai/llm/ui/rn/index.d.ts +2 -2
  7. package/dist/ai/llm/ui/web/index.d.mts +3 -3
  8. package/dist/ai/llm/ui/web/index.d.ts +3 -3
  9. package/dist/analytics/index.d.mts +1 -1
  10. package/dist/analytics/index.d.ts +1 -1
  11. package/dist/business/index.d.mts +1 -5
  12. package/dist/business/index.d.ts +1 -5
  13. package/dist/business/index.js +34 -1135
  14. package/dist/business/index.js.map +1 -1
  15. package/dist/business/index.mjs +5 -1105
  16. package/dist/business/index.mjs.map +1 -1
  17. package/dist/calendar/routes/index.d.mts +74 -1
  18. package/dist/calendar/routes/index.d.ts +74 -1
  19. package/dist/calendar/routes/index.js +186 -97
  20. package/dist/calendar/routes/index.js.map +1 -1
  21. package/dist/calendar/routes/index.mjs +178 -99
  22. package/dist/calendar/routes/index.mjs.map +1 -1
  23. package/dist/{chunk-RJP2BRJD.mjs → chunk-4OOANEJV.mjs} +2 -2
  24. package/dist/{chunk-RJP2BRJD.mjs.map → chunk-4OOANEJV.mjs.map} +1 -1
  25. package/dist/chunk-5FUAQLGC.mjs +14 -0
  26. package/dist/chunk-5FUAQLGC.mjs.map +1 -0
  27. package/dist/{chunk-IIVNHQEI.mjs → chunk-5GBDDXYL.mjs} +4 -3
  28. package/dist/chunk-5GBDDXYL.mjs.map +1 -0
  29. package/dist/{chunk-S732H246.js → chunk-6PMXAK7F.js} +2 -2
  30. package/dist/{chunk-S732H246.js.map → chunk-6PMXAK7F.js.map} +1 -1
  31. package/dist/chunk-6YLCRWKM.mjs +8 -0
  32. package/dist/chunk-6YLCRWKM.mjs.map +1 -0
  33. package/dist/chunk-CAYOQDBR.js +78 -0
  34. package/dist/chunk-CAYOQDBR.js.map +1 -0
  35. package/dist/{chunk-PTMSDNGO.mjs → chunk-CX2GHCAI.mjs} +4 -75
  36. package/dist/chunk-CX2GHCAI.mjs.map +1 -0
  37. package/dist/chunk-EBHPTFG6.mjs +82 -0
  38. package/dist/chunk-EBHPTFG6.mjs.map +1 -0
  39. package/dist/chunk-HQLKOXG7.js +16 -0
  40. package/dist/chunk-HQLKOXG7.js.map +1 -0
  41. package/dist/chunk-IS7O4LPI.js +146 -0
  42. package/dist/chunk-IS7O4LPI.js.map +1 -0
  43. package/dist/chunk-LGHUCQIU.js +93 -0
  44. package/dist/chunk-LGHUCQIU.js.map +1 -0
  45. package/dist/chunk-LKBIVQBT.mjs +34 -0
  46. package/dist/chunk-LKBIVQBT.mjs.map +1 -0
  47. package/dist/chunk-MIDXG6LS.js +32 -0
  48. package/dist/chunk-MIDXG6LS.js.map +1 -0
  49. package/dist/chunk-NDGHXVGS.js +25 -0
  50. package/dist/chunk-NDGHXVGS.js.map +1 -0
  51. package/dist/chunk-PA4ELVGI.js +20 -0
  52. package/dist/chunk-PA4ELVGI.js.map +1 -0
  53. package/dist/chunk-Q5VFBPMG.mjs +76 -0
  54. package/dist/chunk-Q5VFBPMG.mjs.map +1 -0
  55. package/dist/{chunk-WZDTNDYR.js → chunk-QSKLQX6H.js} +11 -11
  56. package/dist/{chunk-WZDTNDYR.js.map → chunk-QSKLQX6H.js.map} +1 -1
  57. package/dist/{chunk-QQ2WFYOD.js → chunk-S6YSGVWD.js} +4 -76
  58. package/dist/chunk-S6YSGVWD.js.map +1 -0
  59. package/dist/chunk-TNJ6LYX7.mjs +18 -0
  60. package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
  61. package/dist/chunk-TTYCVBIQ.mjs +144 -0
  62. package/dist/chunk-TTYCVBIQ.mjs.map +1 -0
  63. package/dist/chunk-VJNDOYEC.js +41 -0
  64. package/dist/chunk-VJNDOYEC.js.map +1 -0
  65. package/dist/{chunk-J77KR2EV.mjs → chunk-WJ7IMUEJ.mjs} +3 -3
  66. package/dist/{chunk-J77KR2EV.mjs.map → chunk-WJ7IMUEJ.mjs.map} +1 -1
  67. package/dist/chunk-YTGUIRRH.js +10 -0
  68. package/dist/chunk-YTGUIRRH.js.map +1 -0
  69. package/dist/chunk-ZF7DKR5A.mjs +26 -0
  70. package/dist/chunk-ZF7DKR5A.mjs.map +1 -0
  71. package/dist/common/auth/client/index.d.mts +3209 -0
  72. package/dist/common/auth/client/index.d.ts +3209 -0
  73. package/dist/common/auth/client/index.js +13 -0
  74. package/dist/common/auth/client/index.mjs +4 -0
  75. package/dist/common/auth/components/index.d.mts +140 -0
  76. package/dist/common/auth/components/index.d.ts +140 -0
  77. package/dist/common/auth/components/index.js +899 -0
  78. package/dist/common/auth/components/index.js.map +1 -0
  79. package/dist/common/auth/components/index.mjs +875 -0
  80. package/dist/common/auth/components/index.mjs.map +1 -0
  81. package/dist/common/auth/hooks/index.d.mts +48 -0
  82. package/dist/common/auth/hooks/index.d.ts +48 -0
  83. package/dist/common/auth/hooks/index.js +19 -0
  84. package/dist/common/auth/hooks/index.mjs +6 -0
  85. package/dist/common/auth/index.d.mts +11 -7
  86. package/dist/common/auth/index.d.ts +11 -7
  87. package/dist/common/auth/index.js +7 -19
  88. package/dist/common/auth/index.mjs +3 -3
  89. package/dist/common/auth/react/index.d.mts +3056 -0
  90. package/dist/common/auth/react/index.d.ts +3056 -0
  91. package/dist/common/auth/react/index.js +31 -0
  92. package/dist/common/auth/react/index.js.map +1 -0
  93. package/dist/common/auth/react/index.mjs +21 -0
  94. package/dist/common/auth/react/index.mjs.map +1 -0
  95. package/dist/common/auth/rn/index.d.mts +3122 -0
  96. package/dist/common/auth/rn/index.d.ts +3122 -0
  97. package/dist/common/auth/rn/index.js +316 -0
  98. package/dist/common/auth/rn/index.js.map +1 -0
  99. package/dist/common/auth/rn/index.mjs +298 -0
  100. package/dist/common/auth/rn/index.mjs.map +1 -0
  101. package/dist/common/auth/schema/index.d.mts +1479 -0
  102. package/dist/common/auth/schema/index.d.ts +1479 -0
  103. package/dist/common/auth/schema/index.js +49 -0
  104. package/dist/common/auth/schema/index.mjs +4 -0
  105. package/dist/common/auth/server/index.d.mts +81 -25
  106. package/dist/common/auth/server/index.d.ts +81 -25
  107. package/dist/common/auth/server/index.js +146 -98
  108. package/dist/common/auth/server/index.js.map +1 -1
  109. package/dist/common/auth/server/index.mjs +125 -5
  110. package/dist/common/auth/server/index.mjs.map +1 -1
  111. package/dist/common/auth/services/index.d.mts +14 -0
  112. package/dist/common/auth/services/index.d.ts +14 -0
  113. package/dist/common/auth/services/index.js +20 -0
  114. package/dist/common/auth/services/index.js.map +1 -0
  115. package/dist/common/auth/services/index.mjs +13 -0
  116. package/dist/common/auth/services/index.mjs.map +1 -0
  117. package/dist/common/file/server/index.js +32 -32
  118. package/dist/common/file/server/index.mjs +3 -3
  119. package/dist/common/index.d.mts +13 -8
  120. package/dist/common/index.d.ts +13 -8
  121. package/dist/common/index.js +19 -18
  122. package/dist/common/index.mjs +8 -7
  123. package/dist/common/storage/index.js +13 -12
  124. package/dist/common/storage/index.mjs +3 -2
  125. package/dist/festivalCard/index.d.mts +3 -3
  126. package/dist/festivalCard/index.d.ts +3 -3
  127. package/dist/festivalCard/routes/index.d.mts +1 -1
  128. package/dist/festivalCard/routes/index.d.ts +1 -1
  129. package/dist/festivalCard/server/index.d.mts +2 -2
  130. package/dist/festivalCard/server/index.d.ts +2 -2
  131. package/dist/{festivalCardService-BFCRhJrq.d.ts → festivalCardService-B3GsnNpV.d.ts} +1 -1
  132. package/dist/{festivalCardService-GriR2VMc.d.mts → festivalCardService-CWhrLNE9.d.mts} +1 -1
  133. package/dist/i18n/index.d.mts +1 -1
  134. package/dist/i18n/index.d.ts +1 -1
  135. package/dist/imageCrop/index.d.mts +3 -3
  136. package/dist/imageCrop/index.d.ts +3 -3
  137. package/dist/index-Bd7cKF1j.d.mts +50 -0
  138. package/dist/{index-CLB80GCP.d.mts → index-D0cqaQEH.d.mts} +5 -5
  139. package/dist/{index-CLB80GCP.d.ts → index-D0cqaQEH.d.ts} +5 -5
  140. package/dist/index-DRQxtCDw.d.ts +50 -0
  141. package/dist/{index-1Ag7IBXN.d.ts → index-DZ5iJtNO.d.mts} +2 -44
  142. package/dist/{index-DdeZSeTJ.d.mts → index-DZ5iJtNO.d.ts} +2 -44
  143. package/dist/{index-BxZauNN_.d.ts → index-DoUo8IrU.d.mts} +8 -8
  144. package/dist/{index-BxZauNN_.d.mts → index-DoUo8IrU.d.ts} +8 -8
  145. package/dist/index.d.mts +6382 -105
  146. package/dist/index.d.ts +6382 -105
  147. package/dist/index.js +1037 -2616
  148. package/dist/index.js.map +1 -1
  149. package/dist/index.mjs +976 -2555
  150. package/dist/index.mjs.map +1 -1
  151. package/dist/mmd/admin/index.d.mts +1 -1
  152. package/dist/mmd/admin/index.d.ts +1 -1
  153. package/dist/mmd/index.d.mts +1 -1
  154. package/dist/mmd/index.d.ts +1 -1
  155. package/dist/mmd/server/index.d.mts +3 -3
  156. package/dist/mmd/server/index.d.ts +3 -3
  157. package/dist/ossFile/server/index.js +32 -32
  158. package/dist/ossFile/server/index.mjs +3 -3
  159. package/dist/storage/index.js +12 -11
  160. package/dist/storage/index.mjs +2 -1
  161. package/dist/{types-DyG3ZV9V.d.mts → types-B6B210gX.d.mts} +1 -1
  162. package/dist/{types-DyG3ZV9V.d.ts → types-B6B210gX.d.ts} +1 -1
  163. package/dist/{types-BTiaMsBz.d.mts → types-Bdnte5EN.d.mts} +1 -1
  164. package/dist/{types-tQfupO6d.d.ts → types-Cs0CLvrH.d.mts} +1 -1
  165. package/dist/{types-tQfupO6d.d.mts → types-Cs0CLvrH.d.ts} +1 -1
  166. package/dist/{types-ERmJyjx8.d.ts → types-_rFX1atk.d.ts} +1 -1
  167. package/dist/universalExport/index.d.mts +3 -3
  168. package/dist/universalExport/index.d.ts +3 -3
  169. package/dist/universalFile/index.d.mts +5 -5
  170. package/dist/universalFile/index.d.ts +5 -5
  171. package/dist/universalFile/server/index.js +62 -62
  172. package/dist/universalFile/server/index.mjs +2 -2
  173. package/dist/useAuthActions-7S5dL7Oh.d.mts +77 -0
  174. package/dist/useAuthActions-7S5dL7Oh.d.ts +77 -0
  175. package/dist/vocaloidBooth/server/index.d.mts +3 -3
  176. package/dist/vocaloidBooth/server/index.d.ts +3 -3
  177. package/package.json +44 -111
  178. package/dist/auth/client/index.d.mts +0 -32
  179. package/dist/auth/client/index.d.ts +0 -32
  180. package/dist/auth/client/index.js +0 -21
  181. package/dist/auth/client/index.mjs +0 -4
  182. package/dist/auth/components/index.d.mts +0 -227
  183. package/dist/auth/components/index.d.ts +0 -227
  184. package/dist/auth/components/index.js +0 -327
  185. package/dist/auth/components/index.js.map +0 -1
  186. package/dist/auth/components/index.mjs +0 -319
  187. package/dist/auth/components/index.mjs.map +0 -1
  188. package/dist/auth/hooks/index.d.mts +0 -31
  189. package/dist/auth/hooks/index.d.ts +0 -31
  190. package/dist/auth/hooks/index.js +0 -17
  191. package/dist/auth/hooks/index.mjs +0 -4
  192. package/dist/auth/index.d.mts +0 -18
  193. package/dist/auth/index.d.ts +0 -18
  194. package/dist/auth/index.js +0 -151
  195. package/dist/auth/index.mjs +0 -10
  196. package/dist/auth/legacy/core/index.d.mts +0 -42
  197. package/dist/auth/legacy/core/index.d.ts +0 -42
  198. package/dist/auth/legacy/core/index.js +0 -242
  199. package/dist/auth/legacy/core/index.js.map +0 -1
  200. package/dist/auth/legacy/core/index.mjs +0 -226
  201. package/dist/auth/legacy/core/index.mjs.map +0 -1
  202. package/dist/auth/legacy/db/index.d.mts +0 -5
  203. package/dist/auth/legacy/db/index.d.ts +0 -5
  204. package/dist/auth/legacy/db/index.js +0 -261
  205. package/dist/auth/legacy/db/index.js.map +0 -1
  206. package/dist/auth/legacy/db/index.mjs +0 -250
  207. package/dist/auth/legacy/db/index.mjs.map +0 -1
  208. package/dist/auth/legacy/index.d.mts +0 -5
  209. package/dist/auth/legacy/index.d.ts +0 -5
  210. package/dist/auth/legacy/index.js +0 -1107
  211. package/dist/auth/legacy/index.js.map +0 -1
  212. package/dist/auth/legacy/index.mjs +0 -1086
  213. package/dist/auth/legacy/index.mjs.map +0 -1
  214. package/dist/auth/legacy/logic/index.d.mts +0 -9
  215. package/dist/auth/legacy/logic/index.d.ts +0 -9
  216. package/dist/auth/legacy/logic/index.js +0 -194
  217. package/dist/auth/legacy/logic/index.js.map +0 -1
  218. package/dist/auth/legacy/logic/index.mjs +0 -187
  219. package/dist/auth/legacy/logic/index.mjs.map +0 -1
  220. package/dist/auth/legacy/miniapp/index.d.mts +0 -5
  221. package/dist/auth/legacy/miniapp/index.d.ts +0 -5
  222. package/dist/auth/legacy/miniapp/index.js +0 -506
  223. package/dist/auth/legacy/miniapp/index.js.map +0 -1
  224. package/dist/auth/legacy/miniapp/index.mjs +0 -487
  225. package/dist/auth/legacy/miniapp/index.mjs.map +0 -1
  226. package/dist/auth/legacy/routes/index.d.mts +0 -53
  227. package/dist/auth/legacy/routes/index.d.ts +0 -53
  228. package/dist/auth/legacy/routes/index.js +0 -278
  229. package/dist/auth/legacy/routes/index.js.map +0 -1
  230. package/dist/auth/legacy/routes/index.mjs +0 -271
  231. package/dist/auth/legacy/routes/index.mjs.map +0 -1
  232. package/dist/auth/legacy/schema/index.d.mts +0 -401
  233. package/dist/auth/legacy/schema/index.d.ts +0 -401
  234. package/dist/auth/legacy/schema/index.js +0 -50
  235. package/dist/auth/legacy/schema/index.js.map +0 -1
  236. package/dist/auth/legacy/schema/index.mjs +0 -44
  237. package/dist/auth/legacy/schema/index.mjs.map +0 -1
  238. package/dist/auth/legacy/server/index.d.mts +0 -13
  239. package/dist/auth/legacy/server/index.d.ts +0 -13
  240. package/dist/auth/legacy/server/index.js +0 -21
  241. package/dist/auth/legacy/server/index.js.map +0 -1
  242. package/dist/auth/legacy/server/index.mjs +0 -19
  243. package/dist/auth/legacy/server/index.mjs.map +0 -1
  244. package/dist/auth/legacy/services/index.d.mts +0 -40
  245. package/dist/auth/legacy/services/index.d.ts +0 -40
  246. package/dist/auth/legacy/services/index.js +0 -258
  247. package/dist/auth/legacy/services/index.js.map +0 -1
  248. package/dist/auth/legacy/services/index.mjs +0 -252
  249. package/dist/auth/legacy/services/index.mjs.map +0 -1
  250. package/dist/auth/legacy/ui/miniapp/index.d.mts +0 -10
  251. package/dist/auth/legacy/ui/miniapp/index.d.ts +0 -10
  252. package/dist/auth/legacy/ui/miniapp/index.js +0 -298
  253. package/dist/auth/legacy/ui/miniapp/index.js.map +0 -1
  254. package/dist/auth/legacy/ui/miniapp/index.mjs +0 -290
  255. package/dist/auth/legacy/ui/miniapp/index.mjs.map +0 -1
  256. package/dist/auth/legacy/ui/web/index.d.mts +0 -22
  257. package/dist/auth/legacy/ui/web/index.d.ts +0 -22
  258. package/dist/auth/legacy/ui/web/index.js +0 -899
  259. package/dist/auth/legacy/ui/web/index.js.map +0 -1
  260. package/dist/auth/legacy/ui/web/index.mjs +0 -889
  261. package/dist/auth/legacy/ui/web/index.mjs.map +0 -1
  262. package/dist/auth/legacy/web/index.d.mts +0 -5
  263. package/dist/auth/legacy/web/index.d.ts +0 -5
  264. package/dist/auth/legacy/web/index.js +0 -1107
  265. package/dist/auth/legacy/web/index.js.map +0 -1
  266. package/dist/auth/legacy/web/index.mjs +0 -1086
  267. package/dist/auth/legacy/web/index.mjs.map +0 -1
  268. package/dist/auth/middleware/index.d.mts +0 -75
  269. package/dist/auth/middleware/index.d.ts +0 -75
  270. package/dist/auth/middleware/index.js +0 -15
  271. package/dist/auth/middleware/index.js.map +0 -1
  272. package/dist/auth/middleware/index.mjs +0 -6
  273. package/dist/auth/middleware/index.mjs.map +0 -1
  274. package/dist/auth/rn/index.d.mts +0 -64
  275. package/dist/auth/rn/index.d.ts +0 -64
  276. package/dist/auth/rn/index.js +0 -765
  277. package/dist/auth/rn/index.js.map +0 -1
  278. package/dist/auth/rn/index.mjs +0 -754
  279. package/dist/auth/rn/index.mjs.map +0 -1
  280. package/dist/auth/routes/index.d.mts +0 -261
  281. package/dist/auth/routes/index.d.ts +0 -261
  282. package/dist/auth/routes/index.js +0 -59
  283. package/dist/auth/routes/index.js.map +0 -1
  284. package/dist/auth/routes/index.mjs +0 -6
  285. package/dist/auth/routes/index.mjs.map +0 -1
  286. package/dist/auth/schema/index.d.mts +0 -789
  287. package/dist/auth/schema/index.d.ts +0 -789
  288. package/dist/auth/schema/index.js +0 -41
  289. package/dist/auth/schema/index.js.map +0 -1
  290. package/dist/auth/schema/index.mjs +0 -4
  291. package/dist/auth/schema/index.mjs.map +0 -1
  292. package/dist/auth/services/index.d.mts +0 -48
  293. package/dist/auth/services/index.d.ts +0 -48
  294. package/dist/auth/services/index.js +0 -34
  295. package/dist/auth/services/index.js.map +0 -1
  296. package/dist/auth/services/index.mjs +0 -5
  297. package/dist/auth/services/index.mjs.map +0 -1
  298. package/dist/base-api-client-ACKKt13v.d.mts +0 -277
  299. package/dist/base-api-client-ACKKt13v.d.ts +0 -277
  300. package/dist/base-api-client-B3wZZoaH.d.ts +0 -103
  301. package/dist/base-api-client-DrL35Ea2.d.mts +0 -103
  302. package/dist/chunk-37HYTHEC.mjs +0 -90
  303. package/dist/chunk-37HYTHEC.mjs.map +0 -1
  304. package/dist/chunk-5WV35FPV.js +0 -131
  305. package/dist/chunk-5WV35FPV.js.map +0 -1
  306. package/dist/chunk-DCRD5CZB.js +0 -573
  307. package/dist/chunk-DCRD5CZB.js.map +0 -1
  308. package/dist/chunk-DDX4JKFS.js +0 -19
  309. package/dist/chunk-DDX4JKFS.js.map +0 -1
  310. package/dist/chunk-DV6M7MFP.js +0 -283
  311. package/dist/chunk-DV6M7MFP.js.map +0 -1
  312. package/dist/chunk-HBF4HPRK.js +0 -186
  313. package/dist/chunk-HBF4HPRK.js.map +0 -1
  314. package/dist/chunk-HCI6JQOU.mjs +0 -183
  315. package/dist/chunk-HCI6JQOU.mjs.map +0 -1
  316. package/dist/chunk-I44HXJ3X.mjs +0 -17
  317. package/dist/chunk-I44HXJ3X.mjs.map +0 -1
  318. package/dist/chunk-IIVNHQEI.mjs.map +0 -1
  319. package/dist/chunk-IJ4YYWE3.mjs +0 -122
  320. package/dist/chunk-IJ4YYWE3.mjs.map +0 -1
  321. package/dist/chunk-J4BEIZUC.js +0 -92
  322. package/dist/chunk-J4BEIZUC.js.map +0 -1
  323. package/dist/chunk-OKPWFVXC.js +0 -24
  324. package/dist/chunk-OKPWFVXC.js.map +0 -1
  325. package/dist/chunk-PNOTQAYK.mjs +0 -560
  326. package/dist/chunk-PNOTQAYK.mjs.map +0 -1
  327. package/dist/chunk-PTMSDNGO.mjs.map +0 -1
  328. package/dist/chunk-Q2IAL7YV.js +0 -36
  329. package/dist/chunk-Q2IAL7YV.js.map +0 -1
  330. package/dist/chunk-QQ2WFYOD.js.map +0 -1
  331. package/dist/chunk-VQ54PUQV.js +0 -216
  332. package/dist/chunk-VQ54PUQV.js.map +0 -1
  333. package/dist/chunk-W5JEGA76.mjs +0 -33
  334. package/dist/chunk-W5JEGA76.mjs.map +0 -1
  335. package/dist/chunk-YGI7UU2D.mjs +0 -212
  336. package/dist/chunk-YGI7UU2D.mjs.map +0 -1
  337. package/dist/chunk-ZCLQSI5F.mjs +0 -271
  338. package/dist/chunk-ZCLQSI5F.mjs.map +0 -1
  339. package/dist/drizzle-auth-service-D-pljzCD.d.mts +0 -145
  340. package/dist/drizzle-auth-service-D3qryE_I.d.ts +0 -145
  341. package/dist/index-Bnh6VqFv.d.ts +0 -35
  342. package/dist/index-DNKZ7-R_.d.mts +0 -184
  343. package/dist/index-DNKZ7-R_.d.ts +0 -184
  344. package/dist/index-DPYkrKZf.d.mts +0 -35
  345. package/dist/types-C5vUWf9u.d.ts +0 -70
  346. package/dist/types-C_W_CoUD.d.ts +0 -99
  347. package/dist/types-DCRvasyH.d.mts +0 -99
  348. package/dist/types-IYCqCk2g.d.mts +0 -70
  349. /package/dist/{auth → common/auth}/client/index.js.map +0 -0
  350. /package/dist/{auth → common/auth}/client/index.mjs.map +0 -0
  351. /package/dist/{auth → common/auth}/hooks/index.js.map +0 -0
  352. /package/dist/{auth → common/auth}/hooks/index.mjs.map +0 -0
  353. /package/dist/{auth → common/auth/schema}/index.js.map +0 -0
  354. /package/dist/{auth → common/auth/schema}/index.mjs.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/common/auth/schema/enums.ts","../../../src/common/auth/schema/user.ts","../../../src/common/auth/schema/session.ts","../../../src/common/auth/schema/account.ts","../../../src/common/auth/schema/verification.ts","../../../src/common/auth/schema/relations.ts","../../../src/calendar/db/schema.ts","../../../src/calendar/db/calendarDbService.ts","../../../src/calendar/routes/index.ts"],"names":["pgEnum","pgTable","text","boolean","jsonb","timestamp","sql","uniqueIndex","foreignKey","relations","serial","varchar","integer","json","eq","gte","lte","and","asc","desc","user","NextResponse","reminders"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Auth Schema - Enums\n * 认证相关的枚举类型定义\n */\n\nimport { pgEnum } from 'drizzle-orm/pg-core';\n\n/**\n * 用户角色枚举\n */\nexport const userRole = pgEnum('UserRole', ['USER', 'ADMIN', 'SUPER_ADMIN']);\n\n/**\n * 类型定义\n */\nexport type UserRole = 'USER' | 'ADMIN' | 'SUPER_ADMIN';\n\n","/**\n * Auth Schema - User Table\n * 用户表定义\n */\n\nimport { pgTable, text, boolean, jsonb, timestamp, uniqueIndex } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport { userRole } from './enums';\n\n/**\n * 用户表\n */\nexport const user = pgTable(\n 'User',\n {\n id: text().primaryKey().notNull(),\n email: text().notNull(),\n emailVerified: boolean().default(false).notNull(),\n username: text().notNull(),\n password: text(),\n name: text(),\n nickname: text(),\n image: text(),\n avatar: text(),\n role: userRole().default('USER').notNull(),\n preferences: jsonb(),\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp({ precision: 3, mode: 'string' }).notNull(),\n twoFactorEnabled: boolean().default(false).notNull(),\n },\n (table) => [\n uniqueIndex('User_email_key').using('btree', table.email.asc().nullsLast().op('text_ops')),\n uniqueIndex('User_username_key').using(\n 'btree',\n table.username.asc().nullsLast().op('text_ops')\n ),\n ]\n);\n\n/**\n * 类型定义\n */\nexport type User = typeof user.$inferSelect;\nexport type NewUser = typeof user.$inferInsert;\n\n","/**\n * Auth Schema - Session Table\n * 会话表定义\n */\n\nimport {\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n foreignKey,\n} from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport { user } from './user';\n\n/**\n * 会话表\n */\nexport const session = pgTable(\n 'Session',\n {\n id: text().primaryKey().notNull(),\n userId: text().notNull(),\n token: text().notNull(),\n expiresAt: timestamp({ precision: 3, mode: 'string' }).notNull(),\n ipAddress: text(),\n userAgent: text(),\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n },\n (table) => [\n uniqueIndex('Session_token_key').using('btree', table.token.asc().nullsLast().op('text_ops')),\n foreignKey({\n columns: [table.userId],\n foreignColumns: [user.id],\n name: 'Session_userId_fkey',\n })\n .onUpdate('cascade')\n .onDelete('cascade'),\n ]\n);\n\n/**\n * 类型定义\n */\nexport type Session = typeof session.$inferSelect;\nexport type NewSession = typeof session.$inferInsert;\n\n","/**\n * Auth Schema - Account Table\n * 第三方账号关联表定义\n */\n\nimport {\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n foreignKey,\n} from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport { user } from './user';\n\n/**\n * 第三方账号表(支持 OAuth 登录)\n */\nexport const account = pgTable(\n 'Account',\n {\n id: text().primaryKey().notNull(),\n accountId: text().notNull(),\n providerId: text().notNull(), // 提供商: github, google, wechat 等\n userId: text().notNull(),\n accessToken: text(),\n refreshToken: text(),\n idToken: text(),\n accessTokenExpiresAt: timestamp({ precision: 3, mode: 'string' }),\n refreshTokenExpiresAt: timestamp({ precision: 3, mode: 'string' }),\n scope: text(),\n password: text(),\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp({ precision: 3, mode: 'string' }).notNull(),\n },\n (table) => [\n uniqueIndex('Account_providerId_accountId_key').using(\n 'btree',\n table.providerId.asc().nullsLast().op('text_ops'),\n table.accountId.asc().nullsLast().op('text_ops')\n ),\n foreignKey({\n columns: [table.userId],\n foreignColumns: [user.id],\n name: 'Account_userId_fkey',\n })\n .onUpdate('cascade')\n .onDelete('cascade'),\n ]\n);\n\n/**\n * 类型定义\n */\nexport type Account = typeof account.$inferSelect;\nexport type NewAccount = typeof account.$inferInsert;\n\n","/**\n * Auth Schema - Verification Table\n * 验证码表定义\n */\n\nimport { pgTable, text, timestamp, uniqueIndex } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\n\n/**\n * 验证码表(邮箱验证、密码重置等)\n */\nexport const verifications = pgTable(\n 'verifications',\n {\n id: text().primaryKey().notNull(),\n identifier: text().notNull(), // 邮箱或手机号\n value: text().notNull(), // 验证码\n expiresAt: timestamp({ precision: 3, mode: 'string' }).notNull(),\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n },\n (table) => [\n uniqueIndex('verifications_identifier_value_key').using(\n 'btree',\n table.identifier.asc().nullsLast().op('text_ops'),\n table.value.asc().nullsLast().op('text_ops')\n ),\n ]\n);\n\n/**\n * 类型定义\n */\nexport type Verification = typeof verifications.$inferSelect;\nexport type NewVerification = typeof verifications.$inferInsert;\n\n","/**\n * Auth Schema - Relations\n * 表关系定义\n */\n\nimport { relations } from 'drizzle-orm';\nimport { user } from './user';\nimport { session } from './session';\nimport { account } from './account';\n\n/**\n * User 表关系\n */\nexport const userRelations = relations(user, ({ many }) => ({\n sessions: many(session),\n accounts: many(account),\n}));\n\n/**\n * Session 表关系\n */\nexport const sessionRelations = relations(session, ({ one }) => ({\n user: one(user, {\n fields: [session.userId],\n references: [user.id],\n }),\n}));\n\n/**\n * Account 表关系\n */\nexport const accountRelations = relations(account, ({ one }) => ({\n user: one(user, {\n fields: [account.userId],\n references: [user.id],\n }),\n}));\n\n","import { pgTable, serial, text, timestamp, boolean, varchar, integer, json } from 'drizzle-orm/pg-core';\nimport { relations } from 'drizzle-orm';\nimport { user as users } from '../../auth/schema';\n\n/**\n * 日历事件表\n */\nexport const calendarEvents = pgTable('calendar_events', {\n id: serial('id').primaryKey(),\n title: varchar('title', { length: 255 }).notNull(),\n description: text('description'),\n startTime: timestamp('start_time').notNull(),\n endTime: timestamp('end_time').notNull(),\n allDay: boolean('all_day').notNull().default(false),\n location: varchar('location', { length: 500 }),\n color: varchar('color', { length: 7 }).notNull().default('#3B82F6'), // 十六进制颜色值\n priority: varchar('priority', { length: 10 }).notNull().default('normal'), // low, normal, high, urgent\n userId: integer('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),\n createdAt: timestamp('created_at').defaultNow().notNull(),\n updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n/**\n * 重复规则表\n */\nexport const recurrenceRules = pgTable('recurrence_rules', {\n id: serial('id').primaryKey(),\n eventId: integer('event_id').notNull().references(() => calendarEvents.id, { onDelete: 'cascade' }),\n ruleType: varchar('rule_type', { length: 20 }).notNull(), // daily, weekly, monthly, yearly, custom\n interval: integer('interval').notNull().default(1), // 间隔\n endDate: timestamp('end_date'), // 结束日期\n count: integer('count'), // 重复次数\n byWeekday: json('by_weekday').$type<number[]>(), // 周几重复 [0,1,2,3,4,5,6],0=周日\n byMonthday: json('by_monthday').$type<number[]>(), // 月中的第几天 [1,2,...,31]\n byMonth: json('by_month').$type<number[]>(), // 第几月 [1,2,...,12]\n createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n\n/**\n * 提醒表\n */\nexport const reminders = pgTable('reminders', {\n id: serial('id').primaryKey(),\n eventId: integer('event_id').notNull().references(() => calendarEvents.id, { onDelete: 'cascade' }),\n reminderTime: timestamp('reminder_time').notNull(), // 提醒时间\n reminderType: varchar('reminder_type', { length: 20 }).notNull(), // notification, email, sms\n status: varchar('status', { length: 20 }).notNull().default('pending'), // pending, sent, failed\n createdAt: timestamp('created_at').defaultNow().notNull(),\n updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n/**\n * 日历配置表 - 用户个人日历设置\n */\nexport const calendarConfigs = pgTable('calendar_configs', {\n id: serial('id').primaryKey(),\n userId: integer('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }).unique(),\n firstDayOfWeek: integer('first_day_of_week').notNull().default(1), // 0=周日, 1=周一\n workingHoursStart: varchar('working_hours_start', { length: 5 }).notNull().default('09:00'),\n workingHoursEnd: varchar('working_hours_end', { length: 5 }).notNull().default('18:00'),\n timeZone: varchar('time_zone', { length: 50 }).notNull().default('Asia/Shanghai'),\n dateFormat: varchar('date_format', { length: 20 }).notNull().default('YYYY-MM-DD'),\n timeFormat: varchar('time_format', { length: 20 }).notNull().default('HH:mm'),\n defaultView: varchar('default_view', { length: 20 }).notNull().default('month'), // month, week, day, agenda\n defaultEventColor: varchar('default_event_color', { length: 7 }).notNull().default('#3B82F6'),\n weekends: boolean('weekends').notNull().default(true),\n eventColors: json('event_colors').$type<Record<string, string>>().default({\n blue: '#3B82F6',\n green: '#10B981',\n purple: '#8B5CF6',\n red: '#EF4444',\n yellow: '#F59E0B',\n pink: '#EC4899',\n indigo: '#6366F1',\n gray: '#6B7280'\n }),\n createdAt: timestamp('created_at').defaultNow().notNull(),\n updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n/**\n * 事件分享表 - 用于共享日历功能\n */\nexport const eventShares = pgTable('event_shares', {\n id: serial('id').primaryKey(),\n eventId: integer('event_id').notNull().references(() => calendarEvents.id, { onDelete: 'cascade' }),\n sharedWithUserId: integer('shared_with_user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),\n sharedByUserId: integer('shared_by_user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),\n permission: varchar('permission', { length: 20 }).notNull().default('read'), // read, write\n createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n\n// ===== 关系定义 =====\n\n/**\n * 日历事件关系\n */\nexport const calendarEventsRelations = relations(calendarEvents, ({ one, many }) => ({\n user: one(users, {\n fields: [calendarEvents.userId],\n references: [users.id],\n }),\n recurrenceRule: one(recurrenceRules, {\n fields: [calendarEvents.id],\n references: [recurrenceRules.eventId],\n }),\n reminders: many(reminders),\n shares: many(eventShares),\n}));\n\n/**\n * 重复规则关系\n */\nexport const recurrenceRulesRelations = relations(recurrenceRules, ({ one }) => ({\n event: one(calendarEvents, {\n fields: [recurrenceRules.eventId],\n references: [calendarEvents.id],\n }),\n}));\n\n/**\n * 提醒关系\n */\nexport const remindersRelations = relations(reminders, ({ one }) => ({\n event: one(calendarEvents, {\n fields: [reminders.eventId],\n references: [calendarEvents.id],\n }),\n}));\n\n/**\n * 日历配置关系\n */\nexport const calendarConfigsRelations = relations(calendarConfigs, ({ one }) => ({\n user: one(users, {\n fields: [calendarConfigs.userId],\n references: [users.id],\n }),\n}));\n\n/**\n * 事件分享关系\n */\nexport const eventSharesRelations = relations(eventShares, ({ one }) => ({\n event: one(calendarEvents, {\n fields: [eventShares.eventId],\n references: [calendarEvents.id],\n }),\n sharedWithUser: one(users, {\n fields: [eventShares.sharedWithUserId],\n references: [users.id],\n }),\n sharedByUser: one(users, {\n fields: [eventShares.sharedByUserId],\n references: [users.id],\n }),\n}));\n\n// 所有表和关系已在上面使用 export 关键字导出 ","import { and, eq, gte, lte, desc, asc } from 'drizzle-orm';\nimport {\n calendarEvents,\n recurrenceRules,\n reminders,\n calendarConfigs,\n eventShares\n} from './schema';\n\n/**\n * 简化版日历数据库服务\n * \n * 提供基础的数据库操作,避免复杂的类型转换\n * 后续可以根据需要逐步完善\n */\nclass CalendarDbService {\n private _db: any;\n\n /**\n * 设置数据库实例\n */\n setDb(db: any) {\n this._db = db;\n }\n\n /**\n * 数据库是否已初始化\n */\n isConfigured() {\n return Boolean(this._db);\n }\n\n /**\n * 获取数据库实例\n */\n get db() {\n if (!this._db) {\n throw new Error('CalendarDbService: Database instance not set. Call setDb() first.');\n }\n return this._db;\n }\n \n // ===== 事件基础操作 =====\n\n /**\n * 获取用户的所有事件(基础版本)\n */\n async getAllEvents(userId: number, startDate?: Date, endDate?: Date) {\n const conditions = [eq(calendarEvents.userId, userId)];\n \n if (startDate) {\n conditions.push(gte(calendarEvents.startTime, startDate));\n }\n \n if (endDate) {\n conditions.push(lte(calendarEvents.endTime, endDate));\n }\n\n const events = await this.db\n .select()\n .from(calendarEvents)\n .where(and(...conditions))\n .orderBy(asc(calendarEvents.startTime));\n\n return events;\n }\n\n /**\n * 根据ID获取事件\n */\n async getEventById(eventId: number) {\n const [event] = await this.db\n .select()\n .from(calendarEvents)\n .where(eq(calendarEvents.id, eventId))\n .limit(1);\n\n return event || null;\n }\n\n /**\n * 创建事件(基础版本)\n */\n async createEvent(eventData: {\n title: string;\n description?: string;\n startTime: Date;\n endTime: Date;\n allDay: boolean;\n location?: string;\n color: string;\n userId: number;\n }) {\n const [newEvent] = await this.db\n .insert(calendarEvents)\n .values(eventData)\n .returning();\n\n return newEvent;\n }\n\n /**\n * 更新事件\n */\n async updateEvent(eventId: number, eventData: {\n title?: string;\n description?: string;\n startTime?: Date;\n endTime?: Date;\n allDay?: boolean;\n location?: string;\n color?: string;\n }) {\n const updateData = {\n ...eventData,\n updatedAt: new Date()\n };\n\n const [updatedEvent] = await this.db\n .update(calendarEvents)\n .set(updateData)\n .where(eq(calendarEvents.id, eventId))\n .returning();\n\n return updatedEvent;\n }\n\n /**\n * 删除事件\n */\n async deleteEvent(eventId: number): Promise<void> {\n await this.db\n .delete(calendarEvents)\n .where(eq(calendarEvents.id, eventId));\n }\n\n // ===== 用户配置操作 =====\n\n /**\n * 获取用户的日历配置\n */\n async getUserConfig(userId: number) {\n const [config] = await this.db\n .select()\n .from(calendarConfigs)\n .where(eq(calendarConfigs.userId, userId))\n .limit(1);\n\n return config || null;\n }\n\n /**\n * 创建或更新用户配置\n */\n async upsertUserConfig(userId: number, configData: {\n firstDayOfWeek?: number;\n workingHoursStart?: string;\n workingHoursEnd?: string;\n timeZone?: string;\n dateFormat?: string;\n timeFormat?: string;\n defaultView?: string;\n defaultEventColor?: string;\n weekends?: boolean;\n eventColors?: Record<string, string>;\n }) {\n const existingConfig = await this.getUserConfig(userId);\n\n if (existingConfig) {\n // 更新现有配置\n const [updatedConfig] = await this.db\n .update(calendarConfigs)\n .set({\n ...configData,\n updatedAt: new Date()\n })\n .where(eq(calendarConfigs.userId, userId))\n .returning();\n\n return updatedConfig;\n } else {\n // 创建新配置\n const [newConfig] = await this.db\n .insert(calendarConfigs)\n .values({\n userId,\n ...configData\n })\n .returning();\n\n return newConfig;\n }\n }\n\n /**\n * 为事件创建重复规则\n */\n async createRecurrenceRule(ruleData: {\n eventId: number;\n ruleType: string;\n interval: number;\n endDate?: Date;\n count?: number;\n byWeekday?: number[];\n byMonthday?: number[];\n byMonth?: number[];\n }) {\n const [newRule] = await this.db\n .insert(recurrenceRules)\n .values(ruleData)\n .returning();\n\n return newRule;\n }\n\n /**\n * 获取事件的重复规则\n */\n async getRecurrenceRule(eventId: number) {\n const [rule] = await this.db\n .select()\n .from(recurrenceRules)\n .where(eq(recurrenceRules.eventId, eventId))\n .limit(1);\n\n return rule || null;\n }\n\n /**\n * 删除重复规则\n */\n async deleteRecurrenceRule(eventId: number): Promise<void> {\n await this.db\n .delete(recurrenceRules)\n .where(eq(recurrenceRules.eventId, eventId));\n }\n\n /**\n * 为事件创建提醒\n */\n async createReminder(reminderData: {\n eventId: number;\n reminderTime: Date;\n reminderType: string;\n status?: string;\n }) {\n const [newReminder] = await this.db\n .insert(reminders)\n .values({\n ...reminderData,\n status: reminderData.status || 'pending'\n })\n .returning();\n\n return newReminder;\n }\n\n /**\n * 获取事件的提醒列表\n */\n async getEventReminders(eventId: number) {\n const remindersList = await this.db\n .select()\n .from(reminders)\n .where(eq(reminders.eventId, eventId))\n .orderBy(asc(reminders.reminderTime));\n\n return remindersList;\n }\n\n /**\n * 删除事件的所有提醒\n */\n async deleteEventReminders(eventId: number): Promise<void> {\n await this.db\n .delete(reminders)\n .where(eq(reminders.eventId, eventId));\n }\n\n /**\n * 获取用户在指定时间范围内的事件数量\n */\n async getEventCount(userId: number, startDate?: Date, endDate?: Date): Promise<number> {\n const conditions = [eq(calendarEvents.userId, userId)];\n \n if (startDate) {\n conditions.push(gte(calendarEvents.startTime, startDate));\n }\n \n if (endDate) {\n conditions.push(lte(calendarEvents.endTime, endDate));\n }\n\n const result = await this.db\n .select({ count: calendarEvents.id })\n .from(calendarEvents)\n .where(and(...conditions));\n\n return result.length;\n }\n\n /**\n * 搜索事件\n */\n async searchEvents(userId: number, searchTerm: string) {\n const events = await this.db\n .select()\n .from(calendarEvents)\n .where(\n and(\n eq(calendarEvents.userId, userId),\n )\n )\n .orderBy(desc(calendarEvents.startTime));\n\n return events.filter((event: any) => \n event.title.toLowerCase().includes(searchTerm.toLowerCase()) ||\n (event.description && event.description.toLowerCase().includes(searchTerm.toLowerCase()))\n );\n }\n\n /**\n * 批量删除用户的所有事件\n */\n async deleteAllUserEvents(userId: number): Promise<void> {\n await this.db\n .delete(calendarEvents)\n .where(eq(calendarEvents.userId, userId));\n }\n}\n\n\n// 导出单例实例\nexport const calendarDbService = new CalendarDbService();\nexport default calendarDbService; ","import { NextRequest, NextResponse } from 'next/server';\nimport { calendarDbService } from '../db/calendarDbService';\n\nexport interface CalendarRouteConfig {\n /**\n * Drizzle 数据库实例\n * 如果提供,将自动初始化 calendarDbService\n */\n db?: any;\n /**\n * 验证用户身份的函数\n * 应该返回用户信息或 null\n */\n validateAuth: (request: NextRequest) => Promise<{ id: number } | null>;\n}\n\n/**\n * 初始化数据库服务的辅助函数\n */\nfunction initDbService(db?: any) {\n if (db) {\n calendarDbService.setDb(db);\n }\n}\n\n/**\n * 创建获取日历事件列表的处理器\n */\nexport function createGetEventsHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const { searchParams } = new URL(request.url);\n const startDateStr = searchParams.get('startDate');\n const endDateStr = searchParams.get('endDate');\n\n let startDate: Date | undefined;\n let endDate: Date | undefined;\n\n if (startDateStr) {\n startDate = new Date(startDateStr);\n if (isNaN(startDate.getTime())) {\n return NextResponse.json({ success: false, error: '开始日期格式无效' }, { status: 400 });\n }\n }\n\n if (endDateStr) {\n endDate = new Date(endDateStr);\n if (isNaN(endDate.getTime())) {\n return NextResponse.json({ success: false, error: '结束日期格式无效' }, { status: 400 });\n }\n }\n\n const events = await calendarDbService.getAllEvents(user.id, startDate, endDate);\n\n return NextResponse.json({\n success: true,\n data: events,\n message: '获取事件列表成功'\n });\n } catch (error) {\n console.error('获取事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建日历事件的处理器\n */\nexport function createCreateEventHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const body = await request.json();\n \n if (!body.title || typeof body.title !== 'string' || body.title.trim() === '') {\n return NextResponse.json({ success: false, error: '事件标题不能为空' }, { status: 400 });\n }\n\n if (!body.startTime || !body.endTime) {\n return NextResponse.json({ success: false, error: '开始时间和结束时间不能为空' }, { status: 400 });\n }\n\n const startTime = new Date(body.startTime);\n const endTime = new Date(body.endTime);\n\n if (isNaN(startTime.getTime()) || isNaN(endTime.getTime())) {\n return NextResponse.json({ success: false, error: '日期格式无效' }, { status: 400 });\n }\n\n if (startTime.getTime() >= endTime.getTime()) {\n return NextResponse.json({ success: false, error: '结束时间必须晚于开始时间' }, { status: 400 });\n }\n\n const eventData = {\n title: body.title.trim(),\n description: body.description || null,\n startTime,\n endTime,\n allDay: Boolean(body.allDay),\n location: body.location || null,\n color: body.color || '#3B82F6',\n userId: user.id,\n };\n\n const newEvent = await calendarDbService.createEvent(eventData);\n\n if (body.recurrence) {\n await calendarDbService.createRecurrenceRule({\n eventId: newEvent.id,\n ...body.recurrence,\n endDate: body.recurrence.endDate ? new Date(body.recurrence.endDate) : undefined,\n });\n }\n\n if (body.reminders && Array.isArray(body.reminders)) {\n for (const reminder of body.reminders) {\n if (reminder.reminderTime) {\n await calendarDbService.createReminder({\n eventId: newEvent.id,\n reminderTime: new Date(reminder.reminderTime),\n reminderType: reminder.reminderType || 'notification',\n status: 'pending'\n });\n }\n }\n }\n\n return NextResponse.json({\n success: true,\n data: newEvent,\n message: '创建事件成功'\n });\n } catch (error) {\n console.error('创建事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建获取单个事件的处理器\n */\nexport function createGetEventByIdHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest, { params }: { params: { id: string } }) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const eventId = parseInt(params.id);\n if (isNaN(eventId)) {\n return NextResponse.json({ success: false, error: '事件ID无效' }, { status: 400 });\n }\n\n const event = await calendarDbService.getEventById(eventId);\n if (!event) {\n return NextResponse.json({ success: false, error: '事件不存在' }, { status: 404 });\n }\n\n if (event.userId !== user.id) {\n return NextResponse.json({ success: false, error: '无权访问此事件' }, { status: 403 });\n }\n\n const [recurrenceRule, reminders] = await Promise.all([\n calendarDbService.getRecurrenceRule(eventId),\n calendarDbService.getEventReminders(eventId)\n ]);\n\n return NextResponse.json({\n success: true,\n data: {\n ...event,\n recurrenceRule: recurrenceRule || undefined,\n reminders: reminders || []\n },\n message: '获取事件成功'\n });\n } catch (error) {\n console.error('获取事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建更新事件的处理器\n */\nexport function createUpdateEventHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest, { params }: { params: { id: string } }) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const eventId = parseInt(params.id);\n if (isNaN(eventId)) {\n return NextResponse.json({ success: false, error: '事件ID无效' }, { status: 400 });\n }\n\n const existingEvent = await calendarDbService.getEventById(eventId);\n if (!existingEvent || existingEvent.userId !== user.id) {\n return NextResponse.json({ success: false, error: '事件不存在或无权修改' }, { status: 404 });\n }\n\n const body = await request.json();\n const updateData: any = {};\n\n if (body.title !== undefined) updateData.title = body.title.trim();\n if (body.description !== undefined) updateData.description = body.description;\n if (body.startTime !== undefined) updateData.startTime = new Date(body.startTime);\n if (body.endTime !== undefined) updateData.endTime = new Date(body.endTime);\n if (body.allDay !== undefined) updateData.allDay = Boolean(body.allDay);\n if (body.location !== undefined) updateData.location = body.location;\n if (body.color !== undefined) updateData.color = body.color;\n\n const updatedEvent = await calendarDbService.updateEvent(eventId, updateData);\n\n if (body.recurrence !== undefined) {\n await calendarDbService.deleteRecurrenceRule(eventId);\n if (body.recurrence) {\n await calendarDbService.createRecurrenceRule({\n eventId,\n ...body.recurrence,\n endDate: body.recurrence.endDate ? new Date(body.recurrence.endDate) : undefined,\n });\n }\n }\n\n if (body.reminders !== undefined) {\n await calendarDbService.deleteEventReminders(eventId);\n if (Array.isArray(body.reminders)) {\n for (const reminder of body.reminders) {\n if (reminder.reminderTime) {\n await calendarDbService.createReminder({\n eventId,\n reminderTime: new Date(reminder.reminderTime),\n reminderType: reminder.reminderType || 'notification',\n status: 'pending'\n });\n }\n }\n }\n }\n\n return NextResponse.json({\n success: true,\n data: updatedEvent,\n message: '更新事件成功'\n });\n } catch (error) {\n console.error('更新事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建删除事件的处理器\n */\nexport function createDeleteEventHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest, { params }: { params: { id: string } }) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const eventId = parseInt(params.id);\n if (isNaN(eventId)) {\n return NextResponse.json({ success: false, error: '事件ID无效' }, { status: 400 });\n }\n\n const existingEvent = await calendarDbService.getEventById(eventId);\n if (!existingEvent || existingEvent.userId !== user.id) {\n return NextResponse.json({ success: false, error: '事件不存在或无权删除' }, { status: 404 });\n }\n\n await calendarDbService.deleteEvent(eventId);\n\n return NextResponse.json({\n success: true,\n message: '删除事件成功'\n });\n } catch (error) {\n console.error('删除事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建批量删除事件的处理器\n */\nexport function createBatchDeleteEventsHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const body = await request.json();\n if (!body.eventIds || !Array.isArray(body.eventIds)) {\n return NextResponse.json({ success: false, error: '事件ID列表不能为空' }, { status: 400 });\n }\n\n const results = await Promise.all(\n body.eventIds.map(async (id: number) => {\n const event = await calendarDbService.getEventById(id);\n if (event && event.userId === user.id) {\n await calendarDbService.deleteEvent(id);\n return true;\n }\n return false;\n })\n );\n\n const deletedCount = results.filter(Boolean).length;\n\n return NextResponse.json({\n success: true,\n data: { deletedCount },\n message: '成功删除 ' + (deletedCount) + ' 个事件'\n });\n } catch (error) {\n console.error('批量删除事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建配置处理器的工厂\n */\nexport function createConfigHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return {\n GET: async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const dbConfig = await calendarDbService.getUserConfig(user.id);\n return NextResponse.json({\n success: true,\n data: dbConfig || {\n firstDayOfWeek: 1,\n workingHoursStart: '09:00',\n workingHoursEnd: '18:00',\n timeZone: 'Asia/Shanghai',\n dateFormat: 'YYYY-MM-DD',\n timeFormat: 'HH:mm',\n defaultView: 'month',\n defaultEventColor: '#3B82F6',\n weekends: true,\n eventColors: {}\n },\n message: '获取配置成功'\n });\n } catch (error) {\n console.error('获取配置失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n },\n PUT: async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const body = await request.json();\n const updatedConfig = await calendarDbService.upsertUserConfig(user.id, body);\n\n return NextResponse.json({\n success: true,\n data: updatedConfig,\n message: '更新配置成功'\n });\n } catch (error) {\n console.error('更新配置失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n }\n };\n}\n\n"]}
1
+ {"version":3,"sources":["../../../src/common/auth/schema/enums.ts","../../../src/common/auth/schema/user.ts","../../../src/common/auth/schema/session.ts","../../../src/common/auth/schema/account.ts","../../../src/common/auth/schema/verification.ts","../../../src/common/auth/schema/relations.ts","../../../src/calendar/db/schema.ts","../../../src/calendar/db/calendarDbService.ts","../../../src/common/auth/server/session.ts","../../../src/calendar/api/auth-config.ts","../../../src/calendar/api/_shared.ts","../../../src/calendar/api/route-handlers.ts","../../../src/calendar/routes/index.ts"],"names":["pgEnum","pgTable","text","boolean","timestamp","sql","relations","serial","varchar","integer","json","eq","gte","lte","and","asc","desc","session","user","getSessionUserNumeric","NextResponse","reminders"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Auth Schema - Enums\n * 认证相关的枚举类型定义\n */\n\nimport { pgEnum } from 'drizzle-orm/pg-core';\n\n/**\n * 用户角色枚举\n */\nexport const userRole = pgEnum('UserRole', ['USER', 'ADMIN', 'SUPER_ADMIN']);\n\n/**\n * 类型定义\n */\nexport type UserRole = 'USER' | 'ADMIN' | 'SUPER_ADMIN';\n\n","/**\n * Better Auth — user 表(3.0 SSOT)\n */\nimport { boolean, pgTable, text, timestamp } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport { userRole } from './enums';\n\nexport const user = pgTable('user', {\n id: text('id').primaryKey().notNull(),\n name: text('name').notNull(),\n email: text('email').notNull(),\n emailVerified: boolean('emailVerified').default(false).notNull(),\n image: text('image'),\n phoneNumber: text('phoneNumber'),\n phoneNumberVerified: boolean('phoneNumberVerified').default(false),\n role: userRole('role').default('USER').notNull(),\n createdAt: timestamp('createdAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updatedAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n\nexport type User = typeof user.$inferSelect;\nexport type NewUser = typeof user.$inferInsert;\n","/**\n * Better Auth — session 表(3.0 SSOT)\n */\nimport { pgTable, text, timestamp } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport { user } from './user';\n\nexport const session = pgTable('session', {\n id: text('id').primaryKey().notNull(),\n userId: text('userId')\n .notNull()\n .references(() => user.id, { onDelete: 'cascade' }),\n token: text('token').notNull(),\n expiresAt: timestamp('expiresAt', { precision: 3, mode: 'date' }).notNull(),\n ipAddress: text('ipAddress'),\n userAgent: text('userAgent'),\n createdAt: timestamp('createdAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updatedAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n\nexport type Session = typeof session.$inferSelect;\nexport type NewSession = typeof session.$inferInsert;\n","/**\n * Better Auth — account 表(credential / OAuth,3.0 SSOT)\n */\nimport { pgTable, text, timestamp } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport { user } from './user';\n\nexport const account = pgTable('account', {\n id: text('id').primaryKey().notNull(),\n accountId: text('accountId').notNull(),\n providerId: text('providerId').notNull(),\n userId: text('userId')\n .notNull()\n .references(() => user.id, { onDelete: 'cascade' }),\n accessToken: text('accessToken'),\n refreshToken: text('refreshToken'),\n idToken: text('idToken'),\n accessTokenExpiresAt: timestamp('accessTokenExpiresAt', { precision: 3, mode: 'date' }),\n refreshTokenExpiresAt: timestamp('refreshTokenExpiresAt', { precision: 3, mode: 'date' }),\n scope: text('scope'),\n password: text('password'),\n createdAt: timestamp('createdAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updatedAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n\nexport type Account = typeof account.$inferSelect;\nexport type NewAccount = typeof account.$inferInsert;\n","/**\n * Better Auth — verification 表(OTP / magic link,3.0 SSOT)\n */\nimport { pgTable, text, timestamp } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\n\nexport const verification = pgTable('verification', {\n id: text('id').primaryKey().notNull(),\n identifier: text('identifier').notNull(),\n value: text('value').notNull(),\n expiresAt: timestamp('expiresAt', { precision: 3, mode: 'date' }).notNull(),\n createdAt: timestamp('createdAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updatedAt', { precision: 3, mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n\nexport type Verification = typeof verification.$inferSelect;\nexport type NewVerification = typeof verification.$inferInsert;\n\n/** @deprecated 3.0 使用 `verification` */\nexport const verifications = verification;\n","/**\n * Auth Schema - Relations\n * 表关系定义\n */\n\nimport { relations } from 'drizzle-orm';\nimport { user } from './user';\nimport { session } from './session';\nimport { account } from './account';\n\n/**\n * User 表关系\n */\nexport const userRelations = relations(user, ({ many }) => ({\n sessions: many(session),\n accounts: many(account),\n}));\n\n/**\n * Session 表关系\n */\nexport const sessionRelations = relations(session, ({ one }) => ({\n user: one(user, {\n fields: [session.userId],\n references: [user.id],\n }),\n}));\n\n/**\n * Account 表关系\n */\nexport const accountRelations = relations(account, ({ one }) => ({\n user: one(user, {\n fields: [account.userId],\n references: [user.id],\n }),\n}));\n\n","import { pgTable, serial, text, timestamp, boolean, varchar, integer, json } from 'drizzle-orm/pg-core';\nimport { relations } from 'drizzle-orm';\nimport { user as users } from '../../common/auth/schema';\n\n/**\n * 日历事件表\n */\nexport const calendarEvents = pgTable('calendar_events', {\n id: serial('id').primaryKey(),\n title: varchar('title', { length: 255 }).notNull(),\n description: text('description'),\n startTime: timestamp('start_time').notNull(),\n endTime: timestamp('end_time').notNull(),\n allDay: boolean('all_day').notNull().default(false),\n location: varchar('location', { length: 500 }),\n color: varchar('color', { length: 7 }).notNull().default('#3B82F6'), // 十六进制颜色值\n priority: varchar('priority', { length: 10 }).notNull().default('normal'), // low, normal, high, urgent\n userId: integer('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),\n createdAt: timestamp('created_at').defaultNow().notNull(),\n updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n/**\n * 重复规则表\n */\nexport const recurrenceRules = pgTable('recurrence_rules', {\n id: serial('id').primaryKey(),\n eventId: integer('event_id').notNull().references(() => calendarEvents.id, { onDelete: 'cascade' }),\n ruleType: varchar('rule_type', { length: 20 }).notNull(), // daily, weekly, monthly, yearly, custom\n interval: integer('interval').notNull().default(1), // 间隔\n endDate: timestamp('end_date'), // 结束日期\n count: integer('count'), // 重复次数\n byWeekday: json('by_weekday').$type<number[]>(), // 周几重复 [0,1,2,3,4,5,6],0=周日\n byMonthday: json('by_monthday').$type<number[]>(), // 月中的第几天 [1,2,...,31]\n byMonth: json('by_month').$type<number[]>(), // 第几月 [1,2,...,12]\n createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n\n/**\n * 提醒表\n */\nexport const reminders = pgTable('reminders', {\n id: serial('id').primaryKey(),\n eventId: integer('event_id').notNull().references(() => calendarEvents.id, { onDelete: 'cascade' }),\n reminderTime: timestamp('reminder_time').notNull(), // 提醒时间\n reminderType: varchar('reminder_type', { length: 20 }).notNull(), // notification, email, sms\n status: varchar('status', { length: 20 }).notNull().default('pending'), // pending, sent, failed\n createdAt: timestamp('created_at').defaultNow().notNull(),\n updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n/**\n * 日历配置表 - 用户个人日历设置\n */\nexport const calendarConfigs = pgTable('calendar_configs', {\n id: serial('id').primaryKey(),\n userId: integer('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }).unique(),\n firstDayOfWeek: integer('first_day_of_week').notNull().default(1), // 0=周日, 1=周一\n workingHoursStart: varchar('working_hours_start', { length: 5 }).notNull().default('09:00'),\n workingHoursEnd: varchar('working_hours_end', { length: 5 }).notNull().default('18:00'),\n timeZone: varchar('time_zone', { length: 50 }).notNull().default('Asia/Shanghai'),\n dateFormat: varchar('date_format', { length: 20 }).notNull().default('YYYY-MM-DD'),\n timeFormat: varchar('time_format', { length: 20 }).notNull().default('HH:mm'),\n defaultView: varchar('default_view', { length: 20 }).notNull().default('month'), // month, week, day, agenda\n defaultEventColor: varchar('default_event_color', { length: 7 }).notNull().default('#3B82F6'),\n weekends: boolean('weekends').notNull().default(true),\n eventColors: json('event_colors').$type<Record<string, string>>().default({\n blue: '#3B82F6',\n green: '#10B981',\n purple: '#8B5CF6',\n red: '#EF4444',\n yellow: '#F59E0B',\n pink: '#EC4899',\n indigo: '#6366F1',\n gray: '#6B7280'\n }),\n createdAt: timestamp('created_at').defaultNow().notNull(),\n updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n/**\n * 事件分享表 - 用于共享日历功能\n */\nexport const eventShares = pgTable('event_shares', {\n id: serial('id').primaryKey(),\n eventId: integer('event_id').notNull().references(() => calendarEvents.id, { onDelete: 'cascade' }),\n sharedWithUserId: integer('shared_with_user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),\n sharedByUserId: integer('shared_by_user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),\n permission: varchar('permission', { length: 20 }).notNull().default('read'), // read, write\n createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n\n// ===== 关系定义 =====\n\n/**\n * 日历事件关系\n */\nexport const calendarEventsRelations = relations(calendarEvents, ({ one, many }) => ({\n user: one(users, {\n fields: [calendarEvents.userId],\n references: [users.id],\n }),\n recurrenceRule: one(recurrenceRules, {\n fields: [calendarEvents.id],\n references: [recurrenceRules.eventId],\n }),\n reminders: many(reminders),\n shares: many(eventShares),\n}));\n\n/**\n * 重复规则关系\n */\nexport const recurrenceRulesRelations = relations(recurrenceRules, ({ one }) => ({\n event: one(calendarEvents, {\n fields: [recurrenceRules.eventId],\n references: [calendarEvents.id],\n }),\n}));\n\n/**\n * 提醒关系\n */\nexport const remindersRelations = relations(reminders, ({ one }) => ({\n event: one(calendarEvents, {\n fields: [reminders.eventId],\n references: [calendarEvents.id],\n }),\n}));\n\n/**\n * 日历配置关系\n */\nexport const calendarConfigsRelations = relations(calendarConfigs, ({ one }) => ({\n user: one(users, {\n fields: [calendarConfigs.userId],\n references: [users.id],\n }),\n}));\n\n/**\n * 事件分享关系\n */\nexport const eventSharesRelations = relations(eventShares, ({ one }) => ({\n event: one(calendarEvents, {\n fields: [eventShares.eventId],\n references: [calendarEvents.id],\n }),\n sharedWithUser: one(users, {\n fields: [eventShares.sharedWithUserId],\n references: [users.id],\n }),\n sharedByUser: one(users, {\n fields: [eventShares.sharedByUserId],\n references: [users.id],\n }),\n}));\n\n// 所有表和关系已在上面使用 export 关键字导出 ","import { and, eq, gte, lte, desc, asc } from 'drizzle-orm';\nimport {\n calendarEvents,\n recurrenceRules,\n reminders,\n calendarConfigs,\n eventShares\n} from './schema';\n\n/**\n * 简化版日历数据库服务\n * \n * 提供基础的数据库操作,避免复杂的类型转换\n * 后续可以根据需要逐步完善\n */\nclass CalendarDbService {\n private _db: any;\n\n /**\n * 设置数据库实例\n */\n setDb(db: any) {\n this._db = db;\n }\n\n /**\n * 数据库是否已初始化\n */\n isConfigured() {\n return Boolean(this._db);\n }\n\n /**\n * 获取数据库实例\n */\n get db() {\n if (!this._db) {\n throw new Error('CalendarDbService: Database instance not set. Call setDb() first.');\n }\n return this._db;\n }\n \n // ===== 事件基础操作 =====\n\n /**\n * 获取用户的所有事件(基础版本)\n */\n async getAllEvents(userId: number, startDate?: Date, endDate?: Date) {\n const conditions = [eq(calendarEvents.userId, userId)];\n \n if (startDate) {\n conditions.push(gte(calendarEvents.startTime, startDate));\n }\n \n if (endDate) {\n conditions.push(lte(calendarEvents.endTime, endDate));\n }\n\n const events = await this.db\n .select()\n .from(calendarEvents)\n .where(and(...conditions))\n .orderBy(asc(calendarEvents.startTime));\n\n return events;\n }\n\n /**\n * 根据ID获取事件\n */\n async getEventById(eventId: number) {\n const [event] = await this.db\n .select()\n .from(calendarEvents)\n .where(eq(calendarEvents.id, eventId))\n .limit(1);\n\n return event || null;\n }\n\n /**\n * 创建事件(基础版本)\n */\n async createEvent(eventData: {\n title: string;\n description?: string;\n startTime: Date;\n endTime: Date;\n allDay: boolean;\n location?: string;\n color: string;\n userId: number;\n }) {\n const [newEvent] = await this.db\n .insert(calendarEvents)\n .values(eventData)\n .returning();\n\n return newEvent;\n }\n\n /**\n * 更新事件\n */\n async updateEvent(eventId: number, eventData: {\n title?: string;\n description?: string;\n startTime?: Date;\n endTime?: Date;\n allDay?: boolean;\n location?: string;\n color?: string;\n }) {\n const updateData = {\n ...eventData,\n updatedAt: new Date()\n };\n\n const [updatedEvent] = await this.db\n .update(calendarEvents)\n .set(updateData)\n .where(eq(calendarEvents.id, eventId))\n .returning();\n\n return updatedEvent;\n }\n\n /**\n * 删除事件\n */\n async deleteEvent(eventId: number): Promise<void> {\n await this.db\n .delete(calendarEvents)\n .where(eq(calendarEvents.id, eventId));\n }\n\n // ===== 用户配置操作 =====\n\n /**\n * 获取用户的日历配置\n */\n async getUserConfig(userId: number) {\n const [config] = await this.db\n .select()\n .from(calendarConfigs)\n .where(eq(calendarConfigs.userId, userId))\n .limit(1);\n\n return config || null;\n }\n\n /**\n * 创建或更新用户配置\n */\n async upsertUserConfig(userId: number, configData: {\n firstDayOfWeek?: number;\n workingHoursStart?: string;\n workingHoursEnd?: string;\n timeZone?: string;\n dateFormat?: string;\n timeFormat?: string;\n defaultView?: string;\n defaultEventColor?: string;\n weekends?: boolean;\n eventColors?: Record<string, string>;\n }) {\n const existingConfig = await this.getUserConfig(userId);\n\n if (existingConfig) {\n // 更新现有配置\n const [updatedConfig] = await this.db\n .update(calendarConfigs)\n .set({\n ...configData,\n updatedAt: new Date()\n })\n .where(eq(calendarConfigs.userId, userId))\n .returning();\n\n return updatedConfig;\n } else {\n // 创建新配置\n const [newConfig] = await this.db\n .insert(calendarConfigs)\n .values({\n userId,\n ...configData\n })\n .returning();\n\n return newConfig;\n }\n }\n\n /**\n * 为事件创建重复规则\n */\n async createRecurrenceRule(ruleData: {\n eventId: number;\n ruleType: string;\n interval: number;\n endDate?: Date;\n count?: number;\n byWeekday?: number[];\n byMonthday?: number[];\n byMonth?: number[];\n }) {\n const [newRule] = await this.db\n .insert(recurrenceRules)\n .values(ruleData)\n .returning();\n\n return newRule;\n }\n\n /**\n * 获取事件的重复规则\n */\n async getRecurrenceRule(eventId: number) {\n const [rule] = await this.db\n .select()\n .from(recurrenceRules)\n .where(eq(recurrenceRules.eventId, eventId))\n .limit(1);\n\n return rule || null;\n }\n\n /**\n * 删除重复规则\n */\n async deleteRecurrenceRule(eventId: number): Promise<void> {\n await this.db\n .delete(recurrenceRules)\n .where(eq(recurrenceRules.eventId, eventId));\n }\n\n /**\n * 为事件创建提醒\n */\n async createReminder(reminderData: {\n eventId: number;\n reminderTime: Date;\n reminderType: string;\n status?: string;\n }) {\n const [newReminder] = await this.db\n .insert(reminders)\n .values({\n ...reminderData,\n status: reminderData.status || 'pending'\n })\n .returning();\n\n return newReminder;\n }\n\n /**\n * 获取事件的提醒列表\n */\n async getEventReminders(eventId: number) {\n const remindersList = await this.db\n .select()\n .from(reminders)\n .where(eq(reminders.eventId, eventId))\n .orderBy(asc(reminders.reminderTime));\n\n return remindersList;\n }\n\n /**\n * 删除事件的所有提醒\n */\n async deleteEventReminders(eventId: number): Promise<void> {\n await this.db\n .delete(reminders)\n .where(eq(reminders.eventId, eventId));\n }\n\n /**\n * 获取用户在指定时间范围内的事件数量\n */\n async getEventCount(userId: number, startDate?: Date, endDate?: Date): Promise<number> {\n const conditions = [eq(calendarEvents.userId, userId)];\n \n if (startDate) {\n conditions.push(gte(calendarEvents.startTime, startDate));\n }\n \n if (endDate) {\n conditions.push(lte(calendarEvents.endTime, endDate));\n }\n\n const result = await this.db\n .select({ count: calendarEvents.id })\n .from(calendarEvents)\n .where(and(...conditions));\n\n return result.length;\n }\n\n /**\n * 搜索事件\n */\n async searchEvents(userId: number, searchTerm: string) {\n const events = await this.db\n .select()\n .from(calendarEvents)\n .where(\n and(\n eq(calendarEvents.userId, userId),\n )\n )\n .orderBy(desc(calendarEvents.startTime));\n\n return events.filter((event: any) => \n event.title.toLowerCase().includes(searchTerm.toLowerCase()) ||\n (event.description && event.description.toLowerCase().includes(searchTerm.toLowerCase()))\n );\n }\n\n /**\n * 批量删除用户的所有事件\n */\n async deleteAllUserEvents(userId: number): Promise<void> {\n await this.db\n .delete(calendarEvents)\n .where(eq(calendarEvents.userId, userId));\n }\n}\n\n\n// 导出单例实例\nexport const calendarDbService = new CalendarDbService();\nexport default calendarDbService; ","/**\n * 从 Request 解析 Better Auth session(替代自研 JWT validateApiAuth)\n */\nimport type { Sa2kitAuthInstance } from './types';\n\nexport type SessionUser = {\n id: string;\n email: string;\n name: string;\n role?: string;\n phoneNumber?: string | null;\n};\n\nexport async function getSessionUser(\n auth: Sa2kitAuthInstance,\n request: Request,\n): Promise<SessionUser | null> {\n const session = await auth.api.getSession({ headers: request.headers });\n if (!session?.user) return null;\n\n const user = session.user as SessionUser & { role?: string };\n return {\n id: user.id,\n email: user.email,\n name: user.name,\n role: user.role,\n phoneNumber: (user as { phoneNumber?: string | null }).phoneNumber ?? null,\n };\n}\n\nexport type SessionUserNumeric = Omit<SessionUser, 'id'> & { id: number };\n\n/** 兼容 numeric id 消费方(legacy calendar 等) */\nexport async function getSessionUserNumeric(\n auth: Sa2kitAuthInstance,\n request: Request,\n): Promise<SessionUserNumeric | null> {\n const user = await getSessionUser(auth, request);\n if (!user) return null;\n const numericId = Number.parseInt(user.id, 10);\n if (Number.isNaN(numericId)) return null;\n const { id: _id, ...rest } = user;\n return { ...rest, id: numericId };\n}\n\nexport function createSessionValidator(auth: Sa2kitAuthInstance) {\n return {\n getSessionUser: (request: Request) => getSessionUser(auth, request),\n getSessionUserNumeric: (request: Request) => getSessionUserNumeric(auth, request),\n };\n}\n","import type { NextRequest } from 'next/server';\nimport { calendarDbService } from '../db/calendarDbService';\nimport type { Sa2kitAuthInstance } from '../../common/auth/server/types';\nimport { createSessionValidator } from '../../common/auth/server/session';\n\nexport type CalendarAuthValidator = (\n request: NextRequest,\n) => Promise<{ id: number } | null>;\n\nlet configuredValidator: CalendarAuthValidator | null = null;\n\n/**\n * 注入 calendar API 路由使用的 session 校验(应用启动时调用一次)\n */\nexport function configureCalendarApiAuth(validateAuth: CalendarAuthValidator): void {\n configuredValidator = validateAuth;\n}\n\n/** 重置(测试用) */\nexport function resetCalendarApiAuth(): void {\n configuredValidator = null;\n}\n\nexport function resolveCalendarAuthValidator(\n validateAuth?: CalendarAuthValidator,\n): CalendarAuthValidator {\n const validator = validateAuth ?? configuredValidator;\n if (!validator) {\n throw new Error(\n 'Calendar API 未配置 auth:请在应用启动时调用 configureCalendarApiAuth(validateAuth),' +\n '或 configureCalendarApiWithBetterAuth(auth),或在 createDefaultCalendarRouteConfig(validateAuth) 中显式传入。',\n );\n }\n return validator;\n}\n\n/**\n * 使用 Better Auth session 一键配置 calendar API\n */\nexport function configureCalendarApiWithBetterAuth(\n auth: Sa2kitAuthInstance,\n options?: { db?: unknown },\n): void {\n const { getSessionUserNumeric } = createSessionValidator(auth);\n configureCalendarApiAuth((request) => getSessionUserNumeric(request));\n if (options?.db) {\n calendarDbService.setDb(options.db);\n }\n}\n","import type { NextRequest } from 'next/server';\nimport { calendarDbService } from '../db/calendarDbService';\nimport type { CalendarRouteConfig } from '../routes';\nimport {\n resolveCalendarAuthValidator,\n type CalendarAuthValidator,\n} from './auth-config';\n\nexport {\n configureCalendarApiAuth,\n configureCalendarApiWithBetterAuth,\n resetCalendarApiAuth,\n type CalendarAuthValidator,\n} from './auth-config';\n\n/**\n * 创建 calendar 路由所需的 validateAuth(由 Better Auth session 注入)\n *\n * @example\n * ```ts\n * configureCalendarApiWithBetterAuth(auth, { db });\n * const routeConfig = createDefaultCalendarRouteConfig();\n * export const GET = createGetEventsHandler(routeConfig);\n * ```\n */\nexport function createCalendarAuthRequirement(\n validateAuth: CalendarAuthValidator,\n): CalendarAuthValidator {\n return validateAuth;\n}\n\nexport function ensureCalendarDbReady() {\n if (calendarDbService.isConfigured()) return null;\n\n return Response.json(\n {\n success: false,\n error:\n 'Calendar DB is not initialized. Please call calendarDbService.setDb(db) or use create*Handler from sa2kit/calendar/routes with db injection.',\n },\n { status: 500 },\n );\n}\n\nexport function createDefaultCalendarRouteConfig(\n validateAuth?: CalendarAuthValidator,\n): CalendarRouteConfig {\n return {\n validateAuth: resolveCalendarAuthValidator(validateAuth),\n };\n}\n\nexport function withCalendarDbGuard<T extends unknown[]>(\n handler: (...args: T) => Promise<Response>,\n) {\n return async (...args: T): Promise<Response> => {\n const dbError = ensureCalendarDbReady();\n if (dbError) return dbError;\n return handler(...args);\n };\n}\n","import type { NextRequest } from 'next/server';\nimport {\n createBatchDeleteEventsHandler,\n createConfigHandler,\n createCreateEventHandler,\n createDeleteEventHandler,\n createGetEventByIdHandler,\n createGetEventsHandler,\n createUpdateEventHandler,\n type CalendarRouteConfig,\n} from '../routes';\nimport { createDefaultCalendarRouteConfig, withCalendarDbGuard } from './_shared';\n\nfunction resolveConfig(config?: CalendarRouteConfig): CalendarRouteConfig {\n return config ?? createDefaultCalendarRouteConfig();\n}\n\n/** 懒加载:首次请求时再解析 auth / 创建 handler */\nfunction lazyHandler<T extends (...args: never[]) => Promise<Response>>(\n factory: (config: CalendarRouteConfig) => T,\n config?: CalendarRouteConfig,\n) {\n let handler: T | null = null;\n return (...args: Parameters<T>) => {\n if (!handler) {\n handler = factory(resolveConfig(config));\n }\n return handler(...args);\n };\n}\n\nexport function createCalendarEventsRouteHandlers(config?: CalendarRouteConfig) {\n return {\n GET: withCalendarDbGuard(lazyHandler(createGetEventsHandler, config)),\n POST: withCalendarDbGuard(lazyHandler(createCreateEventHandler, config)),\n };\n}\n\nexport function createCalendarEventByIdRouteHandlers(config?: CalendarRouteConfig) {\n return {\n GET: withCalendarDbGuard(\n lazyHandler(createGetEventByIdHandler, config) as (\n request: NextRequest,\n routeParams: { params: { id: string } },\n ) => Promise<Response>,\n ),\n PUT: withCalendarDbGuard(\n lazyHandler(createUpdateEventHandler, config) as (\n request: NextRequest,\n routeParams: { params: { id: string } },\n ) => Promise<Response>,\n ),\n DELETE: withCalendarDbGuard(\n lazyHandler(createDeleteEventHandler, config) as (\n request: NextRequest,\n routeParams: { params: { id: string } },\n ) => Promise<Response>,\n ),\n };\n}\n\nexport function createCalendarBatchDeleteRouteHandlers(config?: CalendarRouteConfig) {\n return {\n DELETE: withCalendarDbGuard(lazyHandler(createBatchDeleteEventsHandler, config)),\n };\n}\n\nexport function createCalendarConfigRouteHandlers(config?: CalendarRouteConfig) {\n let configHandlers: ReturnType<typeof createConfigHandler> | null = null;\n const ensureConfigHandlers = () => {\n if (!configHandlers) {\n configHandlers = createConfigHandler(resolveConfig(config));\n }\n return configHandlers;\n };\n\n return {\n GET: withCalendarDbGuard((request: NextRequest) => ensureConfigHandlers().GET(request)),\n PUT: withCalendarDbGuard((request: NextRequest) => ensureConfigHandlers().PUT(request)),\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport { calendarDbService } from '../db/calendarDbService';\n\nexport interface CalendarRouteConfig {\n /**\n * Drizzle 数据库实例\n * 如果提供,将自动初始化 calendarDbService\n */\n db?: any;\n /**\n * 验证用户身份的函数\n * 应该返回用户信息或 null\n */\n validateAuth: (request: NextRequest) => Promise<{ id: number } | null>;\n}\n\n/**\n * 初始化数据库服务的辅助函数\n */\nfunction initDbService(db?: any) {\n if (db) {\n calendarDbService.setDb(db);\n }\n}\n\n/**\n * 创建获取日历事件列表的处理器\n */\nexport function createGetEventsHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const { searchParams } = new URL(request.url);\n const startDateStr = searchParams.get('startDate');\n const endDateStr = searchParams.get('endDate');\n\n let startDate: Date | undefined;\n let endDate: Date | undefined;\n\n if (startDateStr) {\n startDate = new Date(startDateStr);\n if (isNaN(startDate.getTime())) {\n return NextResponse.json({ success: false, error: '开始日期格式无效' }, { status: 400 });\n }\n }\n\n if (endDateStr) {\n endDate = new Date(endDateStr);\n if (isNaN(endDate.getTime())) {\n return NextResponse.json({ success: false, error: '结束日期格式无效' }, { status: 400 });\n }\n }\n\n const events = await calendarDbService.getAllEvents(user.id, startDate, endDate);\n\n return NextResponse.json({\n success: true,\n data: events,\n message: '获取事件列表成功'\n });\n } catch (error) {\n console.error('获取事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建日历事件的处理器\n */\nexport function createCreateEventHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const body = await request.json();\n \n if (!body.title || typeof body.title !== 'string' || body.title.trim() === '') {\n return NextResponse.json({ success: false, error: '事件标题不能为空' }, { status: 400 });\n }\n\n if (!body.startTime || !body.endTime) {\n return NextResponse.json({ success: false, error: '开始时间和结束时间不能为空' }, { status: 400 });\n }\n\n const startTime = new Date(body.startTime);\n const endTime = new Date(body.endTime);\n\n if (isNaN(startTime.getTime()) || isNaN(endTime.getTime())) {\n return NextResponse.json({ success: false, error: '日期格式无效' }, { status: 400 });\n }\n\n if (startTime.getTime() >= endTime.getTime()) {\n return NextResponse.json({ success: false, error: '结束时间必须晚于开始时间' }, { status: 400 });\n }\n\n const eventData = {\n title: body.title.trim(),\n description: body.description || null,\n startTime,\n endTime,\n allDay: Boolean(body.allDay),\n location: body.location || null,\n color: body.color || '#3B82F6',\n userId: user.id,\n };\n\n const newEvent = await calendarDbService.createEvent(eventData);\n\n if (body.recurrence) {\n await calendarDbService.createRecurrenceRule({\n eventId: newEvent.id,\n ...body.recurrence,\n endDate: body.recurrence.endDate ? new Date(body.recurrence.endDate) : undefined,\n });\n }\n\n if (body.reminders && Array.isArray(body.reminders)) {\n for (const reminder of body.reminders) {\n if (reminder.reminderTime) {\n await calendarDbService.createReminder({\n eventId: newEvent.id,\n reminderTime: new Date(reminder.reminderTime),\n reminderType: reminder.reminderType || 'notification',\n status: 'pending'\n });\n }\n }\n }\n\n return NextResponse.json({\n success: true,\n data: newEvent,\n message: '创建事件成功'\n });\n } catch (error) {\n console.error('创建事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建获取单个事件的处理器\n */\nexport function createGetEventByIdHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest, { params }: { params: { id: string } }) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const eventId = parseInt(params.id);\n if (isNaN(eventId)) {\n return NextResponse.json({ success: false, error: '事件ID无效' }, { status: 400 });\n }\n\n const event = await calendarDbService.getEventById(eventId);\n if (!event) {\n return NextResponse.json({ success: false, error: '事件不存在' }, { status: 404 });\n }\n\n if (event.userId !== user.id) {\n return NextResponse.json({ success: false, error: '无权访问此事件' }, { status: 403 });\n }\n\n const [recurrenceRule, reminders] = await Promise.all([\n calendarDbService.getRecurrenceRule(eventId),\n calendarDbService.getEventReminders(eventId)\n ]);\n\n return NextResponse.json({\n success: true,\n data: {\n ...event,\n recurrenceRule: recurrenceRule || undefined,\n reminders: reminders || []\n },\n message: '获取事件成功'\n });\n } catch (error) {\n console.error('获取事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建更新事件的处理器\n */\nexport function createUpdateEventHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest, { params }: { params: { id: string } }) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const eventId = parseInt(params.id);\n if (isNaN(eventId)) {\n return NextResponse.json({ success: false, error: '事件ID无效' }, { status: 400 });\n }\n\n const existingEvent = await calendarDbService.getEventById(eventId);\n if (!existingEvent || existingEvent.userId !== user.id) {\n return NextResponse.json({ success: false, error: '事件不存在或无权修改' }, { status: 404 });\n }\n\n const body = await request.json();\n const updateData: any = {};\n\n if (body.title !== undefined) updateData.title = body.title.trim();\n if (body.description !== undefined) updateData.description = body.description;\n if (body.startTime !== undefined) updateData.startTime = new Date(body.startTime);\n if (body.endTime !== undefined) updateData.endTime = new Date(body.endTime);\n if (body.allDay !== undefined) updateData.allDay = Boolean(body.allDay);\n if (body.location !== undefined) updateData.location = body.location;\n if (body.color !== undefined) updateData.color = body.color;\n\n const updatedEvent = await calendarDbService.updateEvent(eventId, updateData);\n\n if (body.recurrence !== undefined) {\n await calendarDbService.deleteRecurrenceRule(eventId);\n if (body.recurrence) {\n await calendarDbService.createRecurrenceRule({\n eventId,\n ...body.recurrence,\n endDate: body.recurrence.endDate ? new Date(body.recurrence.endDate) : undefined,\n });\n }\n }\n\n if (body.reminders !== undefined) {\n await calendarDbService.deleteEventReminders(eventId);\n if (Array.isArray(body.reminders)) {\n for (const reminder of body.reminders) {\n if (reminder.reminderTime) {\n await calendarDbService.createReminder({\n eventId,\n reminderTime: new Date(reminder.reminderTime),\n reminderType: reminder.reminderType || 'notification',\n status: 'pending'\n });\n }\n }\n }\n }\n\n return NextResponse.json({\n success: true,\n data: updatedEvent,\n message: '更新事件成功'\n });\n } catch (error) {\n console.error('更新事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建删除事件的处理器\n */\nexport function createDeleteEventHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest, { params }: { params: { id: string } }) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const eventId = parseInt(params.id);\n if (isNaN(eventId)) {\n return NextResponse.json({ success: false, error: '事件ID无效' }, { status: 400 });\n }\n\n const existingEvent = await calendarDbService.getEventById(eventId);\n if (!existingEvent || existingEvent.userId !== user.id) {\n return NextResponse.json({ success: false, error: '事件不存在或无权删除' }, { status: 404 });\n }\n\n await calendarDbService.deleteEvent(eventId);\n\n return NextResponse.json({\n success: true,\n message: '删除事件成功'\n });\n } catch (error) {\n console.error('删除事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建批量删除事件的处理器\n */\nexport function createBatchDeleteEventsHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const body = await request.json();\n if (!body.eventIds || !Array.isArray(body.eventIds)) {\n return NextResponse.json({ success: false, error: '事件ID列表不能为空' }, { status: 400 });\n }\n\n const results = await Promise.all(\n body.eventIds.map(async (id: number) => {\n const event = await calendarDbService.getEventById(id);\n if (event && event.userId === user.id) {\n await calendarDbService.deleteEvent(id);\n return true;\n }\n return false;\n })\n );\n\n const deletedCount = results.filter(Boolean).length;\n\n return NextResponse.json({\n success: true,\n data: { deletedCount },\n message: '成功删除 ' + (deletedCount) + ' 个事件'\n });\n } catch (error) {\n console.error('批量删除事件失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n };\n}\n\n/**\n * 创建配置处理器的工厂\n */\nexport function createConfigHandler(config: CalendarRouteConfig) {\n initDbService(config.db);\n return {\n GET: async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const dbConfig = await calendarDbService.getUserConfig(user.id);\n return NextResponse.json({\n success: true,\n data: dbConfig || {\n firstDayOfWeek: 1,\n workingHoursStart: '09:00',\n workingHoursEnd: '18:00',\n timeZone: 'Asia/Shanghai',\n dateFormat: 'YYYY-MM-DD',\n timeFormat: 'HH:mm',\n defaultView: 'month',\n defaultEventColor: '#3B82F6',\n weekends: true,\n eventColors: {}\n },\n message: '获取配置成功'\n });\n } catch (error) {\n console.error('获取配置失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n },\n PUT: async (request: NextRequest) => {\n try {\n const user = await config.validateAuth(request);\n if (!user) {\n return NextResponse.json({ success: false, error: '未授权访问' }, { status: 401 });\n }\n\n const body = await request.json();\n const updatedConfig = await calendarDbService.upsertUserConfig(user.id, body);\n\n return NextResponse.json({\n success: true,\n data: updatedConfig,\n message: '更新配置成功'\n });\n } catch (error) {\n console.error('更新配置失败:', error);\n return NextResponse.json({ success: false, error: '服务器内部错误' }, { status: 500 });\n }\n }\n };\n}\n\nexport {\n configureCalendarApiAuth,\n configureCalendarApiWithBetterAuth,\n resetCalendarApiAuth,\n createCalendarAuthRequirement,\n createDefaultCalendarRouteConfig,\n withCalendarDbGuard,\n type CalendarAuthValidator,\n} from '../api/_shared';\n\nexport {\n createCalendarEventsRouteHandlers,\n createCalendarEventByIdRouteHandlers,\n createCalendarBatchDeleteRouteHandlers,\n createCalendarConfigRouteHandlers,\n} from '../api/route-handlers';\n\n"]}