@multiplatform.one/keycloak 5.0.27 → 6.0.1

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
@@ -0,0 +1,116 @@
1
+ /**
2
+ * File: /src/provider/auth_provider/index.native.tsx
3
+ * Project: @multiplatform.one/keycloak
4
+ *
5
+ * Native (Expo) AuthProvider using Better Auth Expo client.
6
+ * Replaces the previous expo-auth-session PKCE flow.
7
+ * Auth is handled by the Better Auth server; the Expo client manages
8
+ * the browser redirect flow and stores the session cookie in SecureStore.
9
+ */
10
+
11
+ import { useEffect, useMemo, useState } from "react";
12
+ import { Loading } from "../../Loading";
13
+ import { getExpoAuthClient } from "../../betterAuth/expoClient";
14
+ import { KeycloakConfigContext } from "../../keycloak/config";
15
+ import { Keycloak } from "../../keycloak/index";
16
+ import type { KeycloakLoginOptions, KeycloakLogoutOptions } from "../../keycloak/base";
17
+ import { KeycloakContext } from "../../keycloak/context";
18
+ import { AfterAuth } from "../AfterAuth";
19
+ import type { AuthProviderProps } from "./shared";
20
+
21
+ export function AuthProvider({
22
+ children,
23
+ disabled,
24
+ keycloakConfig,
25
+ loadingComponent,
26
+ }: AuthProviderProps) {
27
+ const [keycloak, setKeycloak] = useState<Keycloak>();
28
+ const [isLoading, setIsLoading] = useState(true);
29
+
30
+ // Resolve the Better Auth server base URL from keycloak config.
31
+ // On native, the keycloakConfig.url is the Keycloak server — the Better Auth
32
+ // server is the app backend. We derive it from env or fall back to a sensible default.
33
+ const serverBaseUrl = useMemo(() => {
34
+ // The Better Auth server URL should come from config or env.
35
+ // For now, derive from keycloakConfig — the app server is typically on the same origin.
36
+ // In production, set BETTER_AUTH_BASE_URL in the app config / env.
37
+ return keycloakConfig.betterAuthBaseUrl || "http://localhost:5000";
38
+ }, [keycloakConfig]);
39
+
40
+ const scheme = useMemo(() => keycloakConfig.expoScheme || "multiplatform-one", [keycloakConfig]);
41
+
42
+ const client = useMemo(
43
+ () => (disabled ? null : getExpoAuthClient(serverBaseUrl, scheme)),
44
+ [disabled, serverBaseUrl, scheme],
45
+ );
46
+
47
+ // Check session on mount
48
+ useEffect(() => {
49
+ if (disabled || !client) {
50
+ setIsLoading(false);
51
+ return;
52
+ }
53
+ (async () => {
54
+ try {
55
+ const session = await client.getSession();
56
+ if (session.data?.user) {
57
+ const _keycloak = new Keycloak(
58
+ keycloakConfig,
59
+ undefined, // no raw token
60
+ undefined,
61
+ undefined,
62
+ async (options: KeycloakLoginOptions) => {
63
+ await client.signIn.social({
64
+ provider: "keycloak" as any,
65
+ callbackURL: options.redirectUri,
66
+ });
67
+ },
68
+ async (_options: KeycloakLogoutOptions) => {
69
+ await client.signOut();
70
+ },
71
+ );
72
+ // Set minimal user info from session
73
+ _keycloak.authenticated = true;
74
+ _keycloak.email = session.data.user.email || undefined;
75
+ _keycloak.username = session.data.user.name || undefined;
76
+ _keycloak.subject = session.data.user.id;
77
+ setKeycloak(_keycloak);
78
+ } else {
79
+ setKeycloak(
80
+ new Keycloak(
81
+ keycloakConfig,
82
+ undefined,
83
+ undefined,
84
+ undefined,
85
+ async (options: KeycloakLoginOptions) => {
86
+ await client.signIn.social({
87
+ provider: "keycloak" as any,
88
+ callbackURL: options.redirectUri,
89
+ });
90
+ },
91
+ async (_options: KeycloakLogoutOptions) => {
92
+ await client.signOut();
93
+ },
94
+ ),
95
+ );
96
+ }
97
+ } catch {
98
+ setKeycloak(new Keycloak(keycloakConfig));
99
+ } finally {
100
+ setIsLoading(false);
101
+ }
102
+ })();
103
+ }, [disabled, client, keycloakConfig]);
104
+
105
+ if (disabled) return <>{children}</>;
106
+ if (isLoading || !keycloak) {
107
+ return <Loading loadingComponent={loadingComponent} />;
108
+ }
109
+ return (
110
+ <KeycloakConfigContext.Provider value={keycloakConfig}>
111
+ <KeycloakContext.Provider value={keycloak}>
112
+ <AfterAuth>{children}</AfterAuth>
113
+ </KeycloakContext.Provider>
114
+ </KeycloakConfigContext.Provider>
115
+ );
116
+ }
@@ -1,28 +1,18 @@
1
1
  /**
2
- * File: /src/provider/AuthProvider/index.tsx
2
+ * File: /src/provider/auth_provider/index.tsx
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 19-11-2024 20:26:31
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
+ * Web AuthProvider using Better Auth.
6
+ * Replaces the previous next-auth SessionProvider approach.
7
+ * For cookie-based (session) auth, Better Auth manages the session
8
+ * server-side; no client-side SessionProvider wrapper is needed.
9
+ * Patched Keycloak JS client for iframe/direct-token strategies.
20
10
  */
21
11
 
22
- import KeycloakClient from "keycloak-js";
23
- import type { KeycloakInitOptions } from "keycloak-js";
24
- import { isIframe, isWindowDefined, logger } from "multiplatform.one";
25
- import { SessionProvider } from "next-auth/react";
12
+ import KeycloakClient from "@multiplatform.one/keycloak-js";
13
+ import type { KeycloakInitOptions } from "@multiplatform.one/keycloak-js";
14
+ import { isIframe, isWindowDefined } from "@multiplatform.one/platform";
15
+ import { logger } from "@multiplatform.one/logger";
26
16
  import { useCallback, useEffect, useMemo, useState } from "react";
27
17
  import { Loading } from "../../Loading";
28
18
  import { useAuthConfig } from "../../hooks";
@@ -40,12 +30,9 @@ export function AuthProvider({
40
30
  keycloakConfig,
41
31
  keycloakInitOptions,
42
32
  loadingComponent,
43
- sessionProvider,
44
33
  }: AuthProviderProps) {
45
34
  const { debug, messageHandlerKeys, iframeSso } = useAuthConfig();
46
- const query = new URLSearchParams(
47
- isWindowDefined ? window?.location?.search || "" : "",
48
- );
35
+ const query = new URLSearchParams(isWindowDefined ? window?.location?.search || "" : "");
49
36
  const authStore = useAuthStore();
50
37
  const [keycloak, setKeycloak] = useState<Keycloak>();
51
38
  const idTokenQuery = query.get("idToken");
@@ -77,11 +64,7 @@ export function AuthProvider({
77
64
  const initialTokenQuery = useMemo(
78
65
  () =>
79
66
  validOrRefreshableToken(
80
- isIframe
81
- ? typeof tokenQuery === "string"
82
- ? tokenQuery || true
83
- : undefined
84
- : undefined,
67
+ isIframe ? (typeof tokenQuery === "string" ? tokenQuery || true : undefined) : undefined,
85
68
  initialRefreshTokenQuery,
86
69
  ),
87
70
  [tokenQuery, initialRefreshTokenQuery, iframeSso],
@@ -99,17 +82,16 @@ export function AuthProvider({
99
82
  return AuthSource.Session;
100
83
  }, [initialTokenQuery, iframeSso]);
101
84
  const authStrategy = useMemo(() => {
102
- if (authSource === AuthSource.Session) return AuthStrategy.AuthJS;
85
+ if (authSource === AuthSource.Session) return AuthStrategy.BetterAuth;
103
86
  if (authSource === AuthSource.Query) {
104
87
  return AuthStrategy.KeycloakClientImplicit;
105
88
  }
106
89
  if (!persist) return AuthStrategy.KeycloakClientStandard;
107
- if (typeof authStore === "undefined") return;
108
90
  if (authStore.token && typeof tokens.token === "string" && tokens.token) {
109
91
  return AuthStrategy.KeycloakClientImplicit;
110
92
  }
111
93
  return AuthStrategy.KeycloakClientStandard;
112
- }, [authSource, authStore?.token, tokens.token]);
94
+ }, [authSource, authStore.token, tokens.token]);
113
95
  const isLoading = useMemo(() => {
114
96
  if (!authStrategy) return true;
115
97
  if (authStrategy === AuthStrategy.KeycloakClientImplicit) {
@@ -121,16 +103,13 @@ export function AuthProvider({
121
103
  ) {
122
104
  return true;
123
105
  }
124
- if (authSource === AuthSource.Store && typeof authStore === "undefined") {
125
- return true;
126
- }
127
106
  }
128
107
  return false;
129
108
  }, [
130
109
  authSource,
131
- authStore?.idToken,
132
- authStore?.refreshToken,
133
- authStore?.token,
110
+ authStore.idToken,
111
+ authStore.refreshToken,
112
+ authStore.token,
134
113
  authStrategy,
135
114
  initialIdTokenQuery,
136
115
  initialRefreshTokenQuery,
@@ -138,13 +117,7 @@ export function AuthProvider({
138
117
  ]);
139
118
 
140
119
  useEffect(() => {
141
- if (
142
- !persist ||
143
- authStore === undefined ||
144
- tokens.idToken ||
145
- tokens.refreshToken ||
146
- tokens.token
147
- ) {
120
+ if (!persist || tokens.idToken || tokens.refreshToken || tokens.token) {
148
121
  return;
149
122
  }
150
123
  const refreshToken = validOrRefreshableToken(authStore.refreshToken);
@@ -171,9 +144,7 @@ export function AuthProvider({
171
144
  }
172
145
  if (debug) logger.debug("post message", JSON.stringify({ type: "LOADED" }));
173
146
  (messageHandlerKeys || []).forEach((key: string) => {
174
- window?.webkit?.messageHandlers?.[key]?.postMessage(
175
- JSON.stringify({ type: "LOADED" }),
176
- );
147
+ window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: "LOADED" }));
177
148
  });
178
149
  window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: "LOADED" }));
179
150
  window?.parent?.postMessage(JSON.stringify({ type: "LOADED" }));
@@ -190,7 +161,7 @@ export function AuthProvider({
190
161
  if (typeof data === "string") {
191
162
  try {
192
163
  data = JSON.parse(data);
193
- } catch (err) {}
164
+ } catch {}
194
165
  }
195
166
  if (debug) logger.debug("received message", JSON.stringify(data));
196
167
  const message: MessageSchema = data;
@@ -228,7 +199,7 @@ export function AuthProvider({
228
199
  if (typeof data === "string") {
229
200
  try {
230
201
  data = JSON.parse(data);
231
- } catch (err) {}
202
+ } catch {}
232
203
  }
233
204
  if (debug) logger.debug("received message", JSON.stringify(data));
234
205
  const message: MessageSchema = data;
@@ -266,7 +237,7 @@ export function AuthProvider({
266
237
  if (typeof data === "string") {
267
238
  try {
268
239
  data = JSON.parse(data);
269
- } catch (err) {}
240
+ } catch {}
270
241
  }
271
242
  if (debug) logger.debug("received message", JSON.stringify(data));
272
243
  const message: MessageSchema = data;
@@ -275,10 +246,7 @@ export function AuthProvider({
275
246
  if (debug) logger.debug("setting id token", message.payload);
276
247
  setTokens((tokens) => ({
277
248
  ...tokens,
278
- idToken: validOrRefreshableToken(
279
- message.payload,
280
- tokens.refreshToken,
281
- ),
249
+ idToken: validOrRefreshableToken(message.payload, tokens.refreshToken),
282
250
  }));
283
251
  window.removeEventListener("message", messageCallback);
284
252
  setListeningIdToken(false);
@@ -418,8 +386,9 @@ export function AuthProvider({
418
386
  [children, keycloak, keycloakConfig],
419
387
  );
420
388
  if (disabled) return <>{children}</>;
421
- if (authStrategy === AuthStrategy.AuthJS) {
422
- return <SessionProvider {...sessionProvider}>{render()}</SessionProvider>;
389
+ // Better Auth sessions are cookie-based; no wrapping SessionProvider needed.
390
+ if (authStrategy === AuthStrategy.BetterAuth) {
391
+ return render();
423
392
  }
424
393
  if (isLoading) return <Loading loadingComponent={loadingComponent} />;
425
394
  return render();
@@ -1,27 +1,19 @@
1
1
  /**
2
- * File: /src/provider/AuthProvider/index.electron.tsx
2
+ * File: /src/provider/auth_provider/index.webext.tsx
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 23-01-2025 16:57:16
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
5
+ * WebExt AuthProvider using Better Auth client.
6
+ * Web extensions run in a browser context Better Auth client
7
+ * works via same-origin cookies. The extension must have host
8
+ * permissions for the Better Auth server origin.
12
9
  *
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.
10
+ * Patched Keycloak JS client for direct-token scenarios (iframe, store).
20
11
  */
21
12
 
22
- import KeycloakClient from "keycloak-js";
23
- import type { KeycloakInitOptions } from "keycloak-js";
24
- import { isIframe, isWindowDefined, logger } from "multiplatform.one";
13
+ import KeycloakClient from "@multiplatform.one/keycloak-js";
14
+ import type { KeycloakInitOptions } from "@multiplatform.one/keycloak-js";
15
+ import { isIframe, isWindowDefined } from "@multiplatform.one/platform";
16
+ import { logger } from "@multiplatform.one/logger";
25
17
  import { useCallback, useEffect, useMemo, useState } from "react";
26
18
  import { Loading } from "../../Loading";
27
19
  import { useAuthConfig } from "../../hooks";
@@ -41,9 +33,7 @@ export function AuthProvider({
41
33
  loadingComponent,
42
34
  }: AuthProviderProps) {
43
35
  const { debug, messageHandlerKeys, iframeSso } = useAuthConfig();
44
- const query = new URLSearchParams(
45
- isWindowDefined ? window?.location?.search || "" : "",
46
- );
36
+ const query = new URLSearchParams(isWindowDefined ? window?.location?.search || "" : "");
47
37
  const authStore = useAuthStore();
48
38
  const [keycloak, setKeycloak] = useState<Keycloak>();
49
39
  const idTokenQuery = query.get("idToken");
@@ -57,9 +47,9 @@ export function AuthProvider({
57
47
  () =>
58
48
  validOrRefreshableToken(
59
49
  ((!iframeSso && isIframe) ||
60
- (typeof refreshTokenQuery === "string"
61
- ? refreshTokenQuery || true
62
- : undefined)) as string | boolean,
50
+ (typeof refreshTokenQuery === "string" ? refreshTokenQuery || true : undefined)) as
51
+ | string
52
+ | boolean,
63
53
  ),
64
54
  [refreshTokenQuery, iframeSso],
65
55
  );
@@ -67,9 +57,9 @@ export function AuthProvider({
67
57
  () =>
68
58
  validOrRefreshableToken(
69
59
  ((!iframeSso && isIframe) ||
70
- (typeof idTokenQuery === "string"
71
- ? idTokenQuery || true
72
- : undefined)) as string | boolean,
60
+ (typeof idTokenQuery === "string" ? idTokenQuery || true : undefined)) as
61
+ | string
62
+ | boolean,
73
63
  initialRefreshTokenQuery,
74
64
  ),
75
65
  [idTokenQuery, initialRefreshTokenQuery, iframeSso],
@@ -78,9 +68,7 @@ export function AuthProvider({
78
68
  () =>
79
69
  validOrRefreshableToken(
80
70
  ((!iframeSso && isIframe) ||
81
- (typeof tokenQuery === "string" ? tokenQuery || true : undefined)) as
82
- | string
83
- | boolean,
71
+ (typeof tokenQuery === "string" ? tokenQuery || true : undefined)) as string | boolean,
84
72
  initialRefreshTokenQuery,
85
73
  ),
86
74
  [tokenQuery, initialRefreshTokenQuery, iframeSso],
@@ -92,20 +80,22 @@ export function AuthProvider({
92
80
  });
93
81
  const authSource = useMemo(() => {
94
82
  if (!iframeSso && isIframe && initialTokenQuery) return AuthSource.Query;
95
- return AuthSource.Store;
83
+ if (!iframeSso && isIframe) return AuthSource.Store;
84
+ return AuthSource.Session;
96
85
  }, [initialTokenQuery, iframeSso]);
97
86
  const authStrategy = useMemo(() => {
87
+ // WebExt: prefer Better Auth for session-based auth (cookie flow)
88
+ if (authSource === AuthSource.Session) return AuthStrategy.BetterAuth;
98
89
  if (authSource === AuthSource.Query) {
99
90
  return AuthStrategy.KeycloakClientImplicit;
100
91
  }
101
92
  if (!persist) return AuthStrategy.KeycloakClientStandard;
102
- if (typeof authStore === "undefined") return;
103
93
  if (authStore.token) {
104
94
  if (typeof tokens.token === "undefined") return;
105
95
  if (tokens.token) return AuthStrategy.KeycloakClientImplicit;
106
96
  }
107
97
  return AuthStrategy.KeycloakClientStandard;
108
- }, [authSource, authStore?.token, tokens.token]);
98
+ }, [authSource, authStore.token, tokens.token]);
109
99
  const isLoading = useMemo(() => {
110
100
  if (!authStrategy) return true;
111
101
  if (authStrategy === AuthStrategy.KeycloakClientImplicit) {
@@ -117,16 +107,13 @@ export function AuthProvider({
117
107
  ) {
118
108
  return true;
119
109
  }
120
- if (authSource === AuthSource.Store && typeof authStore === "undefined") {
121
- return true;
122
- }
123
110
  }
124
111
  return false;
125
112
  }, [
126
113
  authSource,
127
- authStore?.idToken,
128
- authStore?.refreshToken,
129
- authStore?.token,
114
+ authStore.idToken,
115
+ authStore.refreshToken,
116
+ authStore.token,
130
117
  authStrategy,
131
118
  initialIdTokenQuery,
132
119
  initialRefreshTokenQuery,
@@ -134,13 +121,7 @@ export function AuthProvider({
134
121
  ]);
135
122
 
136
123
  useEffect(() => {
137
- if (
138
- !persist ||
139
- authStore === undefined ||
140
- tokens.idToken ||
141
- tokens.refreshToken ||
142
- tokens.token
143
- ) {
124
+ if (!persist || tokens.idToken || tokens.refreshToken || tokens.token) {
144
125
  return;
145
126
  }
146
127
  const refreshToken = validOrRefreshableToken(authStore.refreshToken);
@@ -148,9 +129,9 @@ export function AuthProvider({
148
129
  const token = validOrRefreshableToken(authStore.token, refreshToken);
149
130
  if (!idToken && !refreshToken && !token) return;
150
131
  setTokens({
151
- idToken: idToken,
152
- refreshToken: refreshToken,
153
- token: token,
132
+ idToken,
133
+ refreshToken,
134
+ token,
154
135
  });
155
136
  }, [authStore, persist]);
156
137
 
@@ -167,9 +148,7 @@ export function AuthProvider({
167
148
  }
168
149
  if (debug) logger.debug("post message", JSON.stringify({ type: "LOADED" }));
169
150
  (messageHandlerKeys || []).forEach((key: string) => {
170
- window?.webkit?.messageHandlers?.[key]?.postMessage(
171
- JSON.stringify({ type: "LOADED" }),
172
- );
151
+ window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: "LOADED" }));
173
152
  });
174
153
  window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: "LOADED" }));
175
154
  window?.parent?.postMessage(JSON.stringify({ type: "LOADED" }));
@@ -186,7 +165,7 @@ export function AuthProvider({
186
165
  if (typeof data === "string") {
187
166
  try {
188
167
  data = JSON.parse(data);
189
- } catch (err) {}
168
+ } catch {}
190
169
  }
191
170
  if (debug) logger.debug("received message", JSON.stringify(data));
192
171
  const message: MessageSchema = data;
@@ -201,15 +180,6 @@ export function AuthProvider({
201
180
  setListeningRefreshToken(false);
202
181
  }
203
182
  }
204
- if (debug) {
205
- logger.debug(
206
- "listening for message",
207
- JSON.stringify({
208
- type: "REFRESH_TOKEN",
209
- payload: "<some_refresh_token>",
210
- }),
211
- );
212
- }
213
183
  window.addEventListener("message", messageCallback);
214
184
  return () => {
215
185
  window.removeEventListener("message", messageCallback);
@@ -224,7 +194,7 @@ export function AuthProvider({
224
194
  if (typeof data === "string") {
225
195
  try {
226
196
  data = JSON.parse(data);
227
- } catch (err) {}
197
+ } catch {}
228
198
  }
229
199
  if (debug) logger.debug("received message", JSON.stringify(data));
230
200
  const message: MessageSchema = data;
@@ -239,15 +209,6 @@ export function AuthProvider({
239
209
  setListeningToken(false);
240
210
  }
241
211
  }
242
- if (debug) {
243
- logger.debug(
244
- "listening for message",
245
- JSON.stringify({
246
- type: "TOKEN",
247
- payload: "<some_token>",
248
- }),
249
- );
250
- }
251
212
  window.addEventListener("message", messageCallback);
252
213
  return () => {
253
214
  window.removeEventListener("message", messageCallback);
@@ -262,7 +223,7 @@ export function AuthProvider({
262
223
  if (typeof data === "string") {
263
224
  try {
264
225
  data = JSON.parse(data);
265
- } catch (err) {}
226
+ } catch {}
266
227
  }
267
228
  if (debug) logger.debug("received message", JSON.stringify(data));
268
229
  const message: MessageSchema = data;
@@ -271,24 +232,12 @@ export function AuthProvider({
271
232
  if (debug) logger.debug("setting id token", message.payload);
272
233
  setTokens((tokens) => ({
273
234
  ...tokens,
274
- idToken: validOrRefreshableToken(
275
- message.payload,
276
- tokens.refreshToken,
277
- ),
235
+ idToken: validOrRefreshableToken(message.payload, tokens.refreshToken),
278
236
  }));
279
237
  window.removeEventListener("message", messageCallback);
280
238
  setListeningIdToken(false);
281
239
  }
282
240
  }
283
- if (debug) {
284
- logger.debug(
285
- "listening for message",
286
- JSON.stringify({
287
- type: "ID_TOKEN",
288
- payload: "<some_id_token>",
289
- }),
290
- );
291
- }
292
241
  window.addEventListener("message", messageCallback);
293
242
  return () => {
294
243
  window.removeEventListener("message", messageCallback);
@@ -414,6 +363,7 @@ export function AuthProvider({
414
363
  [children, keycloak, keycloakConfig],
415
364
  );
416
365
  if (disabled) return <>{children}</>;
366
+ if (authStrategy === AuthStrategy.BetterAuth) return render();
417
367
  if (isLoading) return <Loading loadingComponent={loadingComponent} />;
418
368
  return render();
419
369
  }
@@ -1,26 +1,12 @@
1
1
  /**
2
- * File: /src/provider/AuthProvider/shared.ts
2
+ * File: /src/provider/auth_provider/shared.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 23-12-2024 19:30:25
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
+ * Shared types and constants for AuthProvider.
6
+ * No longer depends on next-auth.
20
7
  */
21
8
 
22
- import type { KeycloakInitOptions } from "keycloak-js";
23
- import type { SessionProviderProps } from "next-auth/react";
9
+ import type { KeycloakInitOptions } from "@multiplatform.one/keycloak-js";
24
10
  import type { ComponentType, PropsWithChildren } from "react";
25
11
  import type { KeycloakConfig } from "../../keycloak/index";
26
12
 
@@ -42,7 +28,6 @@ export interface AuthProviderProps extends PropsWithChildren {
42
28
  keycloakConfig: KeycloakConfig;
43
29
  keycloakInitOptions?: KeycloakInitOptions;
44
30
  loadingComponent?: ComponentType;
45
- sessionProvider?: Omit<SessionProviderProps, "children">;
46
31
  }
47
32
 
48
33
  export interface Tokens<B = boolean> {
@@ -52,7 +37,7 @@ export interface Tokens<B = boolean> {
52
37
  }
53
38
 
54
39
  export enum AuthStrategy {
55
- AuthJS = "authjs",
40
+ BetterAuth = "better-auth",
56
41
  ExpoAuth = "expo-auth",
57
42
  KeycloakClientImplicit = "keycloak-client-implicit",
58
43
  KeycloakClientStandard = "keycloak-client-standard",
@@ -1,24 +1,3 @@
1
- /**
2
- * File: /src/provider/index.ts
3
- * Project: @multiplatform.one/keycloak
4
- * File Created: 19-11-2024 20:26:31
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
  export * from "./AfterAuth";
23
- export * from "./AuthProvider";
2
+ export * from "./authProvider";
24
3
  export * from "./KeycloakProvider";
@@ -1,33 +1,21 @@
1
- /*
1
+ /**
2
2
  * File: /src/session/index.native.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 04-04-2024 15:50:39
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 session hook for React Native / Expo.
6
+ * Uses the Expo auth client when available, otherwise returns empty session.
20
7
  */
21
8
 
22
- import type { UseSessionOptions } from "next-auth/react";
23
9
  import type { SessionContextValue } from "./index";
24
10
 
25
11
  export async function getSession() {
26
12
  return null;
27
13
  }
28
14
 
29
- export function useSession<R extends boolean>(
30
- _options?: UseSessionOptions<R>,
15
+ export function useSession<R extends boolean = false>(
16
+ _options?: Record<string, unknown>,
31
17
  ): SessionContextValue<R> {
32
- return {};
18
+ // On native, session is managed by AuthProvider (Expo auth client).
19
+ // Components consuming useSession outside AuthProvider get empty state.
20
+ return { session: null, status: "unauthenticated" };
33
21
  }