mulguard 1.1.7 → 1.1.8

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 (546) hide show
  1. package/README.md +21 -582
  2. package/adapters.d.ts +2 -0
  3. package/adapters.d.ts.map +1 -0
  4. package/adapters.js +1 -0
  5. package/index.d.ts +329 -0
  6. package/index.d.ts.map +1 -0
  7. package/index.js +145 -0
  8. package/jwt.d.ts +9 -0
  9. package/jwt.d.ts.map +1 -0
  10. package/jwt.js +8 -0
  11. package/lib/actions.d.ts +13 -0
  12. package/lib/actions.d.ts.map +1 -0
  13. package/lib/actions.js +86 -0
  14. package/lib/client.d.ts +104 -0
  15. package/lib/client.d.ts.map +1 -0
  16. package/lib/client.js +95 -0
  17. package/lib/env.d.ts +12 -0
  18. package/lib/env.d.ts.map +1 -0
  19. package/lib/env.js +38 -0
  20. package/lib/index.d.ts +56 -0
  21. package/lib/index.d.ts.map +1 -0
  22. package/lib/index.js +187 -0
  23. package/lib/types.d.ts +24 -0
  24. package/lib/types.d.ts.map +1 -0
  25. package/lib/types.js +1 -0
  26. package/middleware.d.ts +9 -0
  27. package/middleware.d.ts.map +1 -0
  28. package/middleware.js +12 -0
  29. package/next.d.ts +9 -0
  30. package/next.d.ts.map +1 -0
  31. package/next.js +12 -0
  32. package/package.json +117 -126
  33. package/providers/42-school.d.ts +3 -0
  34. package/providers/42-school.d.ts.map +1 -0
  35. package/providers/42-school.js +2 -0
  36. package/providers/apple.d.ts +3 -0
  37. package/providers/apple.d.ts.map +1 -0
  38. package/providers/apple.js +2 -0
  39. package/providers/asgardeo.d.ts +3 -0
  40. package/providers/asgardeo.d.ts.map +1 -0
  41. package/providers/asgardeo.js +2 -0
  42. package/providers/atlassian.d.ts +3 -0
  43. package/providers/atlassian.d.ts.map +1 -0
  44. package/providers/atlassian.js +2 -0
  45. package/providers/auth0.d.ts +3 -0
  46. package/providers/auth0.d.ts.map +1 -0
  47. package/providers/auth0.js +2 -0
  48. package/providers/authentik.d.ts +3 -0
  49. package/providers/authentik.d.ts.map +1 -0
  50. package/providers/authentik.js +2 -0
  51. package/providers/azure-ad-b2c.d.ts +3 -0
  52. package/providers/azure-ad-b2c.d.ts.map +1 -0
  53. package/providers/azure-ad-b2c.js +2 -0
  54. package/providers/azure-ad.d.ts +3 -0
  55. package/providers/azure-ad.d.ts.map +1 -0
  56. package/providers/azure-ad.js +2 -0
  57. package/providers/azure-devops.d.ts +3 -0
  58. package/providers/azure-devops.d.ts.map +1 -0
  59. package/providers/azure-devops.js +2 -0
  60. package/providers/bankid-no.d.ts +3 -0
  61. package/providers/bankid-no.d.ts.map +1 -0
  62. package/providers/bankid-no.js +2 -0
  63. package/providers/battlenet.d.ts +3 -0
  64. package/providers/battlenet.d.ts.map +1 -0
  65. package/providers/battlenet.js +2 -0
  66. package/providers/beyondidentity.d.ts +3 -0
  67. package/providers/beyondidentity.d.ts.map +1 -0
  68. package/providers/beyondidentity.js +2 -0
  69. package/providers/bitbucket.d.ts +3 -0
  70. package/providers/bitbucket.d.ts.map +1 -0
  71. package/providers/bitbucket.js +2 -0
  72. package/providers/box.d.ts +3 -0
  73. package/providers/box.d.ts.map +1 -0
  74. package/providers/box.js +2 -0
  75. package/providers/boxyhq-saml.d.ts +3 -0
  76. package/providers/boxyhq-saml.d.ts.map +1 -0
  77. package/providers/boxyhq-saml.js +2 -0
  78. package/providers/bungie.d.ts +3 -0
  79. package/providers/bungie.d.ts.map +1 -0
  80. package/providers/bungie.js +2 -0
  81. package/providers/click-up.d.ts +3 -0
  82. package/providers/click-up.d.ts.map +1 -0
  83. package/providers/click-up.js +2 -0
  84. package/providers/cognito.d.ts +3 -0
  85. package/providers/cognito.d.ts.map +1 -0
  86. package/providers/cognito.js +2 -0
  87. package/providers/coinbase.d.ts +3 -0
  88. package/providers/coinbase.d.ts.map +1 -0
  89. package/providers/coinbase.js +2 -0
  90. package/providers/concept2.d.ts +3 -0
  91. package/providers/concept2.d.ts.map +1 -0
  92. package/providers/concept2.js +2 -0
  93. package/providers/credentials.d.ts +3 -0
  94. package/providers/credentials.d.ts.map +1 -0
  95. package/providers/credentials.js +2 -0
  96. package/providers/descope.d.ts +3 -0
  97. package/providers/descope.d.ts.map +1 -0
  98. package/providers/descope.js +2 -0
  99. package/providers/discord.d.ts +3 -0
  100. package/providers/discord.d.ts.map +1 -0
  101. package/providers/discord.js +2 -0
  102. package/providers/dribbble.d.ts +3 -0
  103. package/providers/dribbble.d.ts.map +1 -0
  104. package/providers/dribbble.js +2 -0
  105. package/providers/dropbox.d.ts +3 -0
  106. package/providers/dropbox.d.ts.map +1 -0
  107. package/providers/dropbox.js +2 -0
  108. package/providers/duende-identity-server6.d.ts +3 -0
  109. package/providers/duende-identity-server6.d.ts.map +1 -0
  110. package/providers/duende-identity-server6.js +2 -0
  111. package/providers/email.d.ts +3 -0
  112. package/providers/email.d.ts.map +1 -0
  113. package/providers/email.js +2 -0
  114. package/providers/eventbrite.d.ts +3 -0
  115. package/providers/eventbrite.d.ts.map +1 -0
  116. package/providers/eventbrite.js +2 -0
  117. package/providers/eveonline.d.ts +3 -0
  118. package/providers/eveonline.d.ts.map +1 -0
  119. package/providers/eveonline.js +2 -0
  120. package/providers/facebook.d.ts +3 -0
  121. package/providers/facebook.d.ts.map +1 -0
  122. package/providers/facebook.js +2 -0
  123. package/providers/faceit.d.ts +3 -0
  124. package/providers/faceit.d.ts.map +1 -0
  125. package/providers/faceit.js +2 -0
  126. package/providers/figma.d.ts +3 -0
  127. package/providers/figma.d.ts.map +1 -0
  128. package/providers/figma.js +2 -0
  129. package/providers/forwardemail.d.ts +3 -0
  130. package/providers/forwardemail.d.ts.map +1 -0
  131. package/providers/forwardemail.js +2 -0
  132. package/providers/foursquare.d.ts +3 -0
  133. package/providers/foursquare.d.ts.map +1 -0
  134. package/providers/foursquare.js +2 -0
  135. package/providers/freshbooks.d.ts +3 -0
  136. package/providers/freshbooks.d.ts.map +1 -0
  137. package/providers/freshbooks.js +2 -0
  138. package/providers/frontegg.d.ts +3 -0
  139. package/providers/frontegg.d.ts.map +1 -0
  140. package/providers/frontegg.js +2 -0
  141. package/providers/fusionauth.d.ts +3 -0
  142. package/providers/fusionauth.d.ts.map +1 -0
  143. package/providers/fusionauth.js +2 -0
  144. package/providers/github.d.ts +3 -0
  145. package/providers/github.d.ts.map +1 -0
  146. package/providers/github.js +2 -0
  147. package/providers/gitlab.d.ts +3 -0
  148. package/providers/gitlab.d.ts.map +1 -0
  149. package/providers/gitlab.js +2 -0
  150. package/providers/google.d.ts +3 -0
  151. package/providers/google.d.ts.map +1 -0
  152. package/providers/google.js +2 -0
  153. package/providers/hubspot.d.ts +3 -0
  154. package/providers/hubspot.d.ts.map +1 -0
  155. package/providers/hubspot.js +2 -0
  156. package/providers/huggingface.d.ts +3 -0
  157. package/providers/huggingface.d.ts.map +1 -0
  158. package/providers/huggingface.js +2 -0
  159. package/providers/identity-server4.d.ts +3 -0
  160. package/providers/identity-server4.d.ts.map +1 -0
  161. package/providers/identity-server4.js +2 -0
  162. package/providers/index.d.ts +2 -0
  163. package/providers/index.d.ts.map +1 -0
  164. package/providers/index.js +1 -0
  165. package/providers/instagram.d.ts +3 -0
  166. package/providers/instagram.d.ts.map +1 -0
  167. package/providers/instagram.js +2 -0
  168. package/providers/kakao.d.ts +3 -0
  169. package/providers/kakao.d.ts.map +1 -0
  170. package/providers/kakao.js +2 -0
  171. package/providers/keycloak.d.ts +3 -0
  172. package/providers/keycloak.d.ts.map +1 -0
  173. package/providers/keycloak.js +2 -0
  174. package/providers/kinde.d.ts +3 -0
  175. package/providers/kinde.d.ts.map +1 -0
  176. package/providers/kinde.js +2 -0
  177. package/providers/line.d.ts +3 -0
  178. package/providers/line.d.ts.map +1 -0
  179. package/providers/line.js +2 -0
  180. package/providers/linkedin.d.ts +3 -0
  181. package/providers/linkedin.d.ts.map +1 -0
  182. package/providers/linkedin.js +2 -0
  183. package/providers/logto.d.ts +3 -0
  184. package/providers/logto.d.ts.map +1 -0
  185. package/providers/logto.js +2 -0
  186. package/providers/loops.d.ts +3 -0
  187. package/providers/loops.d.ts.map +1 -0
  188. package/providers/loops.js +2 -0
  189. package/providers/mailchimp.d.ts +3 -0
  190. package/providers/mailchimp.d.ts.map +1 -0
  191. package/providers/mailchimp.js +2 -0
  192. package/providers/mailgun.d.ts +3 -0
  193. package/providers/mailgun.d.ts.map +1 -0
  194. package/providers/mailgun.js +2 -0
  195. package/providers/mailru.d.ts +3 -0
  196. package/providers/mailru.d.ts.map +1 -0
  197. package/providers/mailru.js +2 -0
  198. package/providers/mastodon.d.ts +3 -0
  199. package/providers/mastodon.d.ts.map +1 -0
  200. package/providers/mastodon.js +2 -0
  201. package/providers/mattermost.d.ts +3 -0
  202. package/providers/mattermost.d.ts.map +1 -0
  203. package/providers/mattermost.js +2 -0
  204. package/providers/medium.d.ts +3 -0
  205. package/providers/medium.d.ts.map +1 -0
  206. package/providers/medium.js +2 -0
  207. package/providers/microsoft-entra-id.d.ts +3 -0
  208. package/providers/microsoft-entra-id.d.ts.map +1 -0
  209. package/providers/microsoft-entra-id.js +2 -0
  210. package/providers/naver.d.ts +3 -0
  211. package/providers/naver.d.ts.map +1 -0
  212. package/providers/naver.js +2 -0
  213. package/providers/netlify.d.ts +3 -0
  214. package/providers/netlify.d.ts.map +1 -0
  215. package/providers/netlify.js +2 -0
  216. package/providers/netsuite.d.ts +3 -0
  217. package/providers/netsuite.d.ts.map +1 -0
  218. package/providers/netsuite.js +2 -0
  219. package/providers/nextcloud.d.ts +3 -0
  220. package/providers/nextcloud.d.ts.map +1 -0
  221. package/providers/nextcloud.js +2 -0
  222. package/providers/nodemailer.d.ts +3 -0
  223. package/providers/nodemailer.d.ts.map +1 -0
  224. package/providers/nodemailer.js +2 -0
  225. package/providers/notion.d.ts +3 -0
  226. package/providers/notion.d.ts.map +1 -0
  227. package/providers/notion.js +2 -0
  228. package/providers/okta.d.ts +3 -0
  229. package/providers/okta.d.ts.map +1 -0
  230. package/providers/okta.js +2 -0
  231. package/providers/onelogin.d.ts +3 -0
  232. package/providers/onelogin.d.ts.map +1 -0
  233. package/providers/onelogin.js +2 -0
  234. package/providers/ory-hydra.d.ts +3 -0
  235. package/providers/ory-hydra.d.ts.map +1 -0
  236. package/providers/ory-hydra.js +2 -0
  237. package/providers/osso.d.ts +3 -0
  238. package/providers/osso.d.ts.map +1 -0
  239. package/providers/osso.js +2 -0
  240. package/providers/osu.d.ts +3 -0
  241. package/providers/osu.d.ts.map +1 -0
  242. package/providers/osu.js +2 -0
  243. package/providers/passage.d.ts +3 -0
  244. package/providers/passage.d.ts.map +1 -0
  245. package/providers/passage.js +2 -0
  246. package/providers/passkey.d.ts +3 -0
  247. package/providers/passkey.d.ts.map +1 -0
  248. package/providers/passkey.js +2 -0
  249. package/providers/patreon.d.ts +3 -0
  250. package/providers/patreon.d.ts.map +1 -0
  251. package/providers/patreon.js +2 -0
  252. package/providers/ping-id.d.ts +3 -0
  253. package/providers/ping-id.d.ts.map +1 -0
  254. package/providers/ping-id.js +2 -0
  255. package/providers/pinterest.d.ts +3 -0
  256. package/providers/pinterest.d.ts.map +1 -0
  257. package/providers/pinterest.js +2 -0
  258. package/providers/pipedrive.d.ts +3 -0
  259. package/providers/pipedrive.d.ts.map +1 -0
  260. package/providers/pipedrive.js +2 -0
  261. package/providers/postmark.d.ts +3 -0
  262. package/providers/postmark.d.ts.map +1 -0
  263. package/providers/postmark.js +2 -0
  264. package/providers/reddit.d.ts +3 -0
  265. package/providers/reddit.d.ts.map +1 -0
  266. package/providers/reddit.js +2 -0
  267. package/providers/resend.d.ts +3 -0
  268. package/providers/resend.d.ts.map +1 -0
  269. package/providers/resend.js +2 -0
  270. package/providers/roblox.d.ts +3 -0
  271. package/providers/roblox.d.ts.map +1 -0
  272. package/providers/roblox.js +2 -0
  273. package/providers/salesforce.d.ts +3 -0
  274. package/providers/salesforce.d.ts.map +1 -0
  275. package/providers/salesforce.js +2 -0
  276. package/providers/sendgrid.d.ts +3 -0
  277. package/providers/sendgrid.d.ts.map +1 -0
  278. package/providers/sendgrid.js +2 -0
  279. package/providers/simplelogin.d.ts +3 -0
  280. package/providers/simplelogin.d.ts.map +1 -0
  281. package/providers/simplelogin.js +2 -0
  282. package/providers/slack.d.ts +3 -0
  283. package/providers/slack.d.ts.map +1 -0
  284. package/providers/slack.js +2 -0
  285. package/providers/spotify.d.ts +3 -0
  286. package/providers/spotify.d.ts.map +1 -0
  287. package/providers/spotify.js +2 -0
  288. package/providers/strava.d.ts +3 -0
  289. package/providers/strava.d.ts.map +1 -0
  290. package/providers/strava.js +2 -0
  291. package/providers/threads.d.ts +3 -0
  292. package/providers/threads.d.ts.map +1 -0
  293. package/providers/threads.js +2 -0
  294. package/providers/tiktok.d.ts +3 -0
  295. package/providers/tiktok.d.ts.map +1 -0
  296. package/providers/tiktok.js +2 -0
  297. package/providers/todoist.d.ts +3 -0
  298. package/providers/todoist.d.ts.map +1 -0
  299. package/providers/todoist.js +2 -0
  300. package/providers/trakt.d.ts +3 -0
  301. package/providers/trakt.d.ts.map +1 -0
  302. package/providers/trakt.js +2 -0
  303. package/providers/twitch.d.ts +3 -0
  304. package/providers/twitch.d.ts.map +1 -0
  305. package/providers/twitch.js +2 -0
  306. package/providers/twitter.d.ts +3 -0
  307. package/providers/twitter.d.ts.map +1 -0
  308. package/providers/twitter.js +2 -0
  309. package/providers/united-effects.d.ts +3 -0
  310. package/providers/united-effects.d.ts.map +1 -0
  311. package/providers/united-effects.js +2 -0
  312. package/providers/vipps.d.ts +3 -0
  313. package/providers/vipps.d.ts.map +1 -0
  314. package/providers/vipps.js +2 -0
  315. package/providers/vk.d.ts +3 -0
  316. package/providers/vk.d.ts.map +1 -0
  317. package/providers/vk.js +2 -0
  318. package/providers/webauthn.d.ts +3 -0
  319. package/providers/webauthn.d.ts.map +1 -0
  320. package/providers/webauthn.js +2 -0
  321. package/providers/webex.d.ts +3 -0
  322. package/providers/webex.d.ts.map +1 -0
  323. package/providers/webex.js +2 -0
  324. package/providers/wechat.d.ts +3 -0
  325. package/providers/wechat.d.ts.map +1 -0
  326. package/providers/wechat.js +2 -0
  327. package/providers/wikimedia.d.ts +3 -0
  328. package/providers/wikimedia.d.ts.map +1 -0
  329. package/providers/wikimedia.js +2 -0
  330. package/providers/wordpress.d.ts +3 -0
  331. package/providers/wordpress.d.ts.map +1 -0
  332. package/providers/wordpress.js +2 -0
  333. package/providers/workos.d.ts +3 -0
  334. package/providers/workos.d.ts.map +1 -0
  335. package/providers/workos.js +2 -0
  336. package/providers/yandex.d.ts +3 -0
  337. package/providers/yandex.d.ts.map +1 -0
  338. package/providers/yandex.js +2 -0
  339. package/providers/zitadel.d.ts +3 -0
  340. package/providers/zitadel.d.ts.map +1 -0
  341. package/providers/zitadel.js +2 -0
  342. package/providers/zoho.d.ts +3 -0
  343. package/providers/zoho.d.ts.map +1 -0
  344. package/providers/zoho.js +2 -0
  345. package/providers/zoom.d.ts +3 -0
  346. package/providers/zoom.d.ts.map +1 -0
  347. package/providers/zoom.js +2 -0
  348. package/react.d.ts +102 -0
  349. package/react.d.ts.map +1 -0
  350. package/react.js +361 -0
  351. package/src/adapters.ts +1 -0
  352. package/src/index.ts +430 -0
  353. package/src/jwt.ts +9 -0
  354. package/src/lib/actions.ts +144 -0
  355. package/src/lib/client.ts +245 -0
  356. package/src/lib/env.ts +36 -0
  357. package/src/lib/index.ts +313 -0
  358. package/src/lib/types.ts +30 -0
  359. package/src/middleware.ts +16 -0
  360. package/src/next.ts +16 -0
  361. package/src/providers/42-school.ts +2 -0
  362. package/src/providers/apple.ts +2 -0
  363. package/src/providers/asgardeo.ts +2 -0
  364. package/src/providers/atlassian.ts +2 -0
  365. package/src/providers/auth0.ts +2 -0
  366. package/src/providers/authentik.ts +2 -0
  367. package/src/providers/azure-ad-b2c.ts +2 -0
  368. package/src/providers/azure-ad.ts +2 -0
  369. package/src/providers/azure-devops.ts +2 -0
  370. package/src/providers/bankid-no.ts +2 -0
  371. package/src/providers/battlenet.ts +2 -0
  372. package/src/providers/beyondidentity.ts +2 -0
  373. package/src/providers/bitbucket.ts +2 -0
  374. package/src/providers/box.ts +2 -0
  375. package/src/providers/boxyhq-saml.ts +2 -0
  376. package/src/providers/bungie.ts +2 -0
  377. package/src/providers/click-up.ts +2 -0
  378. package/src/providers/cognito.ts +2 -0
  379. package/src/providers/coinbase.ts +2 -0
  380. package/src/providers/concept2.ts +2 -0
  381. package/src/providers/credentials.ts +2 -0
  382. package/src/providers/descope.ts +2 -0
  383. package/src/providers/discord.ts +2 -0
  384. package/src/providers/dribbble.ts +2 -0
  385. package/src/providers/dropbox.ts +2 -0
  386. package/src/providers/duende-identity-server6.ts +2 -0
  387. package/src/providers/email.ts +2 -0
  388. package/src/providers/eventbrite.ts +2 -0
  389. package/src/providers/eveonline.ts +2 -0
  390. package/src/providers/facebook.ts +2 -0
  391. package/src/providers/faceit.ts +2 -0
  392. package/src/providers/figma.ts +2 -0
  393. package/src/providers/forwardemail.ts +2 -0
  394. package/src/providers/foursquare.ts +2 -0
  395. package/src/providers/freshbooks.ts +2 -0
  396. package/src/providers/frontegg.ts +2 -0
  397. package/src/providers/fusionauth.ts +2 -0
  398. package/src/providers/github.ts +2 -0
  399. package/src/providers/gitlab.ts +2 -0
  400. package/src/providers/google.ts +2 -0
  401. package/src/providers/hubspot.ts +2 -0
  402. package/src/providers/huggingface.ts +2 -0
  403. package/src/providers/identity-server4.ts +2 -0
  404. package/src/providers/index.ts +1 -0
  405. package/src/providers/instagram.ts +2 -0
  406. package/src/providers/kakao.ts +2 -0
  407. package/src/providers/keycloak.ts +2 -0
  408. package/src/providers/kinde.ts +2 -0
  409. package/src/providers/line.ts +2 -0
  410. package/src/providers/linkedin.ts +2 -0
  411. package/src/providers/logto.ts +2 -0
  412. package/src/providers/loops.ts +2 -0
  413. package/src/providers/mailchimp.ts +2 -0
  414. package/src/providers/mailgun.ts +2 -0
  415. package/src/providers/mailru.ts +2 -0
  416. package/src/providers/mastodon.ts +2 -0
  417. package/src/providers/mattermost.ts +2 -0
  418. package/src/providers/medium.ts +2 -0
  419. package/src/providers/microsoft-entra-id.ts +2 -0
  420. package/src/providers/naver.ts +2 -0
  421. package/src/providers/netlify.ts +2 -0
  422. package/src/providers/netsuite.ts +2 -0
  423. package/src/providers/nextcloud.ts +2 -0
  424. package/src/providers/nodemailer.ts +2 -0
  425. package/src/providers/notion.ts +2 -0
  426. package/src/providers/okta.ts +2 -0
  427. package/src/providers/onelogin.ts +2 -0
  428. package/src/providers/ory-hydra.ts +2 -0
  429. package/src/providers/osso.ts +2 -0
  430. package/src/providers/osu.ts +2 -0
  431. package/src/providers/passage.ts +2 -0
  432. package/src/providers/passkey.ts +2 -0
  433. package/src/providers/patreon.ts +2 -0
  434. package/src/providers/ping-id.ts +2 -0
  435. package/src/providers/pinterest.ts +2 -0
  436. package/src/providers/pipedrive.ts +2 -0
  437. package/src/providers/postmark.ts +2 -0
  438. package/src/providers/reddit.ts +2 -0
  439. package/src/providers/resend.ts +2 -0
  440. package/src/providers/roblox.ts +2 -0
  441. package/src/providers/salesforce.ts +2 -0
  442. package/src/providers/sendgrid.ts +2 -0
  443. package/src/providers/simplelogin.ts +2 -0
  444. package/src/providers/slack.ts +2 -0
  445. package/src/providers/spotify.ts +2 -0
  446. package/src/providers/strava.ts +2 -0
  447. package/src/providers/threads.ts +2 -0
  448. package/src/providers/tiktok.ts +2 -0
  449. package/src/providers/todoist.ts +2 -0
  450. package/src/providers/trakt.ts +2 -0
  451. package/src/providers/twitch.ts +2 -0
  452. package/src/providers/twitter.ts +2 -0
  453. package/src/providers/united-effects.ts +2 -0
  454. package/src/providers/vipps.ts +2 -0
  455. package/src/providers/vk.ts +2 -0
  456. package/src/providers/webauthn.ts +2 -0
  457. package/src/providers/webex.ts +2 -0
  458. package/src/providers/wechat.ts +2 -0
  459. package/src/providers/wikimedia.ts +2 -0
  460. package/src/providers/wordpress.ts +2 -0
  461. package/src/providers/workos.ts +2 -0
  462. package/src/providers/yandex.ts +2 -0
  463. package/src/providers/zitadel.ts +2 -0
  464. package/src/providers/zoho.ts +2 -0
  465. package/src/providers/zoom.ts +2 -0
  466. package/src/react.tsx +546 -0
  467. package/src/webauthn.ts +152 -0
  468. package/webauthn.d.ts +9 -0
  469. package/webauthn.d.ts.map +1 -0
  470. package/webauthn.js +92 -0
  471. package/LICENSE +0 -70
  472. package/dist/actions-CMtg7FGv.js +0 -1
  473. package/dist/actions-CjQUKaXF.mjs +0 -200
  474. package/dist/client/index.js +0 -1
  475. package/dist/client/index.mjs +0 -484
  476. package/dist/components/AccountPicker.d.ts +0 -11
  477. package/dist/components/OAuthButton.d.ts +0 -11
  478. package/dist/components/PassKeyButton.d.ts +0 -11
  479. package/dist/components/PassKeyRegister.d.ts +0 -10
  480. package/dist/components/TwoFactorSetup.d.ts +0 -8
  481. package/dist/components/TwoFactorVerify.d.ts +0 -9
  482. package/dist/core/account-picker/encryption.d.ts +0 -22
  483. package/dist/core/account-picker/index.d.ts +0 -22
  484. package/dist/core/auth/email-password.d.ts +0 -145
  485. package/dist/core/auth/oauth/index.d.ts +0 -14
  486. package/dist/core/auth/oauth/oauth-handler.d.ts +0 -172
  487. package/dist/core/auth/oauth/pkce.d.ts +0 -168
  488. package/dist/core/auth/oauth/providers.d.ts +0 -198
  489. package/dist/core/auth/oauth/state-store-cookie.d.ts +0 -83
  490. package/dist/core/auth/oauth/state-store-redis.d.ts +0 -25
  491. package/dist/core/auth/oauth/state-store.d.ts +0 -48
  492. package/dist/core/auth/otp.d.ts +0 -184
  493. package/dist/core/auth/passkey.d.ts +0 -35
  494. package/dist/core/auth/password.d.ts +0 -22
  495. package/dist/core/auth/signin-unified.d.ts +0 -33
  496. package/dist/core/auth/two-factor.d.ts +0 -28
  497. package/dist/core/client/index.d.ts +0 -132
  498. package/dist/core/client/token-refresh-manager.d.ts +0 -48
  499. package/dist/core/errors/index.d.ts +0 -269
  500. package/dist/core/index.d.ts +0 -9
  501. package/dist/core/logger/index.d.ts +0 -147
  502. package/dist/core/mulguard/auth-handlers.d.ts +0 -100
  503. package/dist/core/mulguard/defaults.d.ts +0 -58
  504. package/dist/core/mulguard/index.d.ts +0 -9
  505. package/dist/core/mulguard/integration.d.ts +0 -104
  506. package/dist/core/mulguard/oauth-handler.d.ts +0 -93
  507. package/dist/core/mulguard/session-manager.d.ts +0 -94
  508. package/dist/core/security/csrf.d.ts +0 -46
  509. package/dist/core/security/headers.d.ts +0 -24
  510. package/dist/core/security/index.d.ts +0 -132
  511. package/dist/core/security/rate-limit.d.ts +0 -39
  512. package/dist/core/security/security-manager.d.ts +0 -236
  513. package/dist/core/security/validation.d.ts +0 -251
  514. package/dist/core/security/xss.d.ts +0 -20
  515. package/dist/core/session/index.d.ts +0 -35
  516. package/dist/core/session/session-manager.d.ts +0 -235
  517. package/dist/core/types/auth.d.ts +0 -290
  518. package/dist/core/types/errors.d.ts +0 -200
  519. package/dist/core/types/index.d.ts +0 -484
  520. package/dist/core/utils/auth-helpers.d.ts +0 -136
  521. package/dist/core/utils/logger.d.ts +0 -121
  522. package/dist/index/index.js +0 -1
  523. package/dist/index/index.mjs +0 -2736
  524. package/dist/index.d.ts +0 -18
  525. package/dist/mulguard.d.ts +0 -373
  526. package/dist/nextjs/client/hooks.d.ts +0 -122
  527. package/dist/nextjs/client/index.d.ts +0 -13
  528. package/dist/nextjs/client/provider.d.ts +0 -69
  529. package/dist/nextjs/client/server-actions-helper.d.ts +0 -22
  530. package/dist/nextjs/handlers/api.d.ts +0 -10
  531. package/dist/nextjs/handlers/index.d.ts +0 -9
  532. package/dist/nextjs/handlers/route.d.ts +0 -76
  533. package/dist/nextjs/index.d.ts +0 -15
  534. package/dist/nextjs/proxy/index.d.ts +0 -149
  535. package/dist/nextjs/proxy/security.d.ts +0 -9
  536. package/dist/nextjs/server/actions.d.ts +0 -30
  537. package/dist/nextjs/server/auth.d.ts +0 -65
  538. package/dist/nextjs/server/cookies.d.ts +0 -41
  539. package/dist/nextjs/server/index.d.ts +0 -18
  540. package/dist/nextjs/server/oauth-state.d.ts +0 -32
  541. package/dist/nextjs/server/session-helpers.d.ts +0 -24
  542. package/dist/nextjs/server/session.d.ts +0 -144
  543. package/dist/oauth-state-Drwz6fES.js +0 -1
  544. package/dist/oauth-state-pdypStuS.mjs +0 -210
  545. package/dist/server/index.js +0 -1
  546. package/dist/server/index.mjs +0 -29
@@ -1,76 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { MulguardInstance } from '../../mulguard';
3
- /**
4
- * Route handler options.
5
- */
6
- export interface RouteHandlerOptions {
7
- readonly auth: MulguardInstance;
8
- }
9
- /**
10
- * Creates Next.js route handlers for Mulguard authentication.
11
- *
12
- * @param auth - Mulguard instance
13
- * @returns Route handlers for GET and POST requests
14
- *
15
- * @example
16
- * ```typescript
17
- * // app/api/auth/[...mulguard]/route.ts
18
- * import { auth } from '@/auth'
19
- * import { toNextJsHandler } from 'mulguard'
20
- *
21
- * export const { GET, POST } = toNextJsHandler(auth)
22
- * ```
23
- */
24
- export declare function toNextJsHandler(auth: MulguardInstance): {
25
- GET: (request: NextRequest) => Promise<NextResponse>;
26
- POST: (request: NextRequest) => Promise<NextResponse>;
27
- };
28
- /**
29
- * TODO: Performance
30
- * - [ ] Add request rate limiting middleware
31
- * - [ ] Implement request caching for GET /session
32
- * - [ ] Add request body size limits
33
- * - [ ] Optimize path matching with compiled regex
34
- *
35
- * TODO: Features
36
- * - [ ] Add request logging middleware
37
- * - [ ] Implement request validation middleware
38
- * - [ ] Add CORS support configuration
39
- * - [ ] Create request/response transformation hooks
40
- * - [ ] Add request timeout handling
41
- *
42
- * TODO: Type Safety
43
- * - [ ] Add runtime validation for request bodies
44
- * - [ ] Create type-safe route definitions
45
- * - [ ] Implement compile-time route validation
46
- * - [ ] Add type guards for all request bodies
47
- *
48
- * TODO: Security
49
- * - [ ] Add CSRF token validation for state-changing operations
50
- * - [ ] Implement request origin validation
51
- * - [ ] Add request signing verification
52
- * - [ ] Create security headers middleware
53
- *
54
- * TODO: Error Handling
55
- * - [ ] Add structured error responses
56
- * - [ ] Implement error logging
57
- * - [ ] Create error recovery strategies
58
- * - [ ] Add error reporting
59
- *
60
- * TODO: Testing
61
- * - [ ] Add comprehensive route handler tests
62
- * - [ ] Test all error scenarios
63
- * - [ ] Test path matching logic
64
- * - [ ] Add integration tests
65
- *
66
- * TODO: Documentation
67
- * - [ ] Document all supported routes
68
- * - [ ] Add route examples
69
- * - [ ] Create troubleshooting guide
70
- *
71
- * TODO: Limitations
72
- * - [ ] Path matching is basic (consider route table)
73
- * - [ ] No request body validation (add schema validation)
74
- * - [ ] Error messages may expose internal details
75
- * - [ ] No request timeout configuration
76
- */
@@ -1,15 +0,0 @@
1
- /**
2
- * Next.js Integration for Mulguard Authentication Library.
3
- *
4
- * Provides comprehensive Next.js integration including:
5
- * - Server-side utilities (getServerSession, Server Actions)
6
- * - Client-side hooks (useAuth, useSession, Provider)
7
- * - Proxy middleware (Next.js 16+)
8
- * - Route handlers (App Router)
9
- *
10
- * @module @mulguard/nextjs
11
- */
12
- export * from './server';
13
- export * from './client';
14
- export * from './proxy';
15
- export * from './handlers';
@@ -1,149 +0,0 @@
1
- import { NextResponse, NextRequest } from 'next/server';
2
- import { MulguardInstance } from '../../mulguard';
3
- /**
4
- * Proxy middleware configuration.
5
- */
6
- export interface ProxyMiddlewareConfig {
7
- /**
8
- * Mulguard auth instance.
9
- */
10
- readonly auth: MulguardInstance;
11
- /**
12
- * Protected routes that require authentication.
13
- *
14
- * @example
15
- * ['/dashboard', '/profile', '/settings']
16
- */
17
- readonly protectedRoutes?: readonly string[];
18
- /**
19
- * Public routes accessible without authentication.
20
- *
21
- * @example
22
- * ['/login', '/signup', '/about']
23
- */
24
- readonly publicRoutes?: readonly string[];
25
- /**
26
- * Redirect to this URL if not authenticated.
27
- *
28
- * @default '/login'
29
- */
30
- readonly redirectTo?: string;
31
- /**
32
- * Redirect to this URL if already authenticated (for login/register pages).
33
- *
34
- * @example
35
- * '/dashboard'
36
- */
37
- readonly redirectIfAuthenticated?: string;
38
- /**
39
- * API routes prefix (default: '/api/auth').
40
- */
41
- readonly apiPrefix?: string;
42
- /**
43
- * Enable security headers.
44
- *
45
- * @default true
46
- */
47
- readonly enableSecurityHeaders?: boolean;
48
- }
49
- /**
50
- * Creates proxy middleware for Next.js 16+.
51
- *
52
- * Replaces the old middleware.ts pattern with proxy-based approach.
53
- *
54
- * @param config - Proxy middleware configuration
55
- * @returns Proxy middleware function
56
- *
57
- * @example
58
- * ```typescript
59
- * // proxy.ts (Next.js 16+)
60
- * import { createProxyMiddleware } from 'mulguard/nextjs/proxy'
61
- * import { auth } from '@/lib/auth'
62
- *
63
- * export default createProxyMiddleware({
64
- * auth,
65
- * protectedRoutes: ['/dashboard', '/profile'],
66
- * redirectTo: '/login',
67
- * redirectIfAuthenticated: '/dashboard',
68
- * })
69
- *
70
- * export const config = {
71
- * matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
72
- * }
73
- * ```
74
- */
75
- export declare function createProxyMiddleware(config: ProxyMiddlewareConfig): (request: NextRequest) => Promise<NextResponse>;
76
- /**
77
- * Checks if user has required role (for role-based access control).
78
- *
79
- * @param auth - Mulguard auth instance
80
- * @param requiredRole - Required role
81
- * @returns True if user has required role
82
- *
83
- * @example
84
- * ```typescript
85
- * const hasAdminRole = await checkRole(auth, 'admin')
86
- * if (!hasAdminRole) {
87
- * return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
88
- * }
89
- * ```
90
- */
91
- export declare function checkRole(auth: MulguardInstance, requiredRole: string): Promise<boolean>;
92
- /**
93
- * Creates a role-based proxy middleware.
94
- *
95
- * @param config - Proxy middleware configuration
96
- * @param requiredRole - Required role
97
- * @returns Proxy middleware function with role check
98
- *
99
- * @example
100
- * ```typescript
101
- * export default createRoleBasedProxy(
102
- * { auth, protectedRoutes: ['/admin'] },
103
- * 'admin'
104
- * )
105
- * ```
106
- */
107
- export declare function createRoleBasedProxy(config: ProxyMiddlewareConfig, requiredRole: string): (request: NextRequest) => Promise<NextResponse>;
108
- export { withSecurityHeaders } from './security';
109
- /**
110
- * TODO: Performance
111
- * - [ ] Add session caching for proxy middleware
112
- * - [ ] Optimize route matching with compiled regex
113
- * - [ ] Add request-level session cache
114
- * - [ ] Implement route preloading
115
- *
116
- * TODO: Features
117
- * - [ ] Add IP-based rate limiting in proxy
118
- * - [ ] Implement request logging
119
- * - [ ] Add custom redirect logic support
120
- * - [ ] Create route permission system
121
- * - [ ] Add middleware chaining support
122
- *
123
- * TODO: Type Safety
124
- * - [ ] Add branded types for routes
125
- * - [ ] Create type-safe route matching
126
- * - [ ] Implement compile-time route validation
127
- *
128
- * TODO: Security
129
- * - [ ] Add request fingerprinting
130
- * - [ ] Implement bot detection
131
- * - [ ] Add DDoS protection
132
- * - [ ] Create security event logging
133
- *
134
- * TODO: Testing
135
- * - [ ] Add comprehensive unit tests
136
- * - [ ] Test route matching logic
137
- * - [ ] Test redirect behavior
138
- * - [ ] Add Next.js integration tests
139
- *
140
- * TODO: Documentation
141
- * - [ ] Document proxy middleware usage
142
- * - [ ] Add route protection guide
143
- * - [ ] Create security best practices guide
144
- *
145
- * TODO: Limitations
146
- * - [ ] Proxy middleware runs on every request (consider caching)
147
- * - [ ] Session check is synchronous (consider async optimization)
148
- * - [ ] Route matching is simple (consider regex support)
149
- */
@@ -1,9 +0,0 @@
1
- import { NextResponse, NextRequest } from 'next/server';
2
- /**
3
- * Apply security headers to response
4
- */
5
- export declare function withSecurityHeaders(_request: NextRequest, response: NextResponse): NextResponse;
6
- /**
7
- * Security middleware wrapper
8
- */
9
- export declare function createSecurityMiddleware(): (request: NextRequest) => Promise<NextResponse>;
@@ -1,30 +0,0 @@
1
- import { MulguardInstance } from '../../mulguard';
2
- import { Verify2FAData, AuthResult, EmailCredentials, RegisterData } from '../../core/types';
3
- /**
4
- * Verify 2FA code - Server Action
5
- *
6
- * @example
7
- * ```typescript
8
- * 'use client'
9
- * import { verify2FAAction } from 'mulguard/nextjs/server'
10
- * import { auth } from '@/lib/auth'
11
- *
12
- * const result = await verify2FAAction(auth, { email, userId, code })
13
- * ```
14
- */
15
- export declare function verify2FAAction(auth: MulguardInstance, data: Verify2FAData): Promise<AuthResult>;
16
- /**
17
- * Sign out - Server Action
18
- */
19
- export declare function signOutAction(auth: MulguardInstance): Promise<{
20
- success: boolean;
21
- error?: string;
22
- }>;
23
- /**
24
- * Sign in with email - Server Action
25
- */
26
- export declare function signInEmailAction(auth: MulguardInstance, credentials: EmailCredentials): Promise<AuthResult>;
27
- /**
28
- * Sign up - Server Action
29
- */
30
- export declare function signUpAction(auth: MulguardInstance, data: RegisterData): Promise<AuthResult>;
@@ -1,65 +0,0 @@
1
- import { Session, User } from '../../core/types';
2
- import { MulguardInstance } from '../../mulguard';
3
- /**
4
- * Get server session using auth instance
5
- *
6
- * @example
7
- * ```typescript
8
- * import { auth } from '@/auth'
9
- * import { getServerSession } from 'mulguard/nextjs/server'
10
- *
11
- * export default async function Page() {
12
- * const session = await getServerSession(auth)
13
- * if (!session) {
14
- * redirect('/login')
15
- * }
16
- * return <div>Hello {session.user.name}</div>
17
- * }
18
- * ```
19
- */
20
- export declare function getServerSession(auth: MulguardInstance): Promise<Session | null>;
21
- /**
22
- * Require authentication - redirects if not authenticated
23
- *
24
- * @example
25
- * ```typescript
26
- * import { auth } from '@/auth'
27
- * import { requireAuth } from 'mulguard/nextjs/server'
28
- *
29
- * export default async function ProtectedPage() {
30
- * const session = await requireAuth(auth, '/login')
31
- * return <div>Hello {session.user.name}</div>
32
- * }
33
- * ```
34
- */
35
- export declare function requireAuth(auth: MulguardInstance, redirectTo?: string): Promise<Session>;
36
- /**
37
- * Require specific role
38
- *
39
- * @example
40
- * ```typescript
41
- * import { auth } from '@/auth'
42
- * import { requireRole } from 'mulguard/nextjs/server'
43
- *
44
- * export default async function AdminPage() {
45
- * const session = await requireRole(auth, 'admin', '/unauthorized')
46
- * return <div>Admin Dashboard</div>
47
- * }
48
- * ```
49
- */
50
- export declare function requireRole(auth: MulguardInstance, role: string, redirectTo?: string): Promise<Session>;
51
- /**
52
- * Get current user
53
- *
54
- * @example
55
- * ```typescript
56
- * import { auth } from '@/auth'
57
- * import { getCurrentUser } from 'mulguard/nextjs/server'
58
- *
59
- * export default async function Page() {
60
- * const user = await getCurrentUser(auth)
61
- * return <div>{user ? `Hello ${user.name}` : 'Not logged in'}</div>
62
- * }
63
- * ```
64
- */
65
- export declare function getCurrentUser(auth: MulguardInstance): Promise<User | null>;
@@ -1,41 +0,0 @@
1
- import { SessionConfig } from '../../core/types';
2
- export interface CookieOptions {
3
- name: string;
4
- value: string;
5
- maxAge?: number;
6
- expires?: Date;
7
- httpOnly?: boolean;
8
- secure?: boolean;
9
- sameSite?: 'strict' | 'lax' | 'none';
10
- path?: string;
11
- domain?: string;
12
- }
13
- /**
14
- * Result of setting a cookie
15
- */
16
- export interface SetCookieResult {
17
- success: boolean;
18
- error?: string;
19
- warning?: string;
20
- }
21
- /**
22
- * Get cookie value from Next.js cookies
23
- */
24
- export declare function getCookie(name: string): Promise<string | undefined>;
25
- /**
26
- * Set cookie in Next.js response
27
- *
28
- * @returns Result indicating success or failure with error message
29
- */
30
- export declare function setCookie(options: CookieOptions): Promise<SetCookieResult>;
31
- /**
32
- * Delete cookie
33
- */
34
- export declare function deleteCookie(name: string, options?: {
35
- path?: string;
36
- domain?: string;
37
- }): Promise<void>;
38
- /**
39
- * Build cookie options from session config
40
- */
41
- export declare function buildCookieOptions(name: string, value: string, config: SessionConfig): CookieOptions;
@@ -1,18 +0,0 @@
1
- /**
2
- * Next.js Server-Side Integration for Mulguard Authentication Library.
3
- *
4
- * Provides server-side utilities for Next.js App Router including:
5
- * - Session management (getServerSession, getServerUser)
6
- * - Server Actions helpers
7
- * - Cookie utilities
8
- * - Authentication helpers
9
- *
10
- * @module @mulguard/nextjs/server
11
- */
12
- export * from './session';
13
- export * from './actions';
14
- export { requireAuth, requireRole, getCurrentUser } from './auth';
15
- export * from './cookies';
16
- export * from './session-helpers';
17
- export * from './oauth-state';
18
- export type { Session, User } from '../../core/types';
@@ -1,32 +0,0 @@
1
- /**
2
- * Server-side OAuth state management for Next.js.
3
- *
4
- * Stores OAuth state in httpOnly cookies for security.
5
- *
6
- * ✅ SECURE: Uses httpOnly cookies to prevent XSS attacks
7
- * ✅ PRODUCTION-READY: Works with Next.js Server Actions
8
- *
9
- * ⚠️ NOTE: For production with multiple server instances, use Redis or Database store instead.
10
- *
11
- * @module @mulguard/nextjs/server/oauth-state
12
- */
13
- /**
14
- * Store OAuth state in httpOnly cookie
15
- * ✅ SECURE: Uses httpOnly cookie to prevent XSS attacks
16
- */
17
- export declare function storeOAuthStateCookie(state: string, provider: string): Promise<{
18
- success: boolean;
19
- error?: string;
20
- }>;
21
- /**
22
- * Get and validate OAuth state from cookie
23
- * ✅ SECURE: Validates state and deletes after use (one-time use)
24
- */
25
- export declare function getOAuthStateCookie(): Promise<{
26
- state: string;
27
- provider: string;
28
- } | null>;
29
- /**
30
- * Delete OAuth state cookie
31
- */
32
- export declare function deleteOAuthStateCookie(): Promise<void>;
@@ -1,24 +0,0 @@
1
- import { Session } from '../../core/types';
2
- /**
3
- * Check if session is expired (helper version that accepts null)
4
- */
5
- export declare function isSessionExpiredNullable(session: Session | null): boolean;
6
- /**
7
- * Check if session is expiring soon
8
- * @param session - Session to check
9
- * @param thresholdMinutes - Minutes before expiration to consider "soon" (default: 5)
10
- */
11
- export declare function isSessionExpiringSoon(session: Session | null, thresholdMinutes?: number): boolean;
12
- /**
13
- * Get time until session expiration in minutes
14
- */
15
- export declare function getSessionTimeUntilExpiry(session: Session | null): number | null;
16
- /**
17
- * Check if session is valid (not expired and has required fields)
18
- */
19
- export declare function isSessionValid(session: Session | null): session is Session;
20
- /**
21
- * Validate session structure
22
- * Centralized validation logic used across the library
23
- */
24
- export declare function validateSessionStructure(session: unknown): session is Session;
@@ -1,144 +0,0 @@
1
- import { Session, User } from '../../core/types';
2
- import { MulguardInstance } from '../../mulguard';
3
- /**
4
- * Gets the current session on the server side.
5
- *
6
- * Reads session from cookie and validates expiration.
7
- * Works in Server Components, Server Actions, and API Routes.
8
- *
9
- * @template TUser - User type
10
- * @template TSession - Session type
11
- * @param auth - Mulguard instance
12
- * @returns Current session or null if not authenticated
13
- * @throws SessionExpiredError if session is expired
14
- *
15
- * @example
16
- * ```typescript
17
- * // In Server Component
18
- * import { getServerSession } from 'mulguard/nextjs/server'
19
- * import { auth } from '@/lib/auth'
20
- *
21
- * export default async function DashboardPage() {
22
- * const session = await getServerSession(auth)
23
- * if (!session) {
24
- * redirect('/login')
25
- * }
26
- * return <div>Welcome, {session.user.name}!</div>
27
- * }
28
- * ```
29
- */
30
- export declare function getServerSession<TUser extends User = User, TSession extends Session<TUser> = Session<TUser>>(auth: MulguardInstance): Promise<TSession | null>;
31
- /**
32
- * Checks if user is authenticated on the server side.
33
- *
34
- * @param auth - Mulguard instance
35
- * @returns True if user is authenticated
36
- *
37
- * @example
38
- * ```typescript
39
- * const isAuthenticated = await isAuthenticated(auth)
40
- * if (!isAuthenticated) {
41
- * redirect('/login')
42
- * }
43
- * ```
44
- */
45
- export declare function isAuthenticated(auth: MulguardInstance): Promise<boolean>;
46
- /**
47
- * Gets the current user from session on the server side.
48
- *
49
- * @template TUser - User type
50
- * @param auth - Mulguard instance
51
- * @returns Current user or null if not authenticated
52
- *
53
- * @example
54
- * ```typescript
55
- * const user = await getServerUser(auth)
56
- * if (user) {
57
- * console.log('User:', user.email)
58
- * }
59
- * ```
60
- */
61
- export declare function getServerUser<TUser extends User = User>(auth: MulguardInstance): Promise<TUser | null>;
62
- /**
63
- * Server Action wrapper for authentication operations.
64
- *
65
- * Provides type-safe server actions with automatic error handling.
66
- *
67
- * @template TResult - Result type
68
- * @param action - Server action function
69
- * @returns Server action result
70
- *
71
- * @example
72
- * ```typescript
73
- * 'use server'
74
- *
75
- * import { createServerAction } from 'mulguard/nextjs/server'
76
- * import { auth } from '@/lib/auth'
77
- *
78
- * export const signInAction = createServerAction(async (email: string, password: string) => {
79
- * return await auth.signIn('credentials', { email, password })
80
- * })
81
- * ```
82
- */
83
- export declare function createServerAction<TResult>(action: () => Promise<TResult>): () => Promise<TResult>;
84
- /**
85
- * Server Action with authentication check.
86
- *
87
- * Ensures user is authenticated before executing action.
88
- *
89
- * @template TResult - Result type
90
- * @template TUser - User type
91
- * @param auth - Mulguard instance
92
- * @param action - Server action function with user parameter
93
- * @returns Server action result
94
- *
95
- * @example
96
- * ```typescript
97
- * 'use server'
98
- *
99
- * import { createAuthenticatedAction } from 'mulguard/nextjs/server'
100
- * import { auth } from '@/lib/auth'
101
- *
102
- * export const updateProfileAction = createAuthenticatedAction(auth, async (user, data) => {
103
- * // User is guaranteed to be authenticated here
104
- * return await updateUserProfile(user.id, data)
105
- * })
106
- * ```
107
- */
108
- export declare function createAuthenticatedAction<TResult, TUser extends User = User>(auth: MulguardInstance, action: (user: TUser) => Promise<TResult>): () => Promise<TResult>;
109
- export type { Session, User } from '../../core/types';
110
- export { SessionExpiredError } from '../../core/errors';
111
- /**
112
- * TODO: Performance
113
- * - [ ] Add session caching for Server Components
114
- * - [ ] Implement request-level session cache
115
- * - [ ] Optimize cookie reading
116
- * - [ ] Add session preloading
117
- *
118
- * TODO: Features
119
- * - [ ] Add session refresh helpers
120
- * - [ ] Implement session invalidation
121
- * - [ ] Add session middleware support
122
- * - [ ] Create session debugging utilities
123
- *
124
- * TODO: Type Safety
125
- * - [ ] Add branded types for session IDs
126
- * - [ ] Create type-safe cookie handling
127
- * - [ ] Implement compile-time session validation
128
- *
129
- * TODO: Testing
130
- * - [ ] Add comprehensive unit tests
131
- * - [ ] Test Server Actions integration
132
- * - [ ] Test cookie handling
133
- * - [ ] Add Next.js integration tests
134
- *
135
- * TODO: Documentation
136
- * - [ ] Document Server Actions usage
137
- * - [ ] Add Server Components guide
138
- * - [ ] Create API Routes guide
139
- *
140
- * TODO: Limitations
141
- * - [ ] Cookie handling requires Next.js cookies() API
142
- * - [ ] Server Actions require 'use server' directive
143
- * - [ ] Session caching is per-request (consider global cache)
144
- */
@@ -1 +0,0 @@
1
- "use strict";var y=Object.defineProperty;var m=(t,e,r)=>e in t?y(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var a=(t,e,r)=>m(t,typeof e!="symbol"?e+"":e,r);const o=require("./actions-CMtg7FGv.js"),S=require("next/navigation");class l extends Error{constructor(r,s,i,E){super(s);a(this,"code");a(this,"statusCode");a(this,"details");this.name="AuthError",this.code=r,this.statusCode=i??o.getErrorStatusCode(r),this.details=E,Error.captureStackTrace&&Error.captureStackTrace(this,l)}toJSON(){return{code:this.code,message:this.message,statusCode:this.statusCode,details:this.details}}toErrorResult(){return{success:!1,error:this.message,errorCode:this.code,details:this.details}}}class c extends l{constructor(e="Session has expired",r){super(o.AuthErrorCode.SESSION_EXPIRED,e,void 0,r),this.name="SessionExpiredError"}}function f(t){return!t||!t.expiresAt?!1:new Date(t.expiresAt)<new Date}function O(t,e=5){if(!t||!t.expiresAt)return!1;const r=new Date(t.expiresAt),s=new Date,i=(r.getTime()-s.getTime())/(1e3*60);return i>0&&i<e}function T(t){if(!t||!t.expiresAt)return null;const e=new Date(t.expiresAt),r=new Date,s=(e.getTime()-r.getTime())/(1e3*60);return s>0?Math.floor(s):0}function v(t){return!(!t||!t.user||!t.user.id||!t.user.email||!t.user.name||f(t))}function h(t){if(!t||typeof t!="object")return!1;const e=t;if(!e.user||typeof e.user!="object")return!1;const r=e.user;if(typeof r.id!="string"||r.id.length===0||typeof r.email!="string"||r.email.length===0||typeof r.name!="string"||r.name.length===0||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r.email))return!1;if(e.expiresAt)if(e.expiresAt instanceof Date){if(isNaN(e.expiresAt.getTime()))return!1}else if(typeof e.expiresAt=="string"){const i=new Date(e.expiresAt);if(isNaN(i.getTime()))return!1}else return!1;return!0}async function u(t){try{const e=await t.getSession();if(!e)return null;if((typeof e.expiresAt=="string"?new Date(e.expiresAt):e.expiresAt).getTime()<Date.now())throw new c("Session has expired");return e}catch(e){if(e instanceof c)throw e;return null}}async function C(t){try{return await u(t)!==null}catch{return!1}}async function D(t){const e=await u(t);return(e==null?void 0:e.user)||null}function N(t){return async()=>{try{return await t()}catch(e){throw e}}}function _(t,e){return async()=>{const r=await u(t);if(!r)throw new Error("Authentication required");return await e(r.user)}}async function A(t){try{const e=await t.getSession();return!e||!h(e)||f(e)?null:e}catch(e){return process.env.NODE_ENV==="development"&&console.error("Failed to get server session:",e),null}}async function g(t,e="/login"){const r=await A(t);return r||S.redirect(e),r}async function k(t,e,r="/unauthorized"){const s=await g(t);return(!s.user.roles||!s.user.roles.includes(e))&&S.redirect(r),s}async function U(t){const e=await A(t);return(e==null?void 0:e.user)??null}const d="__mulguard_oauth_state",p=10*60;async function x(t,e){try{const r=JSON.stringify({state:t,provider:e,expiresAt:Date.now()+p*1e3}),s=process.env.NODE_ENV==="production";return await o.setCookie({name:d,value:r,httpOnly:!0,secure:s,sameSite:"lax",maxAge:p,path:"/"})}catch(r){return{success:!1,error:r instanceof Error?r.message:"Failed to store OAuth state"}}}async function w(){try{const t=await o.getCookie(d);if(!t)return null;const e=JSON.parse(t);return e.expiresAt<Date.now()?(await n(),null):(await n(),{state:e.state,provider:e.provider})}catch{return await n(),null}}async function n(){await o.deleteCookie(d,{path:"/"})}const b=Object.freeze(Object.defineProperty({__proto__:null,deleteOAuthStateCookie:n,getOAuthStateCookie:w,storeOAuthStateCookie:x},Symbol.toStringTag,{value:"Module"}));exports.SessionExpiredError=c;exports.createAuthenticatedAction=_;exports.createServerAction=N;exports.deleteOAuthStateCookie=n;exports.getCurrentUser=U;exports.getOAuthStateCookie=w;exports.getServerSession=u;exports.getServerUser=D;exports.getSessionTimeUntilExpiry=T;exports.isAuthenticated=C;exports.isSessionExpiredNullable=f;exports.isSessionExpiringSoon=O;exports.isSessionValid=v;exports.oauthState=b;exports.requireAuth=g;exports.requireRole=k;exports.storeOAuthStateCookie=x;exports.validateSessionStructure=h;