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,145 +0,0 @@
1
- import { EmailCredentials, AuthResult, User, Session } from '../types';
2
- import { SecurityManager } from '../security/security-manager';
3
- import { Logger } from '../logger';
4
- /**
5
- * Email/password authentication configuration.
6
- */
7
- export interface EmailPasswordConfig {
8
- readonly security?: SecurityManager;
9
- readonly logger?: Logger;
10
- readonly requireEmailVerification?: boolean;
11
- readonly maxLoginAttempts?: number;
12
- readonly lockoutDuration?: number;
13
- }
14
- /**
15
- * Email/password authentication handler.
16
- *
17
- * Provides secure email/password authentication with validation,
18
- * rate limiting, and account lockout protection.
19
- *
20
- * @example
21
- * ```typescript
22
- * const handler = new EmailPasswordAuth({
23
- * security: securityManager,
24
- * logger: logger,
25
- * })
26
- *
27
- * const result = await handler.authenticate({
28
- * email: 'user@example.com',
29
- * password: 'password123',
30
- * }, async (email) => {
31
- * // Your custom user lookup logic
32
- * return await db.user.findUnique({ where: { email } })
33
- * })
34
- * ```
35
- */
36
- export declare class EmailPasswordAuth {
37
- private readonly config;
38
- private readonly security;
39
- private readonly loginAttempts;
40
- constructor(config?: EmailPasswordConfig);
41
- /**
42
- * Authenticates a user with email and password.
43
- *
44
- * @template TUser - User type
45
- * @template TSession - Session type
46
- * @param credentials - Email and password credentials
47
- * @param userLookup - Function to lookup user by email
48
- * @param passwordVerify - Function to verify password (optional, uses comparePassword if not provided)
49
- * @param createSession - Function to create session (optional)
50
- * @returns Authentication result
51
- *
52
- * @example
53
- * ```typescript
54
- * const result = await handler.authenticate(
55
- * { email: 'user@example.com', password: 'password123' },
56
- * async (email) => await db.user.findUnique({ where: { email } }),
57
- * async (password, hash) => await bcrypt.compare(password, hash)
58
- * )
59
- * ```
60
- */
61
- authenticate<TUser extends User = User, TSession extends Session<TUser> = Session<TUser>>(credentials: EmailCredentials, userLookup: (email: string) => Promise<TUser | null>, passwordVerify?: (password: string, hash: string) => Promise<boolean>, createSession?: (user: TUser) => Promise<TSession>): Promise<AuthResult<TUser, TSession>>;
62
- /**
63
- * Checks if account is locked.
64
- *
65
- * @param email - User email
66
- * @returns Lockout status
67
- */
68
- private checkAccountLockout;
69
- /**
70
- * Records a failed login attempt.
71
- *
72
- * @param email - User email
73
- */
74
- private recordFailedAttempt;
75
- /**
76
- * Clears failed login attempts for an email.
77
- *
78
- * @param email - User email
79
- */
80
- private clearFailedAttempts;
81
- /**
82
- * Resets login attempts for an email (for admin use).
83
- *
84
- * @param email - User email
85
- */
86
- resetLoginAttempts(email: string): void;
87
- }
88
- /**
89
- * Creates an email/password authentication handler.
90
- *
91
- * @param config - Email/password authentication configuration
92
- * @returns Email/password authentication handler
93
- *
94
- * @example
95
- * ```typescript
96
- * const handler = createEmailPasswordAuth({
97
- * security: securityManager,
98
- * logger: logger,
99
- * })
100
- * ```
101
- */
102
- export declare function createEmailPasswordAuth(config?: EmailPasswordConfig): EmailPasswordAuth;
103
- /**
104
- * TODO: Performance
105
- * - [ ] Add password hashing caching
106
- * - [ ] Optimize user lookup with caching
107
- * - [ ] Implement async password verification
108
- * - [ ] Add batch authentication support
109
- *
110
- * TODO: Features
111
- * - [ ] Add password reset functionality
112
- * - [ ] Implement password change with old password verification
113
- * - [ ] Add password history tracking
114
- * - [ ] Create password expiration support
115
- * - [ ] Add account recovery options
116
- * - [ ] Implement remember me functionality
117
- *
118
- * TODO: Security
119
- * - [ ] Add password breach checking (Have I Been Pwned)
120
- * - [ ] Implement password strength requirements
121
- * - [ ] Add two-factor authentication integration
122
- * - [ ] Create security event logging
123
- * - [ ] Add IP-based lockout
124
- *
125
- * TODO: Type Safety
126
- * - [ ] Add branded types for email addresses
127
- * - [ ] Create type-safe password handling
128
- * - [ ] Implement compile-time validation rules
129
- *
130
- * TODO: Testing
131
- * - [ ] Add comprehensive unit tests
132
- * - [ ] Test account lockout mechanism
133
- * - [ ] Test rate limiting integration
134
- * - [ ] Add password verification tests
135
- *
136
- * TODO: Documentation
137
- * - [ ] Document authentication flow
138
- * - [ ] Add password policy guide
139
- * - [ ] Create security best practices guide
140
- *
141
- * TODO: Limitations
142
- * - [ ] Password verification must be implemented by user
143
- * - [ ] Account lockout is in-memory (consider persistent storage)
144
- * - [ ] No password hashing included (use bcrypt, argon2, etc.)
145
- */
@@ -1,14 +0,0 @@
1
- /**
2
- * OAuth 2.0 Module for Mulguard Authentication Library.
3
- *
4
- * Provides comprehensive OAuth authentication with PKCE support,
5
- * state management, and provider integrations.
6
- *
7
- * @module @mulguard/core/auth/oauth
8
- */
9
- export * from './providers';
10
- export * from './pkce';
11
- export * from './state-store';
12
- export * from './state-store-cookie';
13
- export * from './state-store-redis';
14
- export * from './oauth-handler';
@@ -1,172 +0,0 @@
1
- import { OAuthProvidersConfig, OAuthUserInfo, AuthResult, User, Session } from '../../types';
2
- import { PKCEStorageAdapter } from './pkce';
3
- import { OAuthStateStore } from './state-store';
4
- import { Logger } from '../../logger';
5
- /**
6
- * OAuth handler configuration.
7
- */
8
- export interface OAuthHandlerConfig {
9
- readonly providers: OAuthProvidersConfig;
10
- readonly baseUrl: string;
11
- readonly pkce?: {
12
- readonly enabled: boolean;
13
- readonly storage?: PKCEStorageAdapter;
14
- };
15
- readonly stateStore?: OAuthStateStore;
16
- readonly logger?: Logger;
17
- }
18
- /**
19
- * OAuth initiation result with authorization URL and state.
20
- */
21
- export interface OAuthInitiationResult {
22
- readonly url: string;
23
- readonly state: string;
24
- readonly codeVerifier?: string;
25
- }
26
- /**
27
- * Comprehensive OAuth 2.0 handler with PKCE support.
28
- *
29
- * Provides secure OAuth authentication flow with PKCE protection,
30
- * state management, and comprehensive error handling.
31
- *
32
- * @example
33
- * ```typescript
34
- * const handler = new OAuthHandler({
35
- * providers: {
36
- * google: { clientId: '...', clientSecret: '...' },
37
- * },
38
- * baseUrl: 'https://example.com',
39
- * pkce: { enabled: true },
40
- * })
41
- *
42
- * // Initiate OAuth flow
43
- * const { url, state, codeVerifier } = await handler.initiate('google')
44
- *
45
- * // Handle callback
46
- * const result = await handler.handleCallback('google', code, state, codeVerifier)
47
- * ```
48
- */
49
- export declare class OAuthHandler {
50
- private readonly config;
51
- private readonly pkceStorage;
52
- constructor(config: OAuthHandlerConfig);
53
- /**
54
- * Initiates OAuth authentication flow.
55
- *
56
- * Generates authorization URL with PKCE (if enabled) and CSRF state token.
57
- *
58
- * @param providerId - OAuth provider identifier
59
- * @returns OAuth initiation result with authorization URL and state
60
- *
61
- * @example
62
- * ```typescript
63
- * const { url, state, codeVerifier } = await handler.initiate('google')
64
- * // Store state and codeVerifier securely
65
- * // Redirect user to url
66
- * ```
67
- */
68
- initiate(providerId: string): Promise<OAuthInitiationResult>;
69
- /**
70
- * Handles OAuth callback and completes authentication.
71
- *
72
- * Validates state token, verifies PKCE (if enabled), exchanges code for tokens,
73
- * retrieves user profile, and creates session.
74
- *
75
- * @template TUser - User type
76
- * @template TSession - Session type
77
- * @param providerId - OAuth provider identifier
78
- * @param code - Authorization code from OAuth callback
79
- * @param state - CSRF state token
80
- * @param codeVerifier - PKCE code verifier (required if PKCE is enabled)
81
- * @param userLookup - Function to lookup/create user from OAuth profile
82
- * @param createSession - Function to create session (optional)
83
- * @returns Authentication result
84
- *
85
- * @example
86
- * ```typescript
87
- * const result = await handler.handleCallback(
88
- * 'google',
89
- * code,
90
- * state,
91
- * storedCodeVerifier,
92
- * async (userInfo) => {
93
- * // Lookup or create user
94
- * return await db.user.findOrCreate({ email: userInfo.email })
95
- * }
96
- * )
97
- * ```
98
- */
99
- handleCallback<TUser extends User = User, TSession extends Session<TUser> = Session<TUser>>(providerId: string, code: string, state: string, codeVerifier?: string, userLookup?: (userInfo: OAuthUserInfo) => Promise<TUser>, createSession?: (user: TUser, userInfo: OAuthUserInfo) => Promise<TSession>): Promise<AuthResult<TUser, TSession>>;
100
- /**
101
- * Validates OAuth state token.
102
- *
103
- * @param state - State token
104
- * @param providerId - Provider identifier
105
- * @returns True if state is valid
106
- */
107
- private validateState;
108
- }
109
- /**
110
- * Creates an OAuth handler instance.
111
- *
112
- * @param config - OAuth handler configuration
113
- * @returns OAuth handler instance
114
- *
115
- * @example
116
- * ```typescript
117
- * const handler = createOAuthHandler({
118
- * providers: {
119
- * google: { clientId: '...', clientSecret: '...' },
120
- * },
121
- * baseUrl: 'https://example.com',
122
- * pkce: { enabled: true },
123
- * })
124
- * ```
125
- */
126
- export declare function createOAuthHandler(config: OAuthHandlerConfig): OAuthHandler;
127
- export * from './pkce';
128
- export * from './providers';
129
- /**
130
- * TODO: Performance
131
- * - [ ] Add OAuth token caching
132
- * - [ ] Optimize user profile retrieval
133
- * - [ ] Implement token refresh caching
134
- * - [ ] Add batch OAuth operations support
135
- *
136
- * TODO: Features
137
- * - [ ] Add OAuth token refresh support
138
- * - [ ] Implement OAuth token revocation
139
- * - [ ] Add OAuth provider discovery
140
- * - [ ] Create OAuth provider plugin system
141
- * - [ ] Add OAuth consent screen customization
142
- *
143
- * TODO: Security
144
- * - [ ] Add OAuth flow rate limiting
145
- * - [ ] Implement OAuth state encryption
146
- * - [ ] Add OAuth token validation
147
- * - [ ] Create security event logging
148
- * - [ ] Add OAuth flow monitoring
149
- *
150
- * TODO: Type Safety
151
- * - [ ] Add branded types for OAuth tokens
152
- * - [ ] Create type-safe provider configuration
153
- * - [ ] Implement compile-time validation
154
- *
155
- * TODO: Testing
156
- * - [ ] Add comprehensive unit tests
157
- * - [ ] Test PKCE flow end-to-end
158
- * - [ ] Test state validation
159
- * - [ ] Add provider-specific tests
160
- *
161
- * TODO: Documentation
162
- * - [ ] Document OAuth flow
163
- * - [ ] Add PKCE setup guide
164
- * - [ ] Create provider configuration guide
165
- * - [ ] Document security best practices
166
- *
167
- * TODO: Limitations
168
- * - [ ] PKCE storage is in-memory (consider Redis for production)
169
- * - [ ] State storage is in-memory (consider Redis for production)
170
- * - [ ] Token refresh not implemented yet
171
- * - [ ] No support for custom OAuth providers yet
172
- */
@@ -1,168 +0,0 @@
1
- /**
2
- * PKCE (Proof Key for Code Exchange) Implementation for OAuth 2.0.
3
- *
4
- * Provides secure PKCE code generation and verification for OAuth flows
5
- * to prevent authorization code interception attacks.
6
- *
7
- * @module @mulguard/core/auth/oauth/pkce
8
- *
9
- * @see {@link https://tools.ietf.org/html/rfc7636} RFC 7636 - PKCE
10
- */
11
- /**
12
- * PKCE code challenge method.
13
- */
14
- export type PKCECodeChallengeMethod = 'S256' | 'plain';
15
- /**
16
- * PKCE code pair (verifier and challenge).
17
- */
18
- export interface PKCECodePair {
19
- readonly codeVerifier: string;
20
- readonly codeChallenge: string;
21
- readonly codeChallengeMethod: PKCECodeChallengeMethod;
22
- }
23
- /**
24
- * PKCE verification result.
25
- */
26
- export interface PKCEVerificationResult {
27
- readonly valid: boolean;
28
- readonly error?: string;
29
- }
30
- /**
31
- * Generates a cryptographically secure random string for PKCE code verifier.
32
- *
33
- * Uses URL-safe base64 encoding (base64url) as per RFC 7636.
34
- *
35
- * @param length - Code verifier length (43-128, default: 43)
36
- * @returns Base64url-encoded code verifier
37
- *
38
- * @example
39
- * ```typescript
40
- * const verifier = generateCodeVerifier()
41
- * // Returns: 'abc123xyz...' (43 characters, base64url encoded)
42
- * ```
43
- */
44
- export declare function generateCodeVerifier(length?: number): string;
45
- /**
46
- * Generates PKCE code challenge from verifier using S256 method.
47
- *
48
- * Uses SHA256 hash and base64url encoding as per RFC 7636.
49
- *
50
- * @param codeVerifier - Code verifier
51
- * @returns Base64url-encoded code challenge
52
- *
53
- * @example
54
- * ```typescript
55
- * const verifier = generateCodeVerifier()
56
- * const challenge = generateCodeChallenge(verifier)
57
- * // Returns: 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM' (base64url encoded SHA256 hash)
58
- * ```
59
- */
60
- export declare function generateCodeChallenge(codeVerifier: string): string;
61
- /**
62
- * Generates a complete PKCE code pair (verifier + challenge).
63
- *
64
- * @param length - Code verifier length (default: 43)
65
- * @param method - Code challenge method (default: 'S256')
66
- * @returns PKCE code pair
67
- *
68
- * @example
69
- * ```typescript
70
- * const { codeVerifier, codeChallenge } = generatePKCECodePair()
71
- * // Store codeVerifier securely (e.g., in session)
72
- * // Use codeChallenge in authorization URL
73
- * ```
74
- */
75
- export declare function generatePKCECodePair(length?: number, method?: PKCECodeChallengeMethod): PKCECodePair;
76
- /**
77
- * Verifies PKCE code challenge against code verifier.
78
- *
79
- * Uses constant-time comparison to prevent timing attacks.
80
- *
81
- * @param codeVerifier - Code verifier (from stored session)
82
- * @param codeChallenge - Code challenge (from authorization request)
83
- * @param method - Code challenge method (default: 'S256')
84
- * @returns Verification result
85
- *
86
- * @example
87
- * ```typescript
88
- * const result = verifyPKCECode(storedVerifier, receivedChallenge)
89
- * if (!result.valid) {
90
- * throw new Error(result.error)
91
- * }
92
- * ```
93
- */
94
- export declare function verifyPKCECode(codeVerifier: string, codeChallenge: string, method?: PKCECodeChallengeMethod): PKCEVerificationResult;
95
- /**
96
- * PKCE code storage adapter interface.
97
- */
98
- export interface PKCEStorageAdapter {
99
- /**
100
- * Stores PKCE code verifier.
101
- *
102
- * @param key - Storage key (e.g., state token)
103
- * @param codeVerifier - Code verifier to store
104
- * @param expiresIn - Expiration time in milliseconds
105
- */
106
- set(key: string, codeVerifier: string, expiresIn: number): Promise<void>;
107
- /**
108
- * Gets PKCE code verifier.
109
- *
110
- * @param key - Storage key
111
- * @returns Code verifier or null if not found/expired
112
- */
113
- get(key: string): Promise<string | null>;
114
- /**
115
- * Deletes PKCE code verifier.
116
- *
117
- * @param key - Storage key
118
- */
119
- delete(key: string): Promise<void>;
120
- }
121
- /**
122
- * In-memory PKCE storage adapter.
123
- */
124
- export declare class MemoryPKCEStorage implements PKCEStorageAdapter {
125
- private readonly storage;
126
- set(key: string, codeVerifier: string, expiresIn: number): Promise<void>;
127
- get(key: string): Promise<string | null>;
128
- delete(key: string): Promise<void>;
129
- }
130
- /**
131
- * TODO: Performance
132
- * - [ ] Add PKCE code pair caching
133
- * - [ ] Optimize SHA256 hashing for high-frequency operations
134
- * - [ ] Consider Web Crypto API for browser environments
135
- *
136
- * TODO: Features
137
- * - [ ] Add Redis-based PKCE storage adapter
138
- * - [ ] Implement PKCE code rotation
139
- * - [ ] Add PKCE code expiration tracking
140
- * - [ ] Create PKCE code cleanup job
141
- *
142
- * TODO: Security
143
- * - [ ] Add PKCE code generation rate limiting
144
- * - [ ] Implement PKCE code audit logging
145
- * - [ ] Add PKCE code strength validation
146
- * - [ ] Create security event monitoring
147
- *
148
- * TODO: Type Safety
149
- * - [ ] Add branded types for code verifier/challenge
150
- * - [ ] Create type-safe PKCE storage
151
- * - [ ] Implement compile-time validation
152
- *
153
- * TODO: Testing
154
- * - [ ] Add comprehensive unit tests
155
- * - [ ] Test constant-time comparison
156
- * - [ ] Test code generation randomness
157
- * - [ ] Add storage adapter tests
158
- *
159
- * TODO: Documentation
160
- * - [ ] Document PKCE flow
161
- * - [ ] Add security considerations guide
162
- * - [ ] Create PKCE best practices guide
163
- *
164
- * TODO: Limitations
165
- * - [ ] PKCE storage is in-memory (consider Redis for production)
166
- * - [ ] Code generation uses Node.js Buffer (consider Web Crypto API for browsers)
167
- * - [ ] Plain method is supported but not recommended
168
- */
@@ -1,198 +0,0 @@
1
- import { OAuthProviderConfig } from '../../types';
2
- /**
3
- * OAuth provider identifier.
4
- */
5
- export type OAuthProviderId = 'google' | 'github' | 'apple' | 'facebook' | string;
6
- /**
7
- * Provider metadata for OAuth endpoints and configuration.
8
- */
9
- export interface ProviderMetadata {
10
- readonly authorizationUrl: string;
11
- readonly tokenUrl: string;
12
- readonly userInfoUrl: string;
13
- readonly defaultScopes: readonly string[];
14
- readonly defaultParams?: Readonly<Record<string, string>>;
15
- }
16
- /**
17
- * Normalized OAuth user profile.
18
- */
19
- export interface OAuthUserProfile {
20
- readonly id: string;
21
- readonly email: string;
22
- readonly name: string;
23
- readonly avatar?: string;
24
- readonly emailVerified?: boolean;
25
- readonly rawProfile: Readonly<Record<string, unknown>>;
26
- }
27
- /**
28
- * OAuth token exchange result.
29
- */
30
- export interface TokenExchangeResult {
31
- readonly access_token: string;
32
- readonly refresh_token?: string;
33
- readonly expires_in?: number;
34
- readonly token_type?: string;
35
- readonly id_token?: string;
36
- readonly scope?: string;
37
- }
38
- /**
39
- * OAuth error response.
40
- */
41
- export interface OAuthErrorResponse {
42
- readonly error: string;
43
- readonly error_description?: string;
44
- readonly error_uri?: string;
45
- }
46
- /**
47
- * Built-in OAuth provider metadata.
48
- *
49
- * Contains endpoint URLs, default scopes, and provider-specific parameters.
50
- */
51
- declare const PROVIDER_METADATA: Readonly<Record<string, ProviderMetadata>>;
52
- /**
53
- * Gets provider metadata for a given provider ID.
54
- *
55
- * @param providerId - OAuth provider identifier
56
- * @returns Provider metadata or null if not found
57
- *
58
- * @example
59
- * ```typescript
60
- * const metadata = getProviderMetadata('google')
61
- * if (metadata) {
62
- * console.log(metadata.authorizationUrl)
63
- * }
64
- * ```
65
- */
66
- export declare function getProviderMetadata(providerId: string): ProviderMetadata | null;
67
- /**
68
- * Type predicate to check if provider metadata exists.
69
- *
70
- * @param providerId - Provider ID to check
71
- * @returns True if provider is supported
72
- *
73
- * @example
74
- * ```typescript
75
- * if (isSupportedProvider('google')) {
76
- * // Provider is supported
77
- * }
78
- * ```
79
- */
80
- export declare function isSupportedProvider(providerId: string): providerId is keyof typeof PROVIDER_METADATA;
81
- /**
82
- * Builds OAuth authorization URL with proper parameters.
83
- *
84
- * @param providerId - OAuth provider identifier
85
- * @param config - Provider configuration
86
- * @param baseUrl - Base URL for redirect URI
87
- * @param state - CSRF state token
88
- * @returns Authorization URL
89
- * @throws {Error} If provider is not supported
90
- *
91
- * @example
92
- * ```typescript
93
- * const url = buildOAuthAuthorizationUrl(
94
- * 'google',
95
- * { clientId: '...' },
96
- * 'https://example.com',
97
- * 'state123'
98
- * )
99
- * ```
100
- */
101
- export declare function buildOAuthAuthorizationUrl(providerId: string, config: OAuthProviderConfig, baseUrl: string, state: string): string;
102
- /**
103
- * Exchanges authorization code for access tokens.
104
- *
105
- * @param providerId - OAuth provider identifier
106
- * @param config - Provider configuration
107
- * @param code - Authorization code from OAuth callback
108
- * @param redirectUri - Redirect URI used in authorization request
109
- * @param codeVerifier - PKCE code verifier (optional)
110
- * @returns Token exchange result
111
- * @throws {Error} If exchange fails or provider is not supported
112
- *
113
- * @example
114
- * ```typescript
115
- * const tokens = await exchangeOAuthCode(
116
- * 'google',
117
- * { clientId: '...', clientSecret: '...' },
118
- * 'code123',
119
- * 'https://example.com/callback',
120
- * 'code_verifier'
121
- * )
122
- * console.log(tokens.access_token)
123
- * ```
124
- */
125
- export declare function exchangeOAuthCode(providerId: string, config: OAuthProviderConfig, code: string, redirectUri: string, codeVerifier?: string): Promise<TokenExchangeResult>;
126
- /**
127
- * Retrieves user information from OAuth provider.
128
- *
129
- * @param providerId - OAuth provider identifier
130
- * @param accessToken - OAuth access token
131
- * @returns Normalized user profile with raw provider data
132
- * @throws {Error} If retrieval fails or provider is not supported
133
- *
134
- * @example
135
- * ```typescript
136
- * const profile = await getUserProfile('google', 'access_token_123')
137
- * console.log(profile.email, profile.name)
138
- * ```
139
- */
140
- export declare function getUserProfile(providerId: string, accessToken: string): Promise<OAuthUserProfile>;
141
- /**
142
- * Type predicate to check if a value is a valid OAuth provider config.
143
- *
144
- * @param value - Value to check
145
- * @returns True if value is a valid OAuth provider config
146
- */
147
- export declare function isOAuthProviderConfig(value: unknown): value is OAuthProviderConfig;
148
- export { getUserProfile as getOAuthUserInfo };
149
- /**
150
- * TODO: Performance
151
- * - [ ] Add token exchange result caching (with TTL)
152
- * - [ ] Implement request retry logic with exponential backoff
153
- * - [ ] Add connection pooling for OAuth API calls
154
- * - [ ] Cache provider metadata lookups
155
- *
156
- * TODO: Features
157
- * - [ ] Implement token refresh flow
158
- * - [ ] Add support for custom OAuth providers
159
- * - [ ] Create provider plugin system
160
- * - [ ] Add OAuth 2.1 compliance
161
- * - [ ] Support for OpenID Connect
162
- *
163
- * TODO: Type Safety
164
- * - [ ] Add branded types for provider IDs
165
- * - [ ] Create type-safe provider configuration
166
- * - [ ] Add compile-time provider validation
167
- * - [ ] Implement type-level endpoint validation
168
- *
169
- * TODO: Security
170
- * - [ ] Add token validation before use
171
- * - [ ] Implement token encryption at rest
172
- * - [ ] Add request signing for OAuth calls
173
- * - [ ] Create security audit logging
174
- * - [ ] Add rate limiting for OAuth operations
175
- *
176
- * TODO: Error Handling
177
- * - [ ] Add structured error types for OAuth errors
178
- * - [ ] Implement error recovery strategies
179
- * - [ ] Add error retry logic
180
- * - [ ] Create error reporting
181
- *
182
- * TODO: Testing
183
- * - [ ] Add comprehensive unit tests
184
- * - [ ] Test all provider normalizations
185
- * - [ ] Test error handling scenarios
186
- * - [ ] Add integration tests with mock OAuth servers
187
- *
188
- * TODO: Documentation
189
- * - [ ] Add provider-specific configuration guides
190
- * - [ ] Document error handling best practices
191
- * - [ ] Create troubleshooting guide
192
- *
193
- * TODO: Limitations
194
- * - [ ] GitHub email retrieval may fail silently
195
- * - [ ] Apple profile name only available on first sign-in
196
- * - [ ] Facebook API version is hardcoded (v18.0)
197
- * - [ ] No support for OAuth 1.0 providers
198
- */