mulguard 1.1.6 → 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 (540) hide show
  1. package/README.md +21 -1078
  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 -73
  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-CExpv_dD.js +0 -1
  473. package/dist/actions-DeCfLtHA.mjs +0 -184
  474. package/dist/client/hooks.d.ts +0 -122
  475. package/dist/client/index.d.ts +0 -5
  476. package/dist/client/index.js +0 -1
  477. package/dist/client/index.mjs +0 -478
  478. package/dist/client/provider.d.ts +0 -69
  479. package/dist/client/server-actions-helper.d.ts +0 -22
  480. package/dist/components/AccountPicker.d.ts +0 -11
  481. package/dist/components/OAuthButton.d.ts +0 -11
  482. package/dist/components/PassKeyButton.d.ts +0 -11
  483. package/dist/components/PassKeyRegister.d.ts +0 -10
  484. package/dist/components/TwoFactorSetup.d.ts +0 -8
  485. package/dist/components/TwoFactorVerify.d.ts +0 -9
  486. package/dist/core/account-picker/encryption.d.ts +0 -22
  487. package/dist/core/account-picker/index.d.ts +0 -22
  488. package/dist/core/auth/index.d.ts +0 -40
  489. package/dist/core/auth/oauth-providers.d.ts +0 -197
  490. package/dist/core/auth/oauth-state-store-cookie.d.ts +0 -83
  491. package/dist/core/auth/oauth-state-store-redis.d.ts +0 -25
  492. package/dist/core/auth/oauth-state-store.d.ts +0 -45
  493. package/dist/core/auth/oauth.d.ts +0 -20
  494. package/dist/core/auth/passkey.d.ts +0 -35
  495. package/dist/core/auth/password.d.ts +0 -22
  496. package/dist/core/auth/signin-unified.d.ts +0 -33
  497. package/dist/core/auth/two-factor.d.ts +0 -28
  498. package/dist/core/client/index.d.ts +0 -132
  499. package/dist/core/client/token-refresh-manager.d.ts +0 -48
  500. package/dist/core/index.d.ts +0 -11
  501. package/dist/core/mulguard/auth-handlers.d.ts +0 -100
  502. package/dist/core/mulguard/defaults.d.ts +0 -58
  503. package/dist/core/mulguard/index.d.ts +0 -9
  504. package/dist/core/mulguard/oauth-handler.d.ts +0 -93
  505. package/dist/core/mulguard/session-manager.d.ts +0 -94
  506. package/dist/core/security/csrf.d.ts +0 -46
  507. package/dist/core/security/headers.d.ts +0 -24
  508. package/dist/core/security/index.d.ts +0 -132
  509. package/dist/core/security/rate-limit.d.ts +0 -39
  510. package/dist/core/security/validation.d.ts +0 -251
  511. package/dist/core/security/xss.d.ts +0 -20
  512. package/dist/core/session/index.d.ts +0 -35
  513. package/dist/core/types/auth.d.ts +0 -290
  514. package/dist/core/types/errors.d.ts +0 -200
  515. package/dist/core/types/index.d.ts +0 -462
  516. package/dist/core/utils/auth-helpers.d.ts +0 -136
  517. package/dist/core/utils/logger.d.ts +0 -121
  518. package/dist/handlers/api.d.ts +0 -10
  519. package/dist/handlers/route.d.ts +0 -76
  520. package/dist/index/index.js +0 -1
  521. package/dist/index/index.mjs +0 -2229
  522. package/dist/index.d.ts +0 -21
  523. package/dist/middleware/index.d.ts +0 -28
  524. package/dist/middleware/proxy.d.ts +0 -53
  525. package/dist/middleware/security.d.ts +0 -9
  526. package/dist/mulguard.d.ts +0 -373
  527. package/dist/oauth-state-DKle8eCr.mjs +0 -289
  528. package/dist/oauth-state-DlvrCV11.js +0 -1
  529. package/dist/server/actions.d.ts +0 -86
  530. package/dist/server/auth.d.ts +0 -65
  531. package/dist/server/cookies.d.ts +0 -42
  532. package/dist/server/helpers.d.ts +0 -10
  533. package/dist/server/index.d.ts +0 -14
  534. package/dist/server/index.js +0 -1
  535. package/dist/server/index.mjs +0 -31
  536. package/dist/server/middleware.d.ts +0 -39
  537. package/dist/server/oauth-state.d.ts +0 -30
  538. package/dist/server/session-helpers.d.ts +0 -26
  539. package/dist/server/session.d.ts +0 -28
  540. package/dist/server/utils.d.ts +0 -10
@@ -1,40 +0,0 @@
1
- import { EmailCredentials, RegisterData, AuthResult, ApiClient } from '../types';
2
- import { OAuthMethods } from './oauth';
3
- import { PassKeyMethods } from './passkey';
4
- import { TwoFactorMethods } from './two-factor';
5
- import { AccountPickerMethods } from '../account-picker';
6
- export interface AuthMethods {
7
- signIn: {
8
- email(credentials: EmailCredentials): Promise<AuthResult>;
9
- oauth(provider: string): Promise<{
10
- url: string;
11
- state: string;
12
- }>;
13
- passkey(options?: {
14
- userId?: string;
15
- }): Promise<AuthResult>;
16
- };
17
- signUp(data: RegisterData): Promise<AuthResult>;
18
- signOut(): Promise<void>;
19
- resetPassword(email: string): Promise<{
20
- success: boolean;
21
- error?: string;
22
- }>;
23
- verifyEmail(token: string): Promise<{
24
- success: boolean;
25
- error?: string;
26
- }>;
27
- oauth: OAuthMethods;
28
- passkey: PassKeyMethods;
29
- twoFactor: TwoFactorMethods;
30
- accountPicker: AccountPickerMethods;
31
- }
32
- /**
33
- * Create authentication methods
34
- */
35
- export declare function createAuthMethods(client: ApiClient, oauthProviders?: Record<string, {
36
- clientId: string;
37
- redirectUri: string;
38
- scopes?: string[];
39
- name?: string;
40
- }>, accountPickerConfig?: import('../account-picker').AccountPickerConfig): AuthMethods;
@@ -1,197 +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
- * @returns Token exchange result
110
- * @throws {Error} If exchange fails or provider is not supported
111
- *
112
- * @example
113
- * ```typescript
114
- * const tokens = await exchangeOAuthCode(
115
- * 'google',
116
- * { clientId: '...', clientSecret: '...' },
117
- * 'code123',
118
- * 'https://example.com/callback'
119
- * )
120
- * console.log(tokens.access_token)
121
- * ```
122
- */
123
- export declare function exchangeOAuthCode(providerId: string, config: OAuthProviderConfig, code: string, redirectUri: string): Promise<TokenExchangeResult>;
124
- /**
125
- * Retrieves user information from OAuth provider.
126
- *
127
- * @param providerId - OAuth provider identifier
128
- * @param accessToken - OAuth access token
129
- * @returns Normalized user profile with raw provider data
130
- * @throws {Error} If retrieval fails or provider is not supported
131
- *
132
- * @example
133
- * ```typescript
134
- * const profile = await getOAuthUserInfo('google', 'access_token_123')
135
- * console.log(profile.email, profile.name)
136
- * ```
137
- */
138
- export declare function getOAuthUserInfo(providerId: string, accessToken: string): Promise<OAuthUserProfile>;
139
- /**
140
- * Type predicate to check if a value is a valid OAuth provider config.
141
- *
142
- * @param value - Value to check
143
- * @returns True if value is a valid OAuth provider config
144
- */
145
- export declare function isOAuthProviderConfig(value: unknown): value is OAuthProviderConfig;
146
- export {};
147
- /**
148
- * TODO: Performance
149
- * - [ ] Add token exchange result caching (with TTL)
150
- * - [ ] Implement request retry logic with exponential backoff
151
- * - [ ] Add connection pooling for OAuth API calls
152
- * - [ ] Cache provider metadata lookups
153
- *
154
- * TODO: Features
155
- * - [ ] Add support for PKCE (Proof Key for Code Exchange)
156
- * - [ ] Implement token refresh flow
157
- * - [ ] Add support for custom OAuth providers
158
- * - [ ] Create provider plugin system
159
- * - [ ] Add OAuth 2.1 compliance
160
- * - [ ] Support for OpenID Connect
161
- *
162
- * TODO: Type Safety
163
- * - [ ] Add branded types for provider IDs
164
- * - [ ] Create type-safe provider configuration
165
- * - [ ] Add compile-time provider validation
166
- * - [ ] Implement type-level endpoint validation
167
- *
168
- * TODO: Security
169
- * - [ ] Add token validation before use
170
- * - [ ] Implement token encryption at rest
171
- * - [ ] Add request signing for OAuth calls
172
- * - [ ] Create security audit logging
173
- * - [ ] Add rate limiting for OAuth operations
174
- *
175
- * TODO: Error Handling
176
- * - [ ] Add structured error types for OAuth errors
177
- * - [ ] Implement error recovery strategies
178
- * - [ ] Add error retry logic
179
- * - [ ] Create error reporting
180
- *
181
- * TODO: Testing
182
- * - [ ] Add comprehensive unit tests
183
- * - [ ] Test all provider normalizations
184
- * - [ ] Test error handling scenarios
185
- * - [ ] Add integration tests with mock OAuth servers
186
- *
187
- * TODO: Documentation
188
- * - [ ] Add provider-specific configuration guides
189
- * - [ ] Document error handling best practices
190
- * - [ ] Create troubleshooting guide
191
- *
192
- * TODO: Limitations
193
- * - [ ] GitHub email retrieval may fail silently
194
- * - [ ] Apple profile name only available on first sign-in
195
- * - [ ] Facebook API version is hardcoded (v18.0)
196
- * - [ ] No support for OAuth 1.0 providers
197
- */
@@ -1,83 +0,0 @@
1
- import { OAuthStateStore } from './oauth-state-store';
2
- /**
3
- * Cookie options interface
4
- */
5
- export interface CookieOptions {
6
- httpOnly?: boolean;
7
- secure?: boolean;
8
- sameSite?: 'strict' | 'lax' | 'none';
9
- maxAge?: number;
10
- path?: string;
11
- domain?: string;
12
- }
13
- /**
14
- * Cookie handler interface for framework-agnostic cookie operations
15
- */
16
- export interface CookieHandler {
17
- /**
18
- * Get cookie value by name
19
- */
20
- getCookie(name: string): Promise<string | null> | string | null;
21
- /**
22
- * Set cookie with options
23
- */
24
- setCookie(name: string, value: string, options: CookieOptions): Promise<void> | void;
25
- /**
26
- * Delete cookie
27
- */
28
- deleteCookie(name: string, options?: {
29
- path?: string;
30
- }): Promise<void> | void;
31
- }
32
- /**
33
- * Configuration for cookie-based OAuth state store
34
- */
35
- export interface CookieOAuthStateStoreConfig {
36
- /**
37
- * Cookie handler implementation
38
- */
39
- cookieHandler: CookieHandler;
40
- /**
41
- * Cookie name (default: '__mulguard_oauth_state')
42
- */
43
- cookieName?: string;
44
- /**
45
- * TTL in milliseconds (default: 10 minutes)
46
- */
47
- ttl?: number;
48
- /**
49
- * Whether to use secure cookies (default: true in production)
50
- */
51
- secure?: boolean;
52
- /**
53
- * SameSite cookie attribute (default: 'strict')
54
- */
55
- sameSite?: 'strict' | 'lax' | 'none';
56
- }
57
- /**
58
- * Creates a cookie-based OAuth state store.
59
- *
60
- * ✅ SECURE: Uses httpOnly cookies to prevent XSS attacks
61
- * ✅ FRAMEWORK-AGNOSTIC: Works with any framework via cookie handler
62
- * ⚠️ LIMITATION: Not suitable for production with multiple server instances (use Redis instead)
63
- *
64
- * @param config - Cookie store configuration
65
- * @returns OAuth state store implementation
66
- */
67
- export declare function createCookieOAuthStateStore(config: CookieOAuthStateStoreConfig): OAuthStateStore;
68
- /**
69
- * Creates a Next.js-specific cookie-based OAuth state store.
70
- *
71
- * Convenience function for Next.js applications.
72
- *
73
- * @example
74
- * ```typescript
75
- * import { createNextJsCookieOAuthStateStore } from 'mulguard/core/auth/oauth-state-store-cookie'
76
- *
77
- * export const auth = mulguard({
78
- * oauthStateStore: createNextJsCookieOAuthStateStore(),
79
- * // ... rest of config
80
- * })
81
- * ```
82
- */
83
- export declare function createNextJsCookieOAuthStateStore(): OAuthStateStore;
@@ -1,25 +0,0 @@
1
- import { OAuthStateStore } from './oauth-state-store';
2
- /**
3
- * Redis client interface (compatible with ioredis and node-redis)
4
- */
5
- export interface RedisClient {
6
- set(key: string, value: string, mode?: string, duration?: number): Promise<string | null>;
7
- get(key: string): Promise<string | null>;
8
- del(key: string): Promise<number>;
9
- keys(pattern: string): Promise<string[]>;
10
- }
11
- /**
12
- * Creates a Redis-based OAuth state store.
13
- *
14
- * @param redis - Redis client instance (ioredis or node-redis)
15
- * @param keyPrefix - Key prefix for state keys (default: 'mulguard:oauth:state:')
16
- * @returns OAuth state store implementation
17
- *
18
- * @example
19
- * ```typescript
20
- * import Redis from 'ioredis'
21
- * const redis = new Redis(process.env.REDIS_URL)
22
- * const stateStore = createRedisOAuthStateStore(redis)
23
- * ```
24
- */
25
- export declare function createRedisOAuthStateStore(redis: RedisClient, keyPrefix?: string): OAuthStateStore;
@@ -1,45 +0,0 @@
1
- /**
2
- * OAuth State Store Interface
3
- * Allows pluggable state storage for OAuth CSRF protection
4
- *
5
- * Default implementation uses in-memory Map (for development)
6
- * Production should use Redis, database, or other persistent store
7
- */
8
- export interface OAuthState {
9
- provider: string;
10
- expiresAt: number;
11
- }
12
- export interface OAuthStateStore {
13
- /**
14
- * Store OAuth state with TTL
15
- */
16
- set(state: string, data: OAuthState, ttl: number): Promise<void> | void;
17
- /**
18
- * Get OAuth state
19
- */
20
- get(state: string): Promise<OAuthState | null> | OAuthState | null;
21
- /**
22
- * Delete OAuth state
23
- */
24
- delete(state: string): Promise<void> | void;
25
- /**
26
- * Cleanup expired states (optional, for periodic cleanup)
27
- */
28
- cleanup?(): Promise<void> | void;
29
- }
30
- /**
31
- * In-memory OAuth state store (default, for development)
32
- * ⚠️ Not suitable for production with multiple server instances
33
- */
34
- export declare class MemoryOAuthStateStore implements OAuthStateStore {
35
- private states;
36
- set(state: string, data: OAuthState, _ttl: number): void;
37
- get(state: string): OAuthState | null;
38
- delete(state: string): void;
39
- cleanup(): void;
40
- }
41
- /**
42
- * Create default in-memory OAuth state store
43
- */
44
- export declare function createMemoryOAuthStateStore(): OAuthStateStore;
45
- export { createCookieOAuthStateStore, createNextJsCookieOAuthStateStore, type CookieHandler, type CookieOAuthStateStoreConfig, } from './oauth-state-store-cookie';
@@ -1,20 +0,0 @@
1
- import { ApiClient, AuthResult } from '../types';
2
- export interface OAuthProvider {
3
- id: string;
4
- name: string;
5
- clientId: string;
6
- redirectUri: string;
7
- scopes?: string[];
8
- }
9
- export interface OAuthMethods {
10
- initiate(provider: string): Promise<{
11
- url: string;
12
- state: string;
13
- }>;
14
- handleCallback(provider: string, code: string, state: string): Promise<AuthResult>;
15
- getProviders(): Promise<OAuthProvider[]>;
16
- }
17
- /**
18
- * Create OAuth methods
19
- */
20
- export declare function createOAuthMethods(client: ApiClient, providers: Record<string, OAuthProvider>): OAuthMethods;
@@ -1,35 +0,0 @@
1
- import { ApiClient, AuthResult } from '../types';
2
- export interface PassKeyCredential {
3
- id: string;
4
- name: string;
5
- createdAt: Date;
6
- lastUsedAt?: Date;
7
- }
8
- export interface PassKeyRegisterOptions {
9
- name?: string;
10
- userId?: string;
11
- }
12
- export interface PassKeyAuthOptions {
13
- userId?: string;
14
- }
15
- export interface PassKeyMethods {
16
- register(options?: PassKeyRegisterOptions): Promise<{
17
- success: boolean;
18
- passkeyId?: string;
19
- error?: string;
20
- }>;
21
- authenticate(options?: PassKeyAuthOptions): Promise<AuthResult>;
22
- list(): Promise<PassKeyCredential[]>;
23
- remove(passKeyId: string): Promise<{
24
- success: boolean;
25
- error?: string;
26
- }>;
27
- }
28
- /**
29
- * Check if WebAuthn is supported
30
- */
31
- export declare function isWebAuthnSupported(): boolean;
32
- /**
33
- * Create PassKey methods
34
- */
35
- export declare function createPassKeyMethods(client: ApiClient): PassKeyMethods;
@@ -1,22 +0,0 @@
1
- /**
2
- * Password validation and utilities
3
- */
4
- /**
5
- * Validate password strength
6
- */
7
- export interface PasswordValidationResult {
8
- valid: boolean;
9
- errors: string[];
10
- strength: 'weak' | 'medium' | 'strong';
11
- }
12
- export interface PasswordPolicy {
13
- minLength?: number;
14
- requireUppercase?: boolean;
15
- requireLowercase?: boolean;
16
- requireNumbers?: boolean;
17
- requireSpecialChars?: boolean;
18
- }
19
- /**
20
- * Validate password against policy
21
- */
22
- export declare function validatePassword(password: string, policy?: PasswordPolicy): PasswordValidationResult;
@@ -1,33 +0,0 @@
1
- import { MulguardInstance } from '../../mulguard';
2
- import { EmailCredentials, AuthResult } from '../types';
3
- /**
4
- * Unified sign in function - delegates to auth.signIn unified logic
5
- *
6
- * @example
7
- * ```typescript
8
- * // OAuth providers
9
- * await signIn(auth, 'google')
10
- * await signIn(auth, 'github')
11
- *
12
- * // Credentials
13
- * await signIn(auth, 'credentials', { email: 'user@example.com', password: 'password' })
14
- *
15
- * // OTP
16
- * await signIn(auth, 'otp', { email: 'user@example.com', code: '123456' })
17
- *
18
- * // Passkey
19
- * await signIn(auth, 'passkey', { userId: 'user-id' })
20
- * ```
21
- */
22
- export declare function signIn(auth: MulguardInstance, provider: 'google' | 'github' | 'apple' | 'facebook' | string): Promise<{
23
- url: string;
24
- state: string;
25
- }>;
26
- export declare function signIn(auth: MulguardInstance, provider: 'credentials', credentials: EmailCredentials): Promise<AuthResult>;
27
- export declare function signIn(auth: MulguardInstance, provider: 'otp', options: {
28
- email: string;
29
- code?: string;
30
- }): Promise<AuthResult>;
31
- export declare function signIn(auth: MulguardInstance, provider: 'passkey', options?: {
32
- userId?: string;
33
- }): Promise<AuthResult>;
@@ -1,28 +0,0 @@
1
- import { ApiClient } from '../types';
2
- export interface TwoFactorMethods {
3
- enable(): Promise<{
4
- success: boolean;
5
- qrCode?: string;
6
- secret?: string;
7
- error?: string;
8
- }>;
9
- verify(code: string): Promise<{
10
- success: boolean;
11
- backupCodes?: string[];
12
- error?: string;
13
- }>;
14
- disable(): Promise<{
15
- success: boolean;
16
- error?: string;
17
- }>;
18
- generateBackupCodes(): Promise<{
19
- success: boolean;
20
- backupCodes?: string[];
21
- error?: string;
22
- }>;
23
- isEnabled(): Promise<boolean>;
24
- }
25
- /**
26
- * Create 2FA methods
27
- */
28
- export declare function createTwoFactorMethods(client: ApiClient): TwoFactorMethods;
@@ -1,132 +0,0 @@
1
- /**
2
- * HTTP Client for making requests to backend API
3
- * Enhanced with timeout enforcement, retry logic, and interceptors
4
- */
5
- export interface HttpClientConfig {
6
- baseURL: string;
7
- apiPrefix: string;
8
- timeout?: number;
9
- headers?: Record<string, string>;
10
- retry?: RetryConfig;
11
- interceptors?: InterceptorsConfig;
12
- /** Token refresh manager for automatic token refresh on 401 errors */
13
- tokenRefreshManager?: import('./token-refresh-manager').TokenRefreshManager;
14
- }
15
- export interface RetryConfig {
16
- /** Maximum number of retry attempts (default: 3) */
17
- maxAttempts?: number;
18
- /** Delay between retries in milliseconds (default: 1000) */
19
- retryDelay?: number;
20
- /** Exponential backoff multiplier (default: 2) */
21
- backoffMultiplier?: number;
22
- /** HTTP status codes that should trigger retry (default: [408, 429, 500, 502, 503, 504]) */
23
- retryableStatusCodes?: number[];
24
- /** Whether to retry on network errors (default: true) */
25
- retryOnNetworkError?: boolean;
26
- }
27
- export interface InterceptorsConfig {
28
- /** Request interceptor - called before sending request */
29
- onRequest?: (config: RequestConfig) => Promise<RequestConfig> | RequestConfig;
30
- /** Response interceptor - called after receiving response */
31
- onResponse?: <T>(response: HttpResponse<T>) => Promise<HttpResponse<T>> | HttpResponse<T>;
32
- /** Error interceptor - called on error */
33
- onError?: (error: ApiError) => Promise<ApiError> | ApiError;
34
- }
35
- export interface RequestConfig {
36
- url: string;
37
- method: string;
38
- headers: Record<string, string>;
39
- body?: unknown;
40
- credentials?: 'include' | 'omit' | 'same-origin';
41
- }
42
- interface InternalRequestOptions {
43
- method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
44
- headers?: Record<string, string>;
45
- body?: unknown;
46
- credentials?: 'include' | 'omit' | 'same-origin';
47
- skipRetry?: boolean;
48
- skipInterceptors?: boolean;
49
- skipTokenRefresh?: boolean;
50
- }
51
- export interface HttpResponse<T = unknown> {
52
- data: T;
53
- status: number;
54
- statusText: string;
55
- headers: Headers;
56
- }
57
- export declare class HttpClient {
58
- private config;
59
- private pendingRequests;
60
- constructor(config: HttpClientConfig);
61
- /**
62
- * Make HTTP request with timeout, retry, and interceptors
63
- */
64
- request<T = unknown>(path: string, options?: InternalRequestOptions): Promise<HttpResponse<T>>;
65
- /**
66
- * Execute HTTP request with retry logic
67
- */
68
- private executeRequest;
69
- /**
70
- * Check if request should be retried
71
- */
72
- private shouldRetry;
73
- /**
74
- * Calculate retry delay with exponential backoff
75
- */
76
- private calculateRetryDelay;
77
- /**
78
- * Sleep utility for retry delays
79
- */
80
- private sleep;
81
- /**
82
- * Build RequestInit from RequestConfig
83
- */
84
- private buildRequestInitFromConfig;
85
- /**
86
- * GET request
87
- */
88
- get<T = unknown>(path: string, options?: Omit<InternalRequestOptions, 'method' | 'body'>): Promise<HttpResponse<T>>;
89
- /**
90
- * POST request
91
- */
92
- post<T = unknown>(path: string, body?: unknown, options?: Omit<InternalRequestOptions, 'method'>): Promise<HttpResponse<T>>;
93
- /**
94
- * PUT request
95
- */
96
- put<T = unknown>(path: string, body?: unknown, options?: Omit<InternalRequestOptions, 'method'>): Promise<HttpResponse<T>>;
97
- /**
98
- * DELETE request
99
- */
100
- delete<T = unknown>(path: string, options?: Omit<InternalRequestOptions, 'method' | 'body'>): Promise<HttpResponse<T>>;
101
- /**
102
- * Build full URL
103
- */
104
- private buildUrl;
105
- /**
106
- * Parse response
107
- */
108
- private parseResponse;
109
- /**
110
- * Handle error response
111
- */
112
- private handleErrorResponse;
113
- }
114
- /**
115
- * API Error class with enhanced error information
116
- */
117
- export declare class ApiError extends Error {
118
- code: string;
119
- statusCode: number;
120
- originalError?: Error;
121
- retryable?: boolean;
122
- constructor(message: string, code?: string, statusCode?: number, originalError?: Error, retryable?: boolean);
123
- /**
124
- * Check if error is retryable
125
- */
126
- isRetryable(): boolean;
127
- /**
128
- * Get user-friendly error message
129
- */
130
- getUserMessage(): string;
131
- }
132
- export {};