@multiplatform.one/keycloak 5.0.27 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/dist/cjs/index.cjs +881 -17
  2. package/dist/esm/index.js +855 -8
  3. package/package.json +59 -55
  4. package/src/@types/expo_keycloak_auth.d.ts +4 -0
  5. package/src/Authenticated.tsx +1 -25
  6. package/src/Loading.tsx +0 -21
  7. package/src/authConfig.ts +0 -21
  8. package/src/betterAuth/client.ts +22 -0
  9. package/src/betterAuth/expoClient.ts +35 -0
  10. package/src/betterAuth/index.ts +2 -0
  11. package/src/hooks/index.ts +0 -21
  12. package/src/hooks/useAuthConfig.ts +0 -21
  13. package/src/hooks/useTokensFromQuery/index.native.ts +0 -21
  14. package/src/hooks/useTokensFromQuery/index.ts +1 -22
  15. package/src/hooks/useTokensFromState.ts +0 -22
  16. package/src/index.ts +1 -42
  17. package/src/keycloak/base.ts +3 -26
  18. package/src/keycloak/config.ts +7 -23
  19. package/src/keycloak/context.ts +0 -21
  20. package/src/keycloak/index.native.ts +1 -22
  21. package/src/keycloak/index.ts +29 -97
  22. package/src/keycloak/index.webext.ts +23 -25
  23. package/src/one.ts +60 -146
  24. package/src/provider/AfterAuth.tsx +10 -29
  25. package/src/provider/KeycloakProvider.tsx +2 -23
  26. package/src/provider/authProvider/index.native.tsx +116 -0
  27. package/src/provider/{AuthProvider → authProvider}/index.tsx +26 -57
  28. package/src/provider/{AuthProvider → authProvider}/index.webext.tsx +36 -86
  29. package/src/provider/{AuthProvider → authProvider}/shared.ts +5 -20
  30. package/src/provider/index.ts +1 -22
  31. package/src/session/index.native.ts +8 -20
  32. package/src/session/index.ts +46 -44
  33. package/src/session/index.webext.ts +7 -21
  34. package/src/state.ts +29 -30
  35. package/src/token.spec.ts +168 -0
  36. package/src/token.ts +146 -23
  37. package/src/types.ts +0 -21
  38. package/dist/cjs/Authenticated.cjs +0 -83
  39. package/dist/cjs/Authenticated.js +0 -54
  40. package/dist/cjs/Authenticated.js.map +0 -6
  41. package/dist/cjs/Authenticated.native.js +0 -73
  42. package/dist/cjs/Authenticated.native.js.map +0 -6
  43. package/dist/cjs/Loading.cjs +0 -39
  44. package/dist/cjs/Loading.js +0 -25
  45. package/dist/cjs/Loading.js.map +0 -6
  46. package/dist/cjs/Loading.native.js +0 -32
  47. package/dist/cjs/Loading.native.js.map +0 -6
  48. package/dist/cjs/authConfig.cjs +0 -29
  49. package/dist/cjs/authConfig.js +0 -23
  50. package/dist/cjs/authConfig.js.map +0 -6
  51. package/dist/cjs/authConfig.native.js +0 -28
  52. package/dist/cjs/authConfig.native.js.map +0 -6
  53. package/dist/cjs/hooks/index.cjs +0 -20
  54. package/dist/cjs/hooks/index.js +0 -17
  55. package/dist/cjs/hooks/index.js.map +0 -6
  56. package/dist/cjs/hooks/index.native.js +0 -24
  57. package/dist/cjs/hooks/index.native.js.map +0 -6
  58. package/dist/cjs/hooks/useAuthConfig.cjs +0 -30
  59. package/dist/cjs/hooks/useAuthConfig.js +0 -24
  60. package/dist/cjs/hooks/useAuthConfig.js.map +0 -6
  61. package/dist/cjs/hooks/useAuthConfig.native.js +0 -29
  62. package/dist/cjs/hooks/useAuthConfig.native.js.map +0 -6
  63. package/dist/cjs/hooks/useTokensFromQuery/index.cjs +0 -35
  64. package/dist/cjs/hooks/useTokensFromQuery/index.js +0 -29
  65. package/dist/cjs/hooks/useTokensFromQuery/index.js.map +0 -6
  66. package/dist/cjs/hooks/useTokensFromQuery/index.native.js +0 -28
  67. package/dist/cjs/hooks/useTokensFromQuery/index.native.js.map +0 -6
  68. package/dist/cjs/hooks/useTokensFromState.cjs +0 -31
  69. package/dist/cjs/hooks/useTokensFromState.js +0 -26
  70. package/dist/cjs/hooks/useTokensFromState.js.map +0 -6
  71. package/dist/cjs/hooks/useTokensFromState.native.js +0 -31
  72. package/dist/cjs/hooks/useTokensFromState.native.js.map +0 -6
  73. package/dist/cjs/index.js +0 -21
  74. package/dist/cjs/index.js.map +0 -6
  75. package/dist/cjs/index.native.js +0 -32
  76. package/dist/cjs/index.native.js.map +0 -6
  77. package/dist/cjs/keycloak/base.cjs +0 -90
  78. package/dist/cjs/keycloak/base.js +0 -90
  79. package/dist/cjs/keycloak/base.js.map +0 -6
  80. package/dist/cjs/keycloak/base.native.js +0 -135
  81. package/dist/cjs/keycloak/base.native.js.map +0 -6
  82. package/dist/cjs/keycloak/config.cjs +0 -31
  83. package/dist/cjs/keycloak/config.js +0 -26
  84. package/dist/cjs/keycloak/config.js.map +0 -6
  85. package/dist/cjs/keycloak/config.native.js +0 -30
  86. package/dist/cjs/keycloak/config.native.js.map +0 -6
  87. package/dist/cjs/keycloak/context.cjs +0 -27
  88. package/dist/cjs/keycloak/context.js +0 -22
  89. package/dist/cjs/keycloak/context.js.map +0 -6
  90. package/dist/cjs/keycloak/context.native.js +0 -26
  91. package/dist/cjs/keycloak/context.native.js.map +0 -6
  92. package/dist/cjs/keycloak/index.cjs +0 -131
  93. package/dist/cjs/keycloak/index.electron.cjs +0 -54
  94. package/dist/cjs/keycloak/index.electron.js +0 -40
  95. package/dist/cjs/keycloak/index.electron.js.map +0 -6
  96. package/dist/cjs/keycloak/index.electron.native.js +0 -137
  97. package/dist/cjs/keycloak/index.electron.native.js.map +0 -6
  98. package/dist/cjs/keycloak/index.js +0 -100
  99. package/dist/cjs/keycloak/index.js.map +0 -6
  100. package/dist/cjs/keycloak/index.native.js +0 -100
  101. package/dist/cjs/keycloak/index.native.js.map +0 -6
  102. package/dist/cjs/keycloak/index.webext.cjs +0 -54
  103. package/dist/cjs/keycloak/index.webext.js +0 -40
  104. package/dist/cjs/keycloak/index.webext.js.map +0 -6
  105. package/dist/cjs/keycloak/index.webext.native.js +0 -137
  106. package/dist/cjs/keycloak/index.webext.native.js.map +0 -6
  107. package/dist/cjs/one.cjs +0 -121
  108. package/dist/cjs/one.js +0 -119
  109. package/dist/cjs/one.js.map +0 -6
  110. package/dist/cjs/one.native.js +0 -125
  111. package/dist/cjs/one.native.js.map +0 -6
  112. package/dist/cjs/provider/AfterAuth.cjs +0 -57
  113. package/dist/cjs/provider/AfterAuth.js +0 -44
  114. package/dist/cjs/provider/AfterAuth.js.map +0 -6
  115. package/dist/cjs/provider/AfterAuth.native.js +0 -68
  116. package/dist/cjs/provider/AfterAuth.native.js.map +0 -6
  117. package/dist/cjs/provider/AuthProvider/index.cjs +0 -223
  118. package/dist/cjs/provider/AuthProvider/index.electron.cjs +0 -223
  119. package/dist/cjs/provider/AuthProvider/index.electron.js +0 -244
  120. package/dist/cjs/provider/AuthProvider/index.electron.js.map +0 -6
  121. package/dist/cjs/provider/AuthProvider/index.electron.native.js +0 -299
  122. package/dist/cjs/provider/AuthProvider/index.electron.native.js.map +0 -6
  123. package/dist/cjs/provider/AuthProvider/index.js +0 -241
  124. package/dist/cjs/provider/AuthProvider/index.js.map +0 -6
  125. package/dist/cjs/provider/AuthProvider/index.native.js +0 -198
  126. package/dist/cjs/provider/AuthProvider/index.native.js.map +0 -6
  127. package/dist/cjs/provider/AuthProvider/index.webext.cjs +0 -223
  128. package/dist/cjs/provider/AuthProvider/index.webext.js +0 -244
  129. package/dist/cjs/provider/AuthProvider/index.webext.js.map +0 -6
  130. package/dist/cjs/provider/AuthProvider/index.webext.native.js +0 -299
  131. package/dist/cjs/provider/AuthProvider/index.webext.native.js.map +0 -6
  132. package/dist/cjs/provider/AuthProvider/shared.cjs +0 -36
  133. package/dist/cjs/provider/AuthProvider/shared.js +0 -30
  134. package/dist/cjs/provider/AuthProvider/shared.js.map +0 -6
  135. package/dist/cjs/provider/AuthProvider/shared.native.js +0 -40
  136. package/dist/cjs/provider/AuthProvider/shared.native.js.map +0 -6
  137. package/dist/cjs/provider/KeycloakProvider.cjs +0 -60
  138. package/dist/cjs/provider/KeycloakProvider.js +0 -50
  139. package/dist/cjs/provider/KeycloakProvider.js.map +0 -6
  140. package/dist/cjs/provider/KeycloakProvider.native.js +0 -54
  141. package/dist/cjs/provider/KeycloakProvider.native.js.map +0 -6
  142. package/dist/cjs/provider/index.cjs +0 -20
  143. package/dist/cjs/provider/index.js +0 -17
  144. package/dist/cjs/provider/index.js.map +0 -6
  145. package/dist/cjs/provider/index.native.js +0 -24
  146. package/dist/cjs/provider/index.native.js.map +0 -6
  147. package/dist/cjs/session/index.cjs +0 -36
  148. package/dist/cjs/session/index.electron.cjs +0 -32
  149. package/dist/cjs/session/index.electron.js +0 -27
  150. package/dist/cjs/session/index.electron.js.map +0 -6
  151. package/dist/cjs/session/index.electron.native.js +0 -33
  152. package/dist/cjs/session/index.electron.native.js.map +0 -6
  153. package/dist/cjs/session/index.js +0 -30
  154. package/dist/cjs/session/index.js.map +0 -6
  155. package/dist/cjs/session/index.native.js +0 -33
  156. package/dist/cjs/session/index.native.js.map +0 -6
  157. package/dist/cjs/session/index.webext.cjs +0 -32
  158. package/dist/cjs/session/index.webext.js +0 -27
  159. package/dist/cjs/session/index.webext.js.map +0 -6
  160. package/dist/cjs/session/index.webext.native.js +0 -33
  161. package/dist/cjs/session/index.webext.native.js.map +0 -6
  162. package/dist/cjs/state.cjs +0 -37
  163. package/dist/cjs/state.js +0 -31
  164. package/dist/cjs/state.js.map +0 -6
  165. package/dist/cjs/state.native.js +0 -46
  166. package/dist/cjs/state.native.js.map +0 -6
  167. package/dist/cjs/token.cjs +0 -36
  168. package/dist/cjs/token.js +0 -30
  169. package/dist/cjs/token.js.map +0 -6
  170. package/dist/cjs/token.native.js +0 -36
  171. package/dist/cjs/token.native.js.map +0 -6
  172. package/dist/cjs/types.cjs +0 -16
  173. package/dist/cjs/types.js +0 -14
  174. package/dist/cjs/types.js.map +0 -6
  175. package/dist/cjs/types.native.js +0 -15
  176. package/dist/cjs/types.native.js.map +0 -6
  177. package/dist/esm/Authenticated.js +0 -36
  178. package/dist/esm/Authenticated.js.map +0 -6
  179. package/dist/esm/Authenticated.mjs +0 -48
  180. package/dist/esm/Authenticated.mjs.map +0 -1
  181. package/dist/esm/Authenticated.native.js +0 -49
  182. package/dist/esm/Authenticated.native.js.map +0 -6
  183. package/dist/esm/Loading.js +0 -11
  184. package/dist/esm/Loading.js.map +0 -6
  185. package/dist/esm/Loading.mjs +0 -16
  186. package/dist/esm/Loading.mjs.map +0 -1
  187. package/dist/esm/Loading.native.js +0 -13
  188. package/dist/esm/Loading.native.js.map +0 -6
  189. package/dist/esm/authConfig.js +0 -7
  190. package/dist/esm/authConfig.js.map +0 -6
  191. package/dist/esm/authConfig.mjs +0 -5
  192. package/dist/esm/authConfig.mjs.map +0 -1
  193. package/dist/esm/authConfig.native.js +0 -7
  194. package/dist/esm/authConfig.native.js.map +0 -6
  195. package/dist/esm/hooks/index.js +0 -4
  196. package/dist/esm/hooks/index.js.map +0 -6
  197. package/dist/esm/hooks/index.mjs +0 -4
  198. package/dist/esm/hooks/index.mjs.map +0 -1
  199. package/dist/esm/hooks/index.native.js +0 -4
  200. package/dist/esm/hooks/index.native.js.map +0 -6
  201. package/dist/esm/hooks/useAuthConfig.js +0 -9
  202. package/dist/esm/hooks/useAuthConfig.js.map +0 -6
  203. package/dist/esm/hooks/useAuthConfig.mjs +0 -7
  204. package/dist/esm/hooks/useAuthConfig.mjs.map +0 -1
  205. package/dist/esm/hooks/useAuthConfig.native.js +0 -9
  206. package/dist/esm/hooks/useAuthConfig.native.js.map +0 -6
  207. package/dist/esm/hooks/useTokensFromQuery/index.js +0 -14
  208. package/dist/esm/hooks/useTokensFromQuery/index.js.map +0 -6
  209. package/dist/esm/hooks/useTokensFromQuery/index.mjs +0 -12
  210. package/dist/esm/hooks/useTokensFromQuery/index.mjs.map +0 -1
  211. package/dist/esm/hooks/useTokensFromQuery/index.native.js +0 -7
  212. package/dist/esm/hooks/useTokensFromQuery/index.native.js.map +0 -6
  213. package/dist/esm/hooks/useTokensFromState.js +0 -11
  214. package/dist/esm/hooks/useTokensFromState.js.map +0 -6
  215. package/dist/esm/hooks/useTokensFromState.mjs +0 -8
  216. package/dist/esm/hooks/useTokensFromState.mjs.map +0 -1
  217. package/dist/esm/hooks/useTokensFromState.native.js +0 -11
  218. package/dist/esm/hooks/useTokensFromState.native.js.map +0 -6
  219. package/dist/esm/index.js.map +0 -6
  220. package/dist/esm/index.mjs +0 -8
  221. package/dist/esm/index.mjs.map +0 -1
  222. package/dist/esm/index.native.js +0 -8
  223. package/dist/esm/index.native.js.map +0 -6
  224. package/dist/esm/keycloak/base.js +0 -77
  225. package/dist/esm/keycloak/base.js.map +0 -6
  226. package/dist/esm/keycloak/base.mjs +0 -66
  227. package/dist/esm/keycloak/base.mjs.map +0 -1
  228. package/dist/esm/keycloak/base.native.js +0 -116
  229. package/dist/esm/keycloak/base.native.js.map +0 -6
  230. package/dist/esm/keycloak/config.js +0 -10
  231. package/dist/esm/keycloak/config.js.map +0 -6
  232. package/dist/esm/keycloak/config.mjs +0 -8
  233. package/dist/esm/keycloak/config.mjs.map +0 -1
  234. package/dist/esm/keycloak/config.native.js +0 -10
  235. package/dist/esm/keycloak/config.native.js.map +0 -6
  236. package/dist/esm/keycloak/context.js +0 -6
  237. package/dist/esm/keycloak/context.js.map +0 -6
  238. package/dist/esm/keycloak/context.mjs +0 -4
  239. package/dist/esm/keycloak/context.mjs.map +0 -1
  240. package/dist/esm/keycloak/context.native.js +0 -6
  241. package/dist/esm/keycloak/context.native.js.map +0 -6
  242. package/dist/esm/keycloak/index.electron.js +0 -30
  243. package/dist/esm/keycloak/index.electron.js.map +0 -6
  244. package/dist/esm/keycloak/index.electron.mjs +0 -29
  245. package/dist/esm/keycloak/index.electron.mjs.map +0 -1
  246. package/dist/esm/keycloak/index.electron.native.js +0 -117
  247. package/dist/esm/keycloak/index.electron.native.js.map +0 -6
  248. package/dist/esm/keycloak/index.js +0 -98
  249. package/dist/esm/keycloak/index.js.map +0 -6
  250. package/dist/esm/keycloak/index.mjs +0 -105
  251. package/dist/esm/keycloak/index.mjs.map +0 -1
  252. package/dist/esm/keycloak/index.native.js +0 -81
  253. package/dist/esm/keycloak/index.native.js.map +0 -6
  254. package/dist/esm/keycloak/index.webext.js +0 -30
  255. package/dist/esm/keycloak/index.webext.js.map +0 -6
  256. package/dist/esm/keycloak/index.webext.mjs +0 -29
  257. package/dist/esm/keycloak/index.webext.mjs.map +0 -1
  258. package/dist/esm/keycloak/index.webext.native.js +0 -117
  259. package/dist/esm/keycloak/index.webext.native.js.map +0 -6
  260. package/dist/esm/one.js +0 -96
  261. package/dist/esm/one.js.map +0 -6
  262. package/dist/esm/one.mjs +0 -87
  263. package/dist/esm/one.mjs.map +0 -1
  264. package/dist/esm/one.native.js +0 -98
  265. package/dist/esm/one.native.js.map +0 -6
  266. package/dist/esm/provider/AfterAuth.js +0 -34
  267. package/dist/esm/provider/AfterAuth.js.map +0 -6
  268. package/dist/esm/provider/AfterAuth.mjs +0 -34
  269. package/dist/esm/provider/AfterAuth.mjs.map +0 -1
  270. package/dist/esm/provider/AfterAuth.native.js +0 -53
  271. package/dist/esm/provider/AfterAuth.native.js.map +0 -6
  272. package/dist/esm/provider/AuthProvider/index.electron.js +0 -231
  273. package/dist/esm/provider/AuthProvider/index.electron.js.map +0 -6
  274. package/dist/esm/provider/AuthProvider/index.electron.mjs +0 -189
  275. package/dist/esm/provider/AuthProvider/index.electron.mjs.map +0 -1
  276. package/dist/esm/provider/AuthProvider/index.electron.native.js +0 -281
  277. package/dist/esm/provider/AuthProvider/index.electron.native.js.map +0 -6
  278. package/dist/esm/provider/AuthProvider/index.js +0 -229
  279. package/dist/esm/provider/AuthProvider/index.js.map +0 -6
  280. package/dist/esm/provider/AuthProvider/index.mjs +0 -189
  281. package/dist/esm/provider/AuthProvider/index.mjs.map +0 -1
  282. package/dist/esm/provider/AuthProvider/index.native.js +0 -186
  283. package/dist/esm/provider/AuthProvider/index.native.js.map +0 -6
  284. package/dist/esm/provider/AuthProvider/index.webext.js +0 -231
  285. package/dist/esm/provider/AuthProvider/index.webext.js.map +0 -6
  286. package/dist/esm/provider/AuthProvider/index.webext.mjs +0 -189
  287. package/dist/esm/provider/AuthProvider/index.webext.mjs.map +0 -1
  288. package/dist/esm/provider/AuthProvider/index.webext.native.js +0 -281
  289. package/dist/esm/provider/AuthProvider/index.webext.native.js.map +0 -6
  290. package/dist/esm/provider/AuthProvider/shared.js +0 -14
  291. package/dist/esm/provider/AuthProvider/shared.js.map +0 -6
  292. package/dist/esm/provider/AuthProvider/shared.mjs +0 -11
  293. package/dist/esm/provider/AuthProvider/shared.mjs.map +0 -1
  294. package/dist/esm/provider/AuthProvider/shared.native.js +0 -17
  295. package/dist/esm/provider/AuthProvider/shared.native.js.map +0 -6
  296. package/dist/esm/provider/KeycloakProvider.js +0 -37
  297. package/dist/esm/provider/KeycloakProvider.js.map +0 -6
  298. package/dist/esm/provider/KeycloakProvider.mjs +0 -37
  299. package/dist/esm/provider/KeycloakProvider.mjs.map +0 -1
  300. package/dist/esm/provider/KeycloakProvider.native.js +0 -36
  301. package/dist/esm/provider/KeycloakProvider.native.js.map +0 -6
  302. package/dist/esm/provider/index.js +0 -4
  303. package/dist/esm/provider/index.js.map +0 -6
  304. package/dist/esm/provider/index.mjs +0 -4
  305. package/dist/esm/provider/index.mjs.map +0 -1
  306. package/dist/esm/provider/index.native.js +0 -4
  307. package/dist/esm/provider/index.native.js.map +0 -6
  308. package/dist/esm/session/index.electron.js +0 -11
  309. package/dist/esm/session/index.electron.js.map +0 -6
  310. package/dist/esm/session/index.electron.mjs +0 -8
  311. package/dist/esm/session/index.electron.mjs.map +0 -1
  312. package/dist/esm/session/index.electron.native.js +0 -11
  313. package/dist/esm/session/index.electron.native.js.map +0 -6
  314. package/dist/esm/session/index.js +0 -15
  315. package/dist/esm/session/index.js.map +0 -6
  316. package/dist/esm/session/index.mjs +0 -13
  317. package/dist/esm/session/index.mjs.map +0 -1
  318. package/dist/esm/session/index.native.js +0 -11
  319. package/dist/esm/session/index.native.js.map +0 -6
  320. package/dist/esm/session/index.webext.js +0 -11
  321. package/dist/esm/session/index.webext.js.map +0 -6
  322. package/dist/esm/session/index.webext.mjs +0 -8
  323. package/dist/esm/session/index.webext.mjs.map +0 -1
  324. package/dist/esm/session/index.webext.native.js +0 -11
  325. package/dist/esm/session/index.webext.native.js.map +0 -6
  326. package/dist/esm/state.js +0 -16
  327. package/dist/esm/state.js.map +0 -6
  328. package/dist/esm/state.mjs +0 -13
  329. package/dist/esm/state.mjs.map +0 -1
  330. package/dist/esm/state.native.js +0 -25
  331. package/dist/esm/state.native.js.map +0 -6
  332. package/dist/esm/token.js +0 -14
  333. package/dist/esm/token.js.map +0 -6
  334. package/dist/esm/token.mjs +0 -12
  335. package/dist/esm/token.mjs.map +0 -1
  336. package/dist/esm/token.native.js +0 -14
  337. package/dist/esm/token.native.js.map +0 -6
  338. package/dist/esm/types.js +0 -1
  339. package/dist/esm/types.js.map +0 -6
  340. package/dist/esm/types.mjs +0 -2
  341. package/dist/esm/types.mjs.map +0 -1
  342. package/dist/esm/types.native.js +0 -1
  343. package/dist/esm/types.native.js.map +0 -6
  344. package/dist/jsx/Authenticated.js +0 -36
  345. package/dist/jsx/Authenticated.js.map +0 -6
  346. package/dist/jsx/Authenticated.mjs +0 -48
  347. package/dist/jsx/Authenticated.mjs.map +0 -1
  348. package/dist/jsx/Authenticated.native.js +0 -49
  349. package/dist/jsx/Authenticated.native.js.map +0 -6
  350. package/dist/jsx/Loading.js +0 -11
  351. package/dist/jsx/Loading.js.map +0 -6
  352. package/dist/jsx/Loading.mjs +0 -16
  353. package/dist/jsx/Loading.mjs.map +0 -1
  354. package/dist/jsx/Loading.native.js +0 -13
  355. package/dist/jsx/Loading.native.js.map +0 -6
  356. package/dist/jsx/authConfig.js +0 -7
  357. package/dist/jsx/authConfig.js.map +0 -6
  358. package/dist/jsx/authConfig.mjs +0 -5
  359. package/dist/jsx/authConfig.mjs.map +0 -1
  360. package/dist/jsx/authConfig.native.js +0 -7
  361. package/dist/jsx/authConfig.native.js.map +0 -6
  362. package/dist/jsx/hooks/index.js +0 -4
  363. package/dist/jsx/hooks/index.js.map +0 -6
  364. package/dist/jsx/hooks/index.mjs +0 -4
  365. package/dist/jsx/hooks/index.mjs.map +0 -1
  366. package/dist/jsx/hooks/index.native.js +0 -4
  367. package/dist/jsx/hooks/index.native.js.map +0 -6
  368. package/dist/jsx/hooks/useAuthConfig.js +0 -9
  369. package/dist/jsx/hooks/useAuthConfig.js.map +0 -6
  370. package/dist/jsx/hooks/useAuthConfig.mjs +0 -7
  371. package/dist/jsx/hooks/useAuthConfig.mjs.map +0 -1
  372. package/dist/jsx/hooks/useAuthConfig.native.js +0 -9
  373. package/dist/jsx/hooks/useAuthConfig.native.js.map +0 -6
  374. package/dist/jsx/hooks/useTokensFromQuery/index.js +0 -14
  375. package/dist/jsx/hooks/useTokensFromQuery/index.js.map +0 -6
  376. package/dist/jsx/hooks/useTokensFromQuery/index.mjs +0 -12
  377. package/dist/jsx/hooks/useTokensFromQuery/index.mjs.map +0 -1
  378. package/dist/jsx/hooks/useTokensFromQuery/index.native.js +0 -7
  379. package/dist/jsx/hooks/useTokensFromQuery/index.native.js.map +0 -6
  380. package/dist/jsx/hooks/useTokensFromState.js +0 -11
  381. package/dist/jsx/hooks/useTokensFromState.js.map +0 -6
  382. package/dist/jsx/hooks/useTokensFromState.mjs +0 -8
  383. package/dist/jsx/hooks/useTokensFromState.mjs.map +0 -1
  384. package/dist/jsx/hooks/useTokensFromState.native.js +0 -11
  385. package/dist/jsx/hooks/useTokensFromState.native.js.map +0 -6
  386. package/dist/jsx/index.js +0 -8
  387. package/dist/jsx/index.js.map +0 -6
  388. package/dist/jsx/index.mjs +0 -8
  389. package/dist/jsx/index.mjs.map +0 -1
  390. package/dist/jsx/index.native.js +0 -8
  391. package/dist/jsx/index.native.js.map +0 -6
  392. package/dist/jsx/keycloak/base.js +0 -77
  393. package/dist/jsx/keycloak/base.js.map +0 -6
  394. package/dist/jsx/keycloak/base.mjs +0 -66
  395. package/dist/jsx/keycloak/base.mjs.map +0 -1
  396. package/dist/jsx/keycloak/base.native.js +0 -116
  397. package/dist/jsx/keycloak/base.native.js.map +0 -6
  398. package/dist/jsx/keycloak/config.js +0 -10
  399. package/dist/jsx/keycloak/config.js.map +0 -6
  400. package/dist/jsx/keycloak/config.mjs +0 -8
  401. package/dist/jsx/keycloak/config.mjs.map +0 -1
  402. package/dist/jsx/keycloak/config.native.js +0 -10
  403. package/dist/jsx/keycloak/config.native.js.map +0 -6
  404. package/dist/jsx/keycloak/context.js +0 -6
  405. package/dist/jsx/keycloak/context.js.map +0 -6
  406. package/dist/jsx/keycloak/context.mjs +0 -4
  407. package/dist/jsx/keycloak/context.mjs.map +0 -1
  408. package/dist/jsx/keycloak/context.native.js +0 -6
  409. package/dist/jsx/keycloak/context.native.js.map +0 -6
  410. package/dist/jsx/keycloak/index.electron.js +0 -30
  411. package/dist/jsx/keycloak/index.electron.js.map +0 -6
  412. package/dist/jsx/keycloak/index.electron.mjs +0 -29
  413. package/dist/jsx/keycloak/index.electron.mjs.map +0 -1
  414. package/dist/jsx/keycloak/index.electron.native.js +0 -117
  415. package/dist/jsx/keycloak/index.electron.native.js.map +0 -6
  416. package/dist/jsx/keycloak/index.js +0 -98
  417. package/dist/jsx/keycloak/index.js.map +0 -6
  418. package/dist/jsx/keycloak/index.mjs +0 -105
  419. package/dist/jsx/keycloak/index.mjs.map +0 -1
  420. package/dist/jsx/keycloak/index.native.js +0 -81
  421. package/dist/jsx/keycloak/index.native.js.map +0 -6
  422. package/dist/jsx/keycloak/index.webext.js +0 -30
  423. package/dist/jsx/keycloak/index.webext.js.map +0 -6
  424. package/dist/jsx/keycloak/index.webext.mjs +0 -29
  425. package/dist/jsx/keycloak/index.webext.mjs.map +0 -1
  426. package/dist/jsx/keycloak/index.webext.native.js +0 -117
  427. package/dist/jsx/keycloak/index.webext.native.js.map +0 -6
  428. package/dist/jsx/one.js +0 -96
  429. package/dist/jsx/one.js.map +0 -6
  430. package/dist/jsx/one.mjs +0 -87
  431. package/dist/jsx/one.mjs.map +0 -1
  432. package/dist/jsx/one.native.js +0 -98
  433. package/dist/jsx/one.native.js.map +0 -6
  434. package/dist/jsx/provider/AfterAuth.js +0 -34
  435. package/dist/jsx/provider/AfterAuth.js.map +0 -6
  436. package/dist/jsx/provider/AfterAuth.mjs +0 -34
  437. package/dist/jsx/provider/AfterAuth.mjs.map +0 -1
  438. package/dist/jsx/provider/AfterAuth.native.js +0 -53
  439. package/dist/jsx/provider/AfterAuth.native.js.map +0 -6
  440. package/dist/jsx/provider/AuthProvider/index.electron.js +0 -231
  441. package/dist/jsx/provider/AuthProvider/index.electron.js.map +0 -6
  442. package/dist/jsx/provider/AuthProvider/index.electron.mjs +0 -189
  443. package/dist/jsx/provider/AuthProvider/index.electron.mjs.map +0 -1
  444. package/dist/jsx/provider/AuthProvider/index.electron.native.js +0 -281
  445. package/dist/jsx/provider/AuthProvider/index.electron.native.js.map +0 -6
  446. package/dist/jsx/provider/AuthProvider/index.js +0 -229
  447. package/dist/jsx/provider/AuthProvider/index.js.map +0 -6
  448. package/dist/jsx/provider/AuthProvider/index.mjs +0 -189
  449. package/dist/jsx/provider/AuthProvider/index.mjs.map +0 -1
  450. package/dist/jsx/provider/AuthProvider/index.native.js +0 -186
  451. package/dist/jsx/provider/AuthProvider/index.native.js.map +0 -6
  452. package/dist/jsx/provider/AuthProvider/index.webext.js +0 -231
  453. package/dist/jsx/provider/AuthProvider/index.webext.js.map +0 -6
  454. package/dist/jsx/provider/AuthProvider/index.webext.mjs +0 -189
  455. package/dist/jsx/provider/AuthProvider/index.webext.mjs.map +0 -1
  456. package/dist/jsx/provider/AuthProvider/index.webext.native.js +0 -281
  457. package/dist/jsx/provider/AuthProvider/index.webext.native.js.map +0 -6
  458. package/dist/jsx/provider/AuthProvider/shared.js +0 -14
  459. package/dist/jsx/provider/AuthProvider/shared.js.map +0 -6
  460. package/dist/jsx/provider/AuthProvider/shared.mjs +0 -11
  461. package/dist/jsx/provider/AuthProvider/shared.mjs.map +0 -1
  462. package/dist/jsx/provider/AuthProvider/shared.native.js +0 -17
  463. package/dist/jsx/provider/AuthProvider/shared.native.js.map +0 -6
  464. package/dist/jsx/provider/KeycloakProvider.js +0 -37
  465. package/dist/jsx/provider/KeycloakProvider.js.map +0 -6
  466. package/dist/jsx/provider/KeycloakProvider.mjs +0 -37
  467. package/dist/jsx/provider/KeycloakProvider.mjs.map +0 -1
  468. package/dist/jsx/provider/KeycloakProvider.native.js +0 -36
  469. package/dist/jsx/provider/KeycloakProvider.native.js.map +0 -6
  470. package/dist/jsx/provider/index.js +0 -4
  471. package/dist/jsx/provider/index.js.map +0 -6
  472. package/dist/jsx/provider/index.mjs +0 -4
  473. package/dist/jsx/provider/index.mjs.map +0 -1
  474. package/dist/jsx/provider/index.native.js +0 -4
  475. package/dist/jsx/provider/index.native.js.map +0 -6
  476. package/dist/jsx/session/index.electron.js +0 -11
  477. package/dist/jsx/session/index.electron.js.map +0 -6
  478. package/dist/jsx/session/index.electron.mjs +0 -8
  479. package/dist/jsx/session/index.electron.mjs.map +0 -1
  480. package/dist/jsx/session/index.electron.native.js +0 -11
  481. package/dist/jsx/session/index.electron.native.js.map +0 -6
  482. package/dist/jsx/session/index.js +0 -15
  483. package/dist/jsx/session/index.js.map +0 -6
  484. package/dist/jsx/session/index.mjs +0 -13
  485. package/dist/jsx/session/index.mjs.map +0 -1
  486. package/dist/jsx/session/index.native.js +0 -11
  487. package/dist/jsx/session/index.native.js.map +0 -6
  488. package/dist/jsx/session/index.webext.js +0 -11
  489. package/dist/jsx/session/index.webext.js.map +0 -6
  490. package/dist/jsx/session/index.webext.mjs +0 -8
  491. package/dist/jsx/session/index.webext.mjs.map +0 -1
  492. package/dist/jsx/session/index.webext.native.js +0 -11
  493. package/dist/jsx/session/index.webext.native.js.map +0 -6
  494. package/dist/jsx/state.js +0 -16
  495. package/dist/jsx/state.js.map +0 -6
  496. package/dist/jsx/state.mjs +0 -13
  497. package/dist/jsx/state.mjs.map +0 -1
  498. package/dist/jsx/state.native.js +0 -25
  499. package/dist/jsx/state.native.js.map +0 -6
  500. package/dist/jsx/token.js +0 -14
  501. package/dist/jsx/token.js.map +0 -6
  502. package/dist/jsx/token.mjs +0 -12
  503. package/dist/jsx/token.mjs.map +0 -1
  504. package/dist/jsx/token.native.js +0 -14
  505. package/dist/jsx/token.native.js.map +0 -6
  506. package/dist/jsx/types.js +0 -1
  507. package/dist/jsx/types.js.map +0 -6
  508. package/dist/jsx/types.mjs +0 -2
  509. package/dist/jsx/types.mjs.map +0 -1
  510. package/dist/jsx/types.native.js +0 -1
  511. package/dist/jsx/types.native.js.map +0 -6
  512. package/src/@types/expoKeycloakAuth.d.ts +0 -25
  513. package/src/keycloak/index.electron.ts +0 -72
  514. package/src/provider/AuthProvider/index.electron.tsx +0 -419
  515. package/src/provider/AuthProvider/index.native.tsx +0 -308
  516. package/src/session/index.electron.ts +0 -33
  517. package/types/Authenticated.d.ts +0 -29
  518. package/types/Authenticated.d.ts.map +0 -1
  519. package/types/Loading.d.ts +0 -26
  520. package/types/Loading.d.ts.map +0 -1
  521. package/types/authConfig.d.ts +0 -11
  522. package/types/authConfig.d.ts.map +0 -1
  523. package/types/hooks/index.d.ts +0 -24
  524. package/types/hooks/index.d.ts.map +0 -1
  525. package/types/hooks/useAuthConfig.d.ts +0 -2
  526. package/types/hooks/useAuthConfig.d.ts.map +0 -1
  527. package/types/hooks/useTokensFromQuery/index.d.ts +0 -2
  528. package/types/hooks/useTokensFromQuery/index.d.ts.map +0 -1
  529. package/types/hooks/useTokensFromQuery/index.native.d.ts +0 -2
  530. package/types/hooks/useTokensFromQuery/index.native.d.ts.map +0 -1
  531. package/types/hooks/useTokensFromState.d.ts +0 -2
  532. package/types/hooks/useTokensFromState.d.ts.map +0 -1
  533. package/types/index.d.ts +0 -28
  534. package/types/index.d.ts.map +0 -1
  535. package/types/keycloak/base.d.ts +0 -51
  536. package/types/keycloak/base.d.ts.map +0 -1
  537. package/types/keycloak/config.d.ts +0 -8
  538. package/types/keycloak/config.d.ts.map +0 -1
  539. package/types/keycloak/context.d.ts +0 -4
  540. package/types/keycloak/context.d.ts.map +0 -1
  541. package/types/keycloak/index.d.ts +0 -15
  542. package/types/keycloak/index.d.ts.map +0 -1
  543. package/types/keycloak/index.electron.d.ts +0 -12
  544. package/types/keycloak/index.electron.d.ts.map +0 -1
  545. package/types/keycloak/index.native.d.ts +0 -27
  546. package/types/keycloak/index.native.d.ts.map +0 -1
  547. package/types/keycloak/index.webext.d.ts +0 -12
  548. package/types/keycloak/index.webext.d.ts.map +0 -1
  549. package/types/one.d.ts +0 -27
  550. package/types/one.d.ts.map +0 -1
  551. package/types/provider/AfterAuth.d.ts +0 -26
  552. package/types/provider/AfterAuth.d.ts.map +0 -1
  553. package/types/provider/AuthProvider/index.d.ts +0 -23
  554. package/types/provider/AuthProvider/index.d.ts.map +0 -1
  555. package/types/provider/AuthProvider/index.electron.d.ts +0 -23
  556. package/types/provider/AuthProvider/index.electron.d.ts.map +0 -1
  557. package/types/provider/AuthProvider/index.native.d.ts +0 -23
  558. package/types/provider/AuthProvider/index.native.d.ts.map +0 -1
  559. package/types/provider/AuthProvider/index.webext.d.ts +0 -23
  560. package/types/provider/AuthProvider/index.webext.d.ts.map +0 -1
  561. package/types/provider/AuthProvider/shared.d.ts +0 -53
  562. package/types/provider/AuthProvider/shared.d.ts.map +0 -1
  563. package/types/provider/KeycloakProvider.d.ts +0 -30
  564. package/types/provider/KeycloakProvider.d.ts.map +0 -1
  565. package/types/provider/index.d.ts +0 -24
  566. package/types/provider/index.d.ts.map +0 -1
  567. package/types/session/index.d.ts +0 -16
  568. package/types/session/index.d.ts.map +0 -1
  569. package/types/session/index.electron.d.ts +0 -5
  570. package/types/session/index.electron.d.ts.map +0 -1
  571. package/types/session/index.native.d.ts +0 -5
  572. package/types/session/index.native.d.ts.map +0 -1
  573. package/types/session/index.webext.d.ts +0 -5
  574. package/types/session/index.webext.d.ts.map +0 -1
  575. package/types/state.d.ts +0 -9
  576. package/types/state.d.ts.map +0 -1
  577. package/types/token.d.ts +0 -16
  578. package/types/token.d.ts.map +0 -1
  579. package/types/types.d.ts +0 -19
  580. package/types/types.d.ts.map +0 -1
@@ -1,45 +1,20 @@
1
- /*
1
+ /**
2
2
  * File: /src/keycloak/index.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 25-12-2024 04:55:48
5
- * Author: Clay Risser
6
- * -----
7
- * BitSpur (c) Copyright 2021 - 2024
8
4
  *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
5
+ * Better Auth–powered Keycloak class and useKeycloak hook for web.
6
+ * Replaces the previous next-auth/react based implementation.
20
7
  */
21
8
 
22
- import type KeycloakClient from "keycloak-js";
23
- import { isBrowser, isServer, isStorybook } from "multiplatform.one";
24
- import {
25
- type SignInAuthorizationParams,
26
- type SignInOptions,
27
- type SignInResponse,
28
- getCsrfToken,
29
- getProviders,
30
- getSession,
31
- signOut,
32
- } from "next-auth/react";
9
+ import type KeycloakClient from "@multiplatform.one/keycloak-js";
10
+ import { isBrowser, isServer, isStorybook, isWeb } from "@multiplatform.one/platform";
33
11
  import { useContext } from "react";
12
+ import { getAuthClient } from "../betterAuth/client";
34
13
  import { useAuthConfig } from "../hooks/index";
35
14
  import type { Session } from "../session/index";
36
15
  import { useSession } from "../session/index";
37
16
  import type { KeycloakMock } from "../types";
38
- import {
39
- BaseKeycloak,
40
- type KeycloakLoginOptions,
41
- type KeycloakLogoutOptions,
42
- } from "./base";
17
+ import { BaseKeycloak, type KeycloakLoginOptions, type KeycloakLogoutOptions } from "./base";
43
18
  import { KeycloakConfigContext } from "./config";
44
19
  import { KeycloakContext } from "./context";
45
20
 
@@ -63,11 +38,10 @@ export class Keycloak extends BaseKeycloak {
63
38
  if (this._keycloakClient) {
64
39
  await this._keycloakClient.login(options);
65
40
  } else if (isBrowser && !isServer) {
66
- await cookieSignIn({
67
- callbackUrl: options.redirectUri,
68
- ...(typeof options.redirect !== "undefined"
69
- ? { redirect: options.redirect }
70
- : {}),
41
+ const client = getAuthClient();
42
+ await client.signIn.social({
43
+ provider: "keycloak" as any,
44
+ callbackURL: options.redirectUri || (isWeb ? window.location.href : ""),
71
45
  });
72
46
  } else {
73
47
  await this._login?.(options);
@@ -79,9 +53,17 @@ export class Keycloak extends BaseKeycloak {
79
53
  if (this._keycloakClient) {
80
54
  await this._keycloakClient.logout(options);
81
55
  } else if (isBrowser && !isServer) {
82
- await fetch("/api/auth/logout", { method: "GET" });
83
- await signOut({
84
- callbackUrl: options.redirectUri,
56
+ const client = getAuthClient();
57
+ await client.signOut({
58
+ fetchOptions: {
59
+ onSuccess: () => {
60
+ if (options.redirectUri) {
61
+ if (isWeb) window.location.href = options.redirectUri;
62
+ } else {
63
+ if (isWeb) window.location.reload();
64
+ }
65
+ },
66
+ },
85
67
  });
86
68
  } else {
87
69
  await this._logout?.(options);
@@ -106,64 +88,14 @@ export function useKeycloak() {
106
88
  if (status === "unauthenticated") {
107
89
  return new Keycloak(keycloakConfig);
108
90
  }
109
- if (status === "authenticated" && session?.accessToken) {
110
- return new Keycloak(keycloakConfig, session as Session);
111
- }
112
- }
113
-
114
- export async function cookieSignIn(
115
- options?: SignInOptions,
116
- authorizationParams?: SignInAuthorizationParams,
117
- ): Promise<SignInResponse | undefined> {
118
- const provider = "keycloak";
119
- const baseUrl = `${new URL(window.location.href).origin}/api/auth`;
120
- const { callbackUrl = window.location.href, redirect = true } = options ?? {};
121
- const providers = await getProviders();
122
- if (!providers) {
123
- window.location.href = `${baseUrl}/error`;
124
- return;
125
- }
126
- if (!provider || !(provider in providers)) {
127
- window.location.href = `${baseUrl}/signin?${new URLSearchParams({
128
- callbackUrl,
129
- })}`;
130
- return;
131
- }
132
- const isCredentials = providers[provider].type === "credentials";
133
- const isEmail = providers[provider].type === "email";
134
- const isSupportingReturn = isCredentials || isEmail;
135
- const signInUrl = `${baseUrl}/${
136
- isCredentials ? "callback" : "signin"
137
- }/${provider}`;
138
- const _signInUrl = `${signInUrl}${authorizationParams ? `?${new URLSearchParams(authorizationParams)}` : ""}`;
139
- const res = await fetch(_signInUrl, {
140
- method: "post",
141
- headers: {
142
- "Content-Type": "application/x-www-form-urlencoded",
143
- "X-Auth-Return-Redirect": "1",
144
- },
145
- body: new URLSearchParams({
146
- ...(options as any),
147
- csrfToken: await getCsrfToken(),
148
- callbackUrl,
149
- json: true,
150
- }),
151
- });
152
- const data = await res.json();
153
- if (redirect || !isSupportingReturn) {
154
- const url = data.url ?? callbackUrl;
155
- window.location.href = url;
156
- if (url.includes("#")) window.location.reload();
157
- return;
91
+ if (status === "authenticated") {
92
+ if (session?.accessToken) {
93
+ return new Keycloak(keycloakConfig, session as Session);
94
+ }
95
+ // Better Auth cookie-based session without tokens — return a Keycloak
96
+ // wrapper so login()/logout() delegate to the Better Auth client.
97
+ return new Keycloak(keycloakConfig);
158
98
  }
159
- const error = new URL(data.url).searchParams.get("error");
160
- if (res.ok) await getSession({ event: "storage" });
161
- return {
162
- error,
163
- status: res.status,
164
- ok: res.ok,
165
- url: error ? null : data.url,
166
- };
167
99
  }
168
100
 
169
101
  export * from "./base";
@@ -1,34 +1,18 @@
1
- /*
2
- * File: /src/keycloak/index.electron.ts
1
+ /**
2
+ * File: /src/keycloak/index.webext.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 10-01-2025 21:02:36
5
- * Author: Clay Risser
6
- * -----
7
- * BitSpur (c) Copyright 2021 - 2025
8
4
  *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
5
+ * WebExt Keycloak class using Better Auth client for login/logout.
6
+ * Patched Keycloak JS client when available (iframe/token scenarios).
20
7
  */
21
8
 
22
- import type KeycloakClient from "keycloak-js";
9
+ import type KeycloakClient from "@multiplatform.one/keycloak-js";
10
+ import { isBrowser, isServer } from "@multiplatform.one/platform";
23
11
  import { useContext } from "react";
12
+ import { getAuthClient } from "../betterAuth/client";
24
13
  import { useAuthConfig } from "../hooks";
25
14
  import type { KeycloakMock } from "../types";
26
- import {
27
- BaseKeycloak,
28
- type KeycloakLoginOptions,
29
- type KeycloakLogoutOptions,
30
- } from "./base";
31
- import { KeycloakConfigContext } from "./config";
15
+ import { BaseKeycloak, type KeycloakLoginOptions, type KeycloakLogoutOptions } from "./base";
32
16
  import { KeycloakContext } from "./context";
33
17
 
34
18
  export class Keycloak extends BaseKeycloak {
@@ -44,6 +28,12 @@ export class Keycloak extends BaseKeycloak {
44
28
  this._clear();
45
29
  if (this._keycloakClient) {
46
30
  await this._keycloakClient.login(options);
31
+ } else if (isBrowser && !isServer) {
32
+ const client = getAuthClient();
33
+ await client.signIn.social({
34
+ provider: "keycloak" as any,
35
+ callbackURL: options.redirectUri || window.location.href,
36
+ });
47
37
  } else {
48
38
  await this._login?.(options);
49
39
  }
@@ -53,6 +43,15 @@ export class Keycloak extends BaseKeycloak {
53
43
  async logout(options: KeycloakLogoutOptions = {}) {
54
44
  if (this._keycloakClient) {
55
45
  await this._keycloakClient.logout(options);
46
+ } else if (isBrowser && !isServer) {
47
+ const client = getAuthClient();
48
+ await client.signOut({
49
+ fetchOptions: {
50
+ onSuccess: () => {
51
+ if (options.redirectUri) window.location.href = options.redirectUri;
52
+ },
53
+ },
54
+ });
56
55
  } else {
57
56
  await this._logout?.(options);
58
57
  }
@@ -62,7 +61,6 @@ export class Keycloak extends BaseKeycloak {
62
61
 
63
62
  export function useKeycloak() {
64
63
  const keycloak = useContext(KeycloakContext);
65
- const keycloakConfig = useContext(KeycloakConfigContext);
66
64
  const { disabled } = useAuthConfig();
67
65
  if (disabled) return null;
68
66
  if (keycloak) return keycloak;
package/src/one.ts CHANGED
@@ -1,170 +1,84 @@
1
- /*
1
+ /**
2
2
  * File: /src/one.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 10-01-2025 21:02:36
5
- * Author: Clay Risser
6
- * -----
7
- * BitSpur (c) Copyright 2021 - 2025
8
4
  *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
5
+ * Better Auth server configuration factory for apps using One.
6
+ * Replaces the previous Auth.js (createAuthConfig) approach.
7
+ * Stateless sessions no database required.
20
8
  */
21
9
 
22
- import type { AuthConfig } from "@auth/core";
23
- import type { JWT } from "@auth/core/jwt";
24
- import type { OAuthUserConfig } from "@auth/core/providers";
25
- import KeycloakProvider from "@auth/core/providers/keycloak";
26
- import { jwtDecode } from "jwt-decode";
27
- import type { Session } from "./session/index";
28
- import type { AccessTokenParsed } from "./token";
10
+ import { betterAuth } from "better-auth";
11
+ import { genericOAuth, keycloak } from "better-auth/plugins";
12
+ import { expo } from "@better-auth/expo";
29
13
 
30
- let _authConfig: AuthConfig | undefined;
31
- const defaults = {
32
- keycloak: {
33
- baseUrl: "http://localhost:8080",
34
- realm: "master",
35
- },
36
- };
14
+ let _auth: ReturnType<typeof betterAuth<any>> | undefined;
37
15
 
38
- export function createAuthConfig(config: AuthHandlerConfig) {
39
- if (_authConfig) return _authConfig;
40
- const authorization =
41
- config.keycloak.authorization &&
42
- typeof config.keycloak.authorization === "object"
43
- ? config.keycloak.authorization
44
- : {};
45
- _authConfig = {
46
- ...config.auth,
16
+ export function createAuth(config: AuthHandlerConfig) {
17
+ if (_auth) return _auth;
18
+ const baseUrl =
19
+ config.baseUrl ||
20
+ (typeof process !== "undefined"
21
+ ? process.env?.BASE_URL || `http://localhost:${process.env?.ONE_PORT || "3000"}`
22
+ : "http://localhost:3000");
23
+ const keycloakBaseUrl = config.keycloak?.baseUrl || `${baseUrl}/auth`;
24
+ const realm = config.keycloak?.realm || "master";
25
+ const issuer = `${keycloakBaseUrl}/realms/${realm}`;
26
+
27
+ _auth = betterAuth({
47
28
  basePath: "/api/auth",
48
- trustHost: true,
49
- providers: [
50
- KeycloakProvider({
51
- issuer: `${config.keycloak?.baseUrl || defaults.keycloak.baseUrl}/realms/${config.keycloak?.realm || defaults.keycloak.realm}`,
52
- authorization: {
53
- ...authorization,
54
- params: {
55
- scope: [
56
- ...new Set([
57
- "email",
58
- "openid",
59
- "profile",
60
- ...(authorization.params?.scope?.split(" ") || []),
61
- ...(config.scopes || []),
62
- ]),
63
- ].join(" "),
64
- },
65
- },
66
- ...config.keycloak,
67
- }),
68
- ...(config.auth?.providers || []),
29
+ baseURL: baseUrl,
30
+ secret: config.secret || "",
31
+ trustedOrigins: [
32
+ baseUrl,
33
+ keycloakBaseUrl,
34
+ ...(config.expoScheme ? [`${config.expoScheme}://`] : []),
69
35
  ],
70
- callbacks: {
71
- ...config.auth?.callbacks,
72
- async jwt(params) {
73
- if (typeof config.auth?.callbacks?.jwt === "function") {
74
- return config.auth?.callbacks.jwt(params);
75
- }
76
- const { token, account } = params;
77
- if (account) {
78
- const decoded = jwtDecode(
79
- account.access_token || "",
80
- ) as AccessTokenParsed;
81
- token.decoded = decoded;
82
- token.accessToken = account.access_token;
83
- token.idToken = account.id_token;
84
- token.expiresAt = account.expires_at;
85
- token.refreshToken = account.refresh_token;
86
- token.roles = decoded.realm_access?.roles;
87
- return token;
88
- }
89
- if (Math.floor(Date.now() / 1000) < Number(token.expiresAt)) {
90
- return token;
91
- }
92
- try {
93
- return refreshAccessToken(config, token as AuthToken);
94
- } catch (err) {
95
- return { ...token, err };
96
- }
97
- },
98
- async session(params) {
99
- if (typeof config.auth?.callbacks?.session === "function") {
100
- return config.auth.callbacks.session(params);
101
- }
102
- const { session: nextSession, token: nextToken } = params;
103
- const session = nextSession as Session;
104
- const token = nextToken as AuthToken;
105
- if (token.accessToken) session.accessToken = token.accessToken;
106
- if (token.idToken) session.idToken = token.idToken;
107
- session.err = token.err;
108
- return session;
109
- },
110
- } as AuthConfig["callbacks"],
111
- } as AuthConfig;
112
- return _authConfig;
113
- }
114
-
115
- async function refreshAccessToken(
116
- options: AuthHandlerConfig,
117
- nextToken: AuthToken,
118
- ) {
119
- const res = await fetch(
120
- `${options.keycloak?.baseUrl || defaults.keycloak.baseUrl}/realms/${
121
- options.keycloak?.realm || defaults.keycloak.realm
122
- }/protocol/openid-connect/token`,
123
- {
124
- method: "POST",
125
- headers: {
126
- "Content-Type": "application/x-www-form-urlencoded",
36
+ session: {
37
+ cookieCache: {
38
+ enabled: true,
39
+ maxAge: 7 * 24 * 60 * 60,
40
+ strategy: "jwe",
41
+ refreshCache: true,
127
42
  },
128
- body: new URLSearchParams({
129
- client_id: options.keycloak.clientId || "",
130
- client_secret: options.keycloak.clientSecret || "",
131
- grant_type: "refresh_token",
132
- refresh_token: nextToken.refreshToken,
133
- }),
134
43
  },
135
- );
136
- const refreshToken = await res.json();
137
- if (!res.ok) throw refreshToken;
138
- return {
139
- ...nextToken,
140
- accessToken: refreshToken.access_token,
141
- decoded: jwtDecode(refreshToken.access_token),
142
- expiresAt: Math.floor(Date.now() / 1000) + Number(refreshToken.expires_in),
143
- idToken: refreshToken.id_token,
144
- refreshToken: refreshToken.refresh_token,
145
- };
146
- }
44
+ account: {
45
+ storeStateStrategy: "cookie",
46
+ storeAccountCookie: true,
47
+ },
48
+ plugins: [
49
+ expo(),
50
+ genericOAuth({
51
+ config: [
52
+ keycloak({
53
+ clientId: config.keycloak.clientId || "",
54
+ clientSecret: config.keycloak.clientSecret || "",
55
+ issuer,
56
+ }),
57
+ ],
58
+ }),
59
+ ],
60
+ });
147
61
 
148
- export interface AuthToken extends JWT {
149
- accessToken?: string;
150
- decoded: AccessTokenParsed;
151
- err?: Error;
152
- expiresAt: number;
153
- idToken?: string;
154
- refreshToken: string;
155
- roles: string[];
62
+ return _auth;
156
63
  }
157
64
 
158
- export interface KeycloakOptions extends OAuthUserConfig<any> {
65
+ export interface KeycloakOptions {
159
66
  adminPassword?: string;
160
67
  adminUsername?: string;
161
68
  baseUrl?: string;
69
+ clientId: string;
70
+ clientSecret: string;
162
71
  realm?: string;
72
+ authorization?: Record<string, any>;
163
73
  }
164
74
 
165
75
  export interface AuthHandlerConfig {
166
- baseUrl: string;
76
+ baseUrl?: string;
167
77
  keycloak: KeycloakOptions;
168
- auth?: Partial<AuthConfig>;
78
+ secret?: string;
169
79
  scopes?: string[];
80
+ /** Expo deep-link scheme (e.g. "multiplatform-one") — added to trustedOrigins. */
81
+ expoScheme?: string;
170
82
  }
83
+
84
+ export type Auth = ReturnType<typeof createAuth>;
@@ -1,27 +1,5 @@
1
- /**
2
- * File: /src/provider/AfterAuth.tsx
3
- * Project: @multiplatform.one/keycloak
4
- * File Created: 10-01-2024 12:41:33
5
- * Author: Clay Risser
6
- * -----
7
- * BitSpur (c) Copyright 2021 - 2024
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
20
- */
21
-
22
- import { logger } from "multiplatform.one";
1
+ import { logger } from "@multiplatform.one/logger";
23
2
  import { type ComponentType, type PropsWithChildren, useEffect } from "react";
24
- import { Loading } from "../Loading";
25
3
  import { useAuthConfig } from "../hooks";
26
4
  import { useKeycloak } from "../keycloak/index";
27
5
  import { persist, useAuthStore } from "../state";
@@ -30,17 +8,21 @@ export interface AfterAuthProps extends PropsWithChildren {
30
8
  loadingComponent?: ComponentType;
31
9
  }
32
10
 
33
- export function AfterAuth({ children, loadingComponent }: AfterAuthProps) {
11
+ export function AfterAuth({ children, loadingComponent: _loadingComponent }: AfterAuthProps) {
34
12
  const authConfig = useAuthConfig();
35
13
  const authStore = useAuthStore();
36
14
  const keycloak = useKeycloak();
37
15
 
38
16
  useEffect(() => {
39
- if (!authStore || !persist || !keycloak?.authenticated) return;
17
+ if (!persist || !keycloak?.authenticated) return;
40
18
  if (keycloak.token) {
41
- authStore.token = keycloak.token;
42
- if (keycloak.idToken) authStore.idToken = keycloak.idToken;
43
- if (keycloak.refreshToken) authStore.refreshToken = keycloak.refreshToken;
19
+ authStore.setTokens({
20
+ token: keycloak.token,
21
+ ...(keycloak.idToken && { idToken: keycloak.idToken }),
22
+ ...(keycloak.refreshToken && {
23
+ refreshToken: keycloak.refreshToken,
24
+ }),
25
+ });
44
26
  }
45
27
  }, [
46
28
  authStore,
@@ -81,6 +63,5 @@ export function AfterAuth({ children, loadingComponent }: AfterAuthProps) {
81
63
  }
82
64
  }, [authConfig.debug, keycloak]);
83
65
 
84
- if (!authStore) return <Loading loadingComponent={loadingComponent} />;
85
66
  return <>{children}</>;
86
67
  }
@@ -1,29 +1,8 @@
1
- /**
2
- * File: /src/provider/KeycloakProvider.tsx
3
- * Project: @multiplatform.one/keycloak
4
- * File Created: 10-01-2024 13:56:05
5
- * Author: Clay Risser
6
- * -----
7
- * BitSpur (c) Copyright 2021 - 2024
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
20
- */
21
-
22
1
  import type { PropsWithChildren } from "react";
23
2
  import { useMemo } from "react";
24
3
  import type { AuthConfig } from "../authConfig";
25
4
  import { AuthConfigContext } from "../authConfig";
26
- import { AuthProvider } from "./AuthProvider";
5
+ import { AuthProvider } from "./authProvider";
27
6
 
28
7
  export interface KeycloakProviderProps extends PropsWithChildren, AuthConfig {
29
8
  baseUrl?: string;
@@ -55,7 +34,7 @@ export function KeycloakProvider({
55
34
  clientId: clientId || "app",
56
35
  publicClientId,
57
36
  realm: realm || "main",
58
- url: baseUrl,
37
+ url: baseUrl ?? "",
59
38
  }}
60
39
  >
61
40
  {children}