@multiplatform.one/keycloak 2.0.10 → 2.0.11

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 (429) hide show
  1. package/dist/cjs/Authenticated.cjs +1 -1
  2. package/dist/cjs/Authenticated.js +54 -0
  3. package/dist/cjs/Authenticated.js.map +6 -0
  4. package/dist/cjs/Authenticated.native.js +2 -2
  5. package/dist/cjs/Authenticated.native.js.map +3 -3
  6. package/dist/cjs/Loading.js +25 -0
  7. package/dist/cjs/Loading.native.js.map +1 -1
  8. package/dist/cjs/authConfig.js +23 -0
  9. package/dist/cjs/authConfig.native.js.map +1 -1
  10. package/dist/cjs/hooks/index.js +17 -0
  11. package/dist/cjs/hooks/{index.cjs.map → index.js.map} +1 -1
  12. package/dist/cjs/hooks/index.native.js +2 -2
  13. package/dist/cjs/hooks/index.native.js.map +2 -2
  14. package/dist/cjs/hooks/useAuthConfig.js +24 -0
  15. package/dist/cjs/hooks/useAuthConfig.native.js.map +1 -1
  16. package/dist/cjs/hooks/useTokensFromQuery/index.cjs +8 -2
  17. package/dist/cjs/hooks/useTokensFromQuery/index.js +29 -0
  18. package/dist/cjs/hooks/useTokensFromQuery/index.js.map +6 -0
  19. package/dist/cjs/hooks/useTokensFromQuery/index.native.js.map +1 -1
  20. package/dist/cjs/hooks/useTokensFromState.js +26 -0
  21. package/dist/cjs/hooks/useTokensFromState.native.js.map +1 -1
  22. package/dist/cjs/index.cjs +9 -9
  23. package/dist/cjs/index.js +21 -0
  24. package/dist/cjs/index.js.map +6 -0
  25. package/dist/cjs/index.native.js +11 -11
  26. package/dist/cjs/index.native.js.map +2 -2
  27. package/dist/cjs/keycloak/base.cjs +90 -0
  28. package/dist/cjs/keycloak/base.js +90 -0
  29. package/dist/cjs/keycloak/base.js.map +6 -0
  30. package/dist/cjs/keycloak/base.native.js +135 -0
  31. package/dist/cjs/keycloak/base.native.js.map +6 -0
  32. package/dist/cjs/{session/session.native.js → keycloak/config.js} +10 -17
  33. package/dist/cjs/keycloak/config.native.js.map +1 -1
  34. package/dist/cjs/keycloak/context.js +22 -0
  35. package/dist/cjs/keycloak/context.native.js.map +1 -1
  36. package/dist/cjs/keycloak/index.cjs +114 -2
  37. package/dist/cjs/{hooks/useTokensFromQuery/index.native.cjs → keycloak/index.electron.cjs} +10 -6
  38. package/dist/cjs/keycloak/index.electron.js +25 -0
  39. package/dist/cjs/keycloak/index.electron.js.map +6 -0
  40. package/dist/cjs/keycloak/index.electron.native.js +88 -0
  41. package/dist/cjs/keycloak/index.electron.native.js.map +6 -0
  42. package/dist/cjs/keycloak/index.js +100 -0
  43. package/dist/cjs/keycloak/index.js.map +6 -0
  44. package/dist/cjs/keycloak/index.native.js +86 -8
  45. package/dist/cjs/keycloak/index.native.js.map +3 -3
  46. package/dist/cjs/one.cjs +0 -1
  47. package/dist/cjs/one.js +119 -0
  48. package/dist/cjs/one.js.map +6 -0
  49. package/dist/cjs/one.native.js +0 -1
  50. package/dist/cjs/one.native.js.map +3 -3
  51. package/dist/cjs/provider/AfterAuth.cjs +13 -11
  52. package/dist/cjs/provider/AfterAuth.js +44 -0
  53. package/dist/cjs/provider/AfterAuth.js.map +6 -0
  54. package/dist/cjs/provider/AfterAuth.native.js +16 -5
  55. package/dist/cjs/provider/AfterAuth.native.js.map +3 -3
  56. package/dist/cjs/provider/AuthProvider/index.cjs +213 -8
  57. package/dist/cjs/provider/AuthProvider/index.electron.cjs +223 -0
  58. package/dist/cjs/provider/AuthProvider/index.electron.js +243 -0
  59. package/dist/cjs/provider/AuthProvider/index.electron.js.map +6 -0
  60. package/dist/cjs/provider/AuthProvider/index.electron.native.js +300 -0
  61. package/dist/cjs/provider/AuthProvider/index.electron.native.js.map +6 -0
  62. package/dist/cjs/provider/AuthProvider/index.js +240 -0
  63. package/dist/cjs/provider/AuthProvider/index.js.map +6 -0
  64. package/dist/cjs/provider/AuthProvider/index.native.js +184 -7
  65. package/dist/cjs/provider/AuthProvider/index.native.js.map +3 -3
  66. package/dist/cjs/provider/AuthProvider/shared.cjs +36 -0
  67. package/dist/cjs/provider/AuthProvider/shared.js +30 -0
  68. package/dist/cjs/provider/AuthProvider/shared.js.map +6 -0
  69. package/dist/cjs/provider/AuthProvider/shared.native.js +40 -0
  70. package/dist/cjs/provider/AuthProvider/shared.native.js.map +6 -0
  71. package/dist/cjs/provider/KeycloakProvider.cjs +5 -4
  72. package/dist/cjs/provider/KeycloakProvider.js +50 -0
  73. package/dist/cjs/provider/KeycloakProvider.js.map +6 -0
  74. package/dist/cjs/provider/KeycloakProvider.native.js +5 -4
  75. package/dist/cjs/provider/KeycloakProvider.native.js.map +3 -3
  76. package/dist/cjs/provider/index.js +17 -0
  77. package/dist/cjs/provider/index.native.js.map +1 -1
  78. package/dist/cjs/session/index.cjs +22 -4
  79. package/dist/cjs/session/index.js +30 -0
  80. package/dist/cjs/session/index.js.map +6 -0
  81. package/dist/cjs/session/index.native.js +20 -7
  82. package/dist/cjs/session/index.native.js.map +3 -3
  83. package/dist/cjs/state.cjs +1 -1
  84. package/dist/cjs/state.js +31 -0
  85. package/dist/cjs/state.js.map +6 -0
  86. package/dist/cjs/state.native.js +1 -1
  87. package/dist/cjs/state.native.js.map +3 -3
  88. package/dist/cjs/token.js +30 -0
  89. package/dist/cjs/token.native.js.map +1 -1
  90. package/dist/cjs/types.js +14 -0
  91. package/dist/cjs/types.native.js.map +1 -1
  92. package/dist/esm/Authenticated.js +3 -3
  93. package/dist/esm/Authenticated.js.map +1 -1
  94. package/dist/esm/Authenticated.mjs +3 -3
  95. package/dist/esm/Authenticated.mjs.map +1 -1
  96. package/dist/esm/Authenticated.native.js +3 -3
  97. package/dist/esm/Authenticated.native.js.map +3 -3
  98. package/dist/esm/Loading.native.js.map +1 -1
  99. package/dist/esm/authConfig.native.js.map +1 -1
  100. package/dist/esm/hooks/index.js +1 -1
  101. package/dist/esm/hooks/index.mjs +1 -1
  102. package/dist/esm/hooks/index.native.js +1 -1
  103. package/dist/esm/hooks/index.native.js.map +1 -1
  104. package/dist/esm/hooks/useAuthConfig.native.js.map +1 -1
  105. package/dist/esm/hooks/useTokensFromQuery/index.js +7 -3
  106. package/dist/esm/hooks/useTokensFromQuery/index.js.map +1 -1
  107. package/dist/esm/hooks/useTokensFromQuery/index.mjs +8 -2
  108. package/dist/esm/hooks/useTokensFromQuery/index.mjs.map +1 -1
  109. package/dist/esm/hooks/useTokensFromQuery/index.native.js.map +1 -1
  110. package/dist/esm/hooks/useTokensFromState.native.js.map +1 -1
  111. package/dist/esm/index.js +2 -2
  112. package/dist/esm/index.mjs +2 -2
  113. package/dist/esm/index.native.js +2 -2
  114. package/dist/esm/index.native.js.map +1 -1
  115. package/dist/esm/keycloak/base.js +77 -0
  116. package/dist/esm/keycloak/base.js.map +6 -0
  117. package/dist/esm/keycloak/base.mjs +66 -0
  118. package/dist/esm/keycloak/base.mjs.map +1 -0
  119. package/dist/esm/keycloak/base.native.js +116 -0
  120. package/dist/esm/keycloak/base.native.js.map +6 -0
  121. package/dist/esm/keycloak/config.native.js.map +1 -1
  122. package/dist/esm/keycloak/context.native.js.map +1 -1
  123. package/dist/esm/keycloak/index.electron.js +9 -0
  124. package/dist/esm/keycloak/index.electron.js.map +6 -0
  125. package/dist/esm/keycloak/index.electron.mjs +6 -0
  126. package/dist/esm/keycloak/index.electron.mjs.map +1 -0
  127. package/dist/esm/keycloak/index.electron.native.js +65 -0
  128. package/dist/esm/keycloak/index.electron.native.js.map +6 -0
  129. package/dist/esm/keycloak/index.js +96 -1
  130. package/dist/esm/keycloak/index.js.map +1 -1
  131. package/dist/esm/keycloak/index.mjs +103 -1
  132. package/dist/esm/keycloak/index.mjs.map +1 -1
  133. package/dist/esm/keycloak/index.native.js +80 -2
  134. package/dist/esm/keycloak/index.native.js.map +3 -3
  135. package/dist/esm/one.js +0 -1
  136. package/dist/esm/one.js.map +1 -1
  137. package/dist/esm/one.mjs +0 -1
  138. package/dist/esm/one.mjs.map +1 -1
  139. package/dist/esm/one.native.js +0 -1
  140. package/dist/esm/one.native.js.map +3 -3
  141. package/dist/esm/provider/AfterAuth.js +10 -6
  142. package/dist/esm/provider/AfterAuth.js.map +1 -1
  143. package/dist/esm/provider/AfterAuth.mjs +9 -7
  144. package/dist/esm/provider/AfterAuth.mjs.map +1 -1
  145. package/dist/esm/provider/AfterAuth.native.js +13 -2
  146. package/dist/esm/provider/AfterAuth.native.js.map +3 -3
  147. package/dist/esm/provider/AuthProvider/index.electron.js +230 -0
  148. package/dist/esm/provider/AuthProvider/index.electron.js.map +6 -0
  149. package/dist/esm/provider/AuthProvider/index.electron.mjs +189 -0
  150. package/dist/esm/provider/AuthProvider/index.electron.mjs.map +1 -0
  151. package/dist/esm/provider/AuthProvider/index.electron.native.js +282 -0
  152. package/dist/esm/provider/AuthProvider/index.electron.native.js.map +6 -0
  153. package/dist/esm/provider/AuthProvider/index.js +227 -1
  154. package/dist/esm/provider/AuthProvider/index.js.map +3 -3
  155. package/dist/esm/provider/AuthProvider/index.mjs +188 -1
  156. package/dist/esm/provider/AuthProvider/index.mjs.map +1 -1
  157. package/dist/esm/provider/AuthProvider/index.native.js +185 -2
  158. package/dist/esm/provider/AuthProvider/index.native.js.map +3 -3
  159. package/dist/esm/provider/AuthProvider/shared.js +14 -0
  160. package/dist/esm/provider/AuthProvider/shared.js.map +6 -0
  161. package/dist/esm/provider/AuthProvider/shared.mjs +11 -0
  162. package/dist/esm/provider/AuthProvider/shared.mjs.map +1 -0
  163. package/dist/esm/provider/AuthProvider/shared.native.js +17 -0
  164. package/dist/esm/provider/AuthProvider/shared.native.js.map +6 -0
  165. package/dist/esm/provider/KeycloakProvider.js +6 -4
  166. package/dist/esm/provider/KeycloakProvider.js.map +1 -1
  167. package/dist/esm/provider/KeycloakProvider.mjs +6 -5
  168. package/dist/esm/provider/KeycloakProvider.mjs.map +1 -1
  169. package/dist/esm/provider/KeycloakProvider.native.js +6 -5
  170. package/dist/esm/provider/KeycloakProvider.native.js.map +3 -3
  171. package/dist/esm/provider/index.native.js.map +1 -1
  172. package/dist/esm/session/index.js +14 -1
  173. package/dist/esm/session/index.js.map +1 -1
  174. package/dist/esm/session/index.mjs +12 -1
  175. package/dist/esm/session/index.mjs.map +1 -1
  176. package/dist/esm/session/index.native.js +11 -2
  177. package/dist/esm/session/index.native.js.map +3 -3
  178. package/dist/esm/state.js +2 -2
  179. package/dist/esm/state.js.map +1 -1
  180. package/dist/esm/state.mjs +2 -2
  181. package/dist/esm/state.mjs.map +1 -1
  182. package/dist/esm/state.native.js +2 -2
  183. package/dist/esm/state.native.js.map +3 -3
  184. package/dist/esm/token.native.js.map +1 -1
  185. package/dist/jsx/Authenticated.js +3 -3
  186. package/dist/jsx/Authenticated.js.map +1 -1
  187. package/dist/jsx/Authenticated.mjs +3 -3
  188. package/dist/jsx/Authenticated.mjs.map +1 -1
  189. package/dist/jsx/Authenticated.native.js +3 -3
  190. package/dist/jsx/Authenticated.native.js.map +3 -3
  191. package/dist/jsx/Loading.native.js.map +1 -1
  192. package/dist/jsx/authConfig.native.js.map +1 -1
  193. package/dist/jsx/hooks/index.js +1 -1
  194. package/dist/jsx/hooks/index.mjs +1 -1
  195. package/dist/jsx/hooks/index.native.js +1 -1
  196. package/dist/jsx/hooks/index.native.js.map +1 -1
  197. package/dist/jsx/hooks/useAuthConfig.native.js.map +1 -1
  198. package/dist/jsx/hooks/useTokensFromQuery/index.js +7 -3
  199. package/dist/jsx/hooks/useTokensFromQuery/index.js.map +1 -1
  200. package/dist/jsx/hooks/useTokensFromQuery/index.mjs +8 -2
  201. package/dist/jsx/hooks/useTokensFromQuery/index.mjs.map +1 -1
  202. package/dist/jsx/hooks/useTokensFromQuery/index.native.js.map +1 -1
  203. package/dist/jsx/hooks/useTokensFromState.native.js.map +1 -1
  204. package/dist/jsx/index.js +2 -2
  205. package/dist/jsx/index.mjs +2 -2
  206. package/dist/jsx/index.native.js +2 -2
  207. package/dist/jsx/index.native.js.map +1 -1
  208. package/dist/jsx/keycloak/base.js +77 -0
  209. package/dist/jsx/keycloak/base.js.map +6 -0
  210. package/dist/jsx/keycloak/base.mjs +66 -0
  211. package/dist/jsx/keycloak/base.mjs.map +1 -0
  212. package/dist/jsx/keycloak/base.native.js +116 -0
  213. package/dist/jsx/keycloak/base.native.js.map +6 -0
  214. package/dist/jsx/keycloak/config.native.js.map +1 -1
  215. package/dist/jsx/keycloak/context.native.js.map +1 -1
  216. package/dist/jsx/keycloak/index.electron.js +9 -0
  217. package/dist/jsx/keycloak/index.electron.js.map +6 -0
  218. package/dist/jsx/keycloak/index.electron.mjs +6 -0
  219. package/dist/jsx/keycloak/index.electron.mjs.map +1 -0
  220. package/dist/jsx/keycloak/index.electron.native.js +65 -0
  221. package/dist/jsx/keycloak/index.electron.native.js.map +6 -0
  222. package/dist/jsx/keycloak/index.js +96 -1
  223. package/dist/jsx/keycloak/index.js.map +1 -1
  224. package/dist/jsx/keycloak/index.mjs +103 -1
  225. package/dist/jsx/keycloak/index.mjs.map +1 -1
  226. package/dist/jsx/keycloak/index.native.js +80 -2
  227. package/dist/jsx/keycloak/index.native.js.map +3 -3
  228. package/dist/jsx/one.js +0 -1
  229. package/dist/jsx/one.js.map +1 -1
  230. package/dist/jsx/one.mjs +0 -1
  231. package/dist/jsx/one.mjs.map +1 -1
  232. package/dist/jsx/one.native.js +0 -1
  233. package/dist/jsx/one.native.js.map +3 -3
  234. package/dist/jsx/provider/AfterAuth.js +10 -6
  235. package/dist/jsx/provider/AfterAuth.js.map +1 -1
  236. package/dist/jsx/provider/AfterAuth.mjs +9 -7
  237. package/dist/jsx/provider/AfterAuth.mjs.map +1 -1
  238. package/dist/jsx/provider/AfterAuth.native.js +13 -2
  239. package/dist/jsx/provider/AfterAuth.native.js.map +3 -3
  240. package/dist/jsx/provider/AuthProvider/index.electron.js +230 -0
  241. package/dist/jsx/provider/AuthProvider/index.electron.js.map +6 -0
  242. package/dist/jsx/provider/AuthProvider/index.electron.mjs +189 -0
  243. package/dist/jsx/provider/AuthProvider/index.electron.mjs.map +1 -0
  244. package/dist/jsx/provider/AuthProvider/index.electron.native.js +282 -0
  245. package/dist/jsx/provider/AuthProvider/index.electron.native.js.map +6 -0
  246. package/dist/jsx/provider/AuthProvider/index.js +227 -1
  247. package/dist/jsx/provider/AuthProvider/index.js.map +3 -3
  248. package/dist/jsx/provider/AuthProvider/index.mjs +188 -1
  249. package/dist/jsx/provider/AuthProvider/index.mjs.map +1 -1
  250. package/dist/jsx/provider/AuthProvider/index.native.js +185 -2
  251. package/dist/jsx/provider/AuthProvider/index.native.js.map +3 -3
  252. package/dist/jsx/provider/AuthProvider/shared.js +14 -0
  253. package/dist/jsx/provider/AuthProvider/shared.js.map +6 -0
  254. package/dist/jsx/provider/AuthProvider/shared.mjs +11 -0
  255. package/dist/jsx/provider/AuthProvider/shared.mjs.map +1 -0
  256. package/dist/jsx/provider/AuthProvider/shared.native.js +17 -0
  257. package/dist/jsx/provider/AuthProvider/shared.native.js.map +6 -0
  258. package/dist/jsx/provider/KeycloakProvider.js +6 -4
  259. package/dist/jsx/provider/KeycloakProvider.js.map +1 -1
  260. package/dist/jsx/provider/KeycloakProvider.mjs +6 -5
  261. package/dist/jsx/provider/KeycloakProvider.mjs.map +1 -1
  262. package/dist/jsx/provider/KeycloakProvider.native.js +6 -5
  263. package/dist/jsx/provider/KeycloakProvider.native.js.map +3 -3
  264. package/dist/jsx/provider/index.native.js.map +1 -1
  265. package/dist/jsx/session/index.js +14 -1
  266. package/dist/jsx/session/index.js.map +1 -1
  267. package/dist/jsx/session/index.mjs +12 -1
  268. package/dist/jsx/session/index.mjs.map +1 -1
  269. package/dist/jsx/session/index.native.js +11 -2
  270. package/dist/jsx/session/index.native.js.map +3 -3
  271. package/dist/jsx/state.js +2 -2
  272. package/dist/jsx/state.js.map +1 -1
  273. package/dist/jsx/state.mjs +2 -2
  274. package/dist/jsx/state.mjs.map +1 -1
  275. package/dist/jsx/state.native.js +2 -2
  276. package/dist/jsx/state.native.js.map +3 -3
  277. package/dist/jsx/token.native.js.map +1 -1
  278. package/package.json +23 -16
  279. package/src/Authenticated.tsx +6 -7
  280. package/src/authConfig.ts +1 -0
  281. package/src/hooks/index.ts +3 -3
  282. package/src/hooks/useTokensFromQuery/index.ts +8 -6
  283. package/src/index.ts +4 -4
  284. package/src/keycloak/base.ts +213 -0
  285. package/src/keycloak/context.ts +1 -1
  286. package/src/{provider/AuthProvider/index.ts → keycloak/index.electron.ts} +9 -4
  287. package/src/keycloak/index.native.ts +46 -0
  288. package/src/keycloak/index.ts +149 -2
  289. package/src/one.ts +3 -6
  290. package/src/provider/AfterAuth.tsx +22 -11
  291. package/src/provider/AuthProvider/index.electron.tsx +410 -0
  292. package/src/provider/AuthProvider/{AuthProvider.native.tsx → index.native.tsx} +86 -31
  293. package/src/provider/AuthProvider/{AuthProvider.tsx → index.tsx} +181 -129
  294. package/src/provider/AuthProvider/shared.ts +65 -0
  295. package/src/provider/KeycloakProvider.tsx +14 -17
  296. package/src/provider/index.ts +2 -2
  297. package/src/session/{session.native.ts → index.native.ts} +2 -2
  298. package/src/session/index.ts +40 -2
  299. package/src/state.ts +3 -5
  300. package/dist/cjs/Authenticated.cjs.map +0 -6
  301. package/dist/cjs/hooks/useTokensFromQuery/index.cjs.map +0 -6
  302. package/dist/cjs/hooks/useTokensFromQuery/index.native.cjs.map +0 -6
  303. package/dist/cjs/index.cjs.map +0 -6
  304. package/dist/cjs/keycloak/index.cjs.map +0 -6
  305. package/dist/cjs/keycloak/keycloak.cjs +0 -187
  306. package/dist/cjs/keycloak/keycloak.cjs.map +0 -6
  307. package/dist/cjs/keycloak/keycloak.native.cjs +0 -109
  308. package/dist/cjs/keycloak/keycloak.native.cjs.map +0 -6
  309. package/dist/cjs/keycloak/keycloak.native.js +0 -186
  310. package/dist/cjs/keycloak/keycloak.native.js.map +0 -6
  311. package/dist/cjs/one.cjs.map +0 -6
  312. package/dist/cjs/provider/AfterAuth.cjs.map +0 -6
  313. package/dist/cjs/provider/AuthProvider/AuthProvider.cjs +0 -204
  314. package/dist/cjs/provider/AuthProvider/AuthProvider.cjs.map +0 -6
  315. package/dist/cjs/provider/AuthProvider/AuthProvider.native.cjs +0 -140
  316. package/dist/cjs/provider/AuthProvider/AuthProvider.native.cjs.map +0 -6
  317. package/dist/cjs/provider/AuthProvider/AuthProvider.native.js +0 -161
  318. package/dist/cjs/provider/AuthProvider/AuthProvider.native.js.map +0 -6
  319. package/dist/cjs/provider/AuthProvider/index.cjs.map +0 -6
  320. package/dist/cjs/provider/KeycloakProvider.cjs.map +0 -6
  321. package/dist/cjs/session/index.cjs.map +0 -6
  322. package/dist/cjs/session/session.cjs +0 -36
  323. package/dist/cjs/session/session.cjs.map +0 -6
  324. package/dist/cjs/session/session.native.cjs +0 -32
  325. package/dist/cjs/session/session.native.cjs.map +0 -6
  326. package/dist/cjs/session/session.native.js.map +0 -6
  327. package/dist/cjs/state.cjs.map +0 -6
  328. package/dist/esm/keycloak/keycloak.js +0 -159
  329. package/dist/esm/keycloak/keycloak.js.map +0 -6
  330. package/dist/esm/keycloak/keycloak.mjs +0 -162
  331. package/dist/esm/keycloak/keycloak.mjs.map +0 -1
  332. package/dist/esm/keycloak/keycloak.native.js +0 -168
  333. package/dist/esm/keycloak/keycloak.native.js.map +0 -6
  334. package/dist/esm/provider/AuthProvider/AuthProvider.js +0 -197
  335. package/dist/esm/provider/AuthProvider/AuthProvider.js.map +0 -6
  336. package/dist/esm/provider/AuthProvider/AuthProvider.mjs +0 -170
  337. package/dist/esm/provider/AuthProvider/AuthProvider.mjs.map +0 -1
  338. package/dist/esm/provider/AuthProvider/AuthProvider.native.js +0 -149
  339. package/dist/esm/provider/AuthProvider/AuthProvider.native.js.map +0 -6
  340. package/dist/esm/session/session.js +0 -15
  341. package/dist/esm/session/session.js.map +0 -6
  342. package/dist/esm/session/session.mjs +0 -13
  343. package/dist/esm/session/session.mjs.map +0 -1
  344. package/dist/esm/session/session.native.js +0 -11
  345. package/dist/esm/session/session.native.js.map +0 -6
  346. package/dist/jsx/keycloak/keycloak.js +0 -159
  347. package/dist/jsx/keycloak/keycloak.js.map +0 -6
  348. package/dist/jsx/keycloak/keycloak.mjs +0 -162
  349. package/dist/jsx/keycloak/keycloak.mjs.map +0 -1
  350. package/dist/jsx/keycloak/keycloak.native.js +0 -168
  351. package/dist/jsx/keycloak/keycloak.native.js.map +0 -6
  352. package/dist/jsx/provider/AuthProvider/AuthProvider.js +0 -197
  353. package/dist/jsx/provider/AuthProvider/AuthProvider.js.map +0 -6
  354. package/dist/jsx/provider/AuthProvider/AuthProvider.mjs +0 -170
  355. package/dist/jsx/provider/AuthProvider/AuthProvider.mjs.map +0 -1
  356. package/dist/jsx/provider/AuthProvider/AuthProvider.native.js +0 -149
  357. package/dist/jsx/provider/AuthProvider/AuthProvider.native.js.map +0 -6
  358. package/dist/jsx/session/session.js +0 -15
  359. package/dist/jsx/session/session.js.map +0 -6
  360. package/dist/jsx/session/session.mjs +0 -13
  361. package/dist/jsx/session/session.mjs.map +0 -1
  362. package/dist/jsx/session/session.native.js +0 -11
  363. package/dist/jsx/session/session.native.js.map +0 -6
  364. package/src/keycloak/keycloak.native.ts +0 -190
  365. package/src/keycloak/keycloak.ts +0 -290
  366. package/src/session/session.ts +0 -60
  367. package/types/Authenticated.d.ts +0 -29
  368. package/types/Authenticated.d.ts.map +0 -1
  369. package/types/Loading.d.ts +0 -26
  370. package/types/Loading.d.ts.map +0 -1
  371. package/types/authConfig.d.ts +0 -9
  372. package/types/authConfig.d.ts.map +0 -1
  373. package/types/hooks/index.d.ts +0 -4
  374. package/types/hooks/index.d.ts.map +0 -1
  375. package/types/hooks/useAuthConfig.d.ts +0 -2
  376. package/types/hooks/useAuthConfig.d.ts.map +0 -1
  377. package/types/hooks/useTokensFromQuery/index.d.ts +0 -2
  378. package/types/hooks/useTokensFromQuery/index.d.ts.map +0 -1
  379. package/types/hooks/useTokensFromQuery/index.native.d.ts +0 -2
  380. package/types/hooks/useTokensFromQuery/index.native.d.ts.map +0 -1
  381. package/types/hooks/useTokensFromState.d.ts +0 -2
  382. package/types/hooks/useTokensFromState.d.ts.map +0 -1
  383. package/types/index.d.ts +0 -8
  384. package/types/index.d.ts.map +0 -1
  385. package/types/keycloak/config.d.ts +0 -7
  386. package/types/keycloak/config.d.ts.map +0 -1
  387. package/types/keycloak/context.d.ts +0 -3
  388. package/types/keycloak/context.d.ts.map +0 -1
  389. package/types/keycloak/index.d.ts +0 -3
  390. package/types/keycloak/index.d.ts.map +0 -1
  391. package/types/keycloak/keycloak.d.ts +0 -64
  392. package/types/keycloak/keycloak.d.ts.map +0 -1
  393. package/types/keycloak/keycloak.native.d.ts +0 -36
  394. package/types/keycloak/keycloak.native.d.ts.map +0 -1
  395. package/types/one.d.ts +0 -27
  396. package/types/one.d.ts.map +0 -1
  397. package/types/provider/AfterAuth.d.ts +0 -26
  398. package/types/provider/AfterAuth.d.ts.map +0 -1
  399. package/types/provider/AuthProvider/AuthProvider.d.ts +0 -43
  400. package/types/provider/AuthProvider/AuthProvider.d.ts.map +0 -1
  401. package/types/provider/AuthProvider/AuthProvider.native.d.ts +0 -23
  402. package/types/provider/AuthProvider/AuthProvider.native.d.ts.map +0 -1
  403. package/types/provider/AuthProvider/index.d.ts +0 -2
  404. package/types/provider/AuthProvider/index.d.ts.map +0 -1
  405. package/types/provider/KeycloakProvider.d.ts +0 -30
  406. package/types/provider/KeycloakProvider.d.ts.map +0 -1
  407. package/types/provider/index.d.ts +0 -4
  408. package/types/provider/index.d.ts.map +0 -1
  409. package/types/session/index.d.ts +0 -2
  410. package/types/session/index.d.ts.map +0 -1
  411. package/types/session/session.d.ts +0 -14
  412. package/types/session/session.d.ts.map +0 -1
  413. package/types/session/session.native.d.ts +0 -5
  414. package/types/session/session.native.d.ts.map +0 -1
  415. package/types/state.d.ts +0 -9
  416. package/types/state.d.ts.map +0 -1
  417. package/types/token.d.ts +0 -16
  418. package/types/token.d.ts.map +0 -1
  419. package/types/types.d.ts +0 -19
  420. package/types/types.d.ts.map +0 -1
  421. /package/dist/cjs/{Loading.cjs.map → Loading.js.map} +0 -0
  422. /package/dist/cjs/{authConfig.cjs.map → authConfig.js.map} +0 -0
  423. /package/dist/cjs/hooks/{useAuthConfig.cjs.map → useAuthConfig.js.map} +0 -0
  424. /package/dist/cjs/hooks/{useTokensFromState.cjs.map → useTokensFromState.js.map} +0 -0
  425. /package/dist/cjs/keycloak/{config.cjs.map → config.js.map} +0 -0
  426. /package/dist/cjs/keycloak/{context.cjs.map → context.js.map} +0 -0
  427. /package/dist/cjs/provider/{index.cjs.map → index.js.map} +0 -0
  428. /package/dist/cjs/{token.cjs.map → token.js.map} +0 -0
  429. /package/dist/cjs/{types.cjs.map → types.js.map} +0 -0
@@ -1,14 +1,13 @@
1
1
  /**
2
- * File: /src/provider/AuthProvider/AuthProvider.tsx
2
+ * File: /src/provider/AuthProvider/index.tsx
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 09-01-2024 11:29:20
4
+ * File Created: 19-11-2024 20:26:31
5
5
  * Author: Clay Risser
6
6
  * -----
7
7
  * BitSpur (c) Copyright 2021 - 2024
8
8
  *
9
9
  * Licensed under the Apache License, Version 2.0 (the "License");
10
10
  * you may not use this file except in compliance with the License.
11
- *
12
11
  * You may obtain a copy of the License at
13
12
  *
14
13
  * http://www.apache.org/licenses/LICENSE-2.0
@@ -22,95 +21,145 @@
22
21
 
23
22
  import KeycloakClient from "keycloak-js";
24
23
  import type { KeycloakInitOptions } from "keycloak-js";
25
- import { MultiPlatform } from "multiplatform.one";
26
- import type { SessionProviderProps } from "next-auth/react";
24
+ import { isIframe, isWindowDefined, logger } from "multiplatform.one";
27
25
  import { SessionProvider } from "next-auth/react";
28
- import type { PropsWithChildren } from "react";
29
- import { type ComponentType, useEffect, useMemo, useState } from "react";
26
+ import { useCallback, useEffect, useMemo, useState } from "react";
30
27
  import { Loading } from "../../Loading";
31
28
  import { useAuthConfig } from "../../hooks";
32
- import type { KeycloakConfig } from "../../keycloak";
33
- import { Keycloak, KeycloakConfigContext } from "../../keycloak";
34
29
  import { KeycloakContext } from "../../keycloak/context";
30
+ import { Keycloak, KeycloakConfigContext } from "../../keycloak/index";
35
31
  import { persist, useAuthStore } from "../../state";
36
32
  import { validOrRefreshableToken } from "../../token";
37
33
  import { AfterAuth } from "../AfterAuth";
38
-
39
- export interface AuthProviderProps extends PropsWithChildren {
40
- keycloakConfig: KeycloakConfig;
41
- keycloakInitOptions?: KeycloakInitOptions;
42
- sessionProvider?: Omit<SessionProviderProps, "children">;
43
- loadingComponent?: ComponentType;
44
- }
45
-
46
- const logger = console;
47
-
48
- export interface Tokens<B = boolean> {
49
- idToken?: string | B;
50
- refreshToken?: string | B;
51
- token?: string | B;
52
- }
34
+ import type { AuthProviderProps, MessageSchema, Tokens } from "./shared";
35
+ import { AuthSource, AuthStrategy, defaultKeycloakInitOptions } from "./shared";
53
36
 
54
37
  export function AuthProvider({
55
38
  children,
39
+ disabled,
56
40
  keycloakConfig,
57
41
  keycloakInitOptions,
58
42
  loadingComponent,
59
43
  sessionProvider,
60
44
  }: AuthProviderProps) {
61
- const { debug, messageHandlerKeys } = useAuthConfig();
45
+ const { debug, messageHandlerKeys, iframeSso } = useAuthConfig();
62
46
  const query = new URLSearchParams(
63
- typeof window === "undefined" ? "" : window?.location?.search || "",
47
+ isWindowDefined ? window?.location?.search || "" : "",
64
48
  );
65
49
  const authStore = useAuthStore();
66
50
  const [keycloak, setKeycloak] = useState<Keycloak>();
67
51
  const idTokenQuery = query.get("idToken");
68
52
  const refreshTokenQuery = query.get("refreshToken");
69
53
  const tokenQuery = query.get("token");
70
- const initialRefreshToken = useMemo(
54
+ const [listeningRefreshToken, setListeningRefreshToken] = useState(false);
55
+ const [listeningToken, setListeningToken] = useState(false);
56
+ const [listeningIdToken, setListeningIdToken] = useState(false);
57
+ const [loadedMessagePosted, setLoadedMessagePosted] = useState(false);
58
+ const initialRefreshTokenQuery = useMemo(
71
59
  () =>
72
- typeof authStore !== "undefined" &&
73
60
  validOrRefreshableToken(
74
- MultiPlatform.isIframe
75
- ? (typeof refreshTokenQuery === "string" &&
76
- (refreshTokenQuery || true)) ||
77
- (persist && authStore.refreshToken) ||
78
- undefined
61
+ (!iframeSso && isIframe) || typeof refreshTokenQuery === "string"
62
+ ? refreshTokenQuery || true
79
63
  : undefined,
80
64
  ),
81
- [],
65
+ [refreshTokenQuery, iframeSso],
82
66
  );
83
- const [tokens, setTokens] = useState<Tokens>({
84
- refreshToken: initialRefreshToken,
85
- token:
86
- typeof authStore !== "undefined" &&
67
+ const initialIdTokenQuery = useMemo(
68
+ () =>
87
69
  validOrRefreshableToken(
88
- MultiPlatform.isIframe
89
- ? (typeof tokenQuery === "string" && (tokenQuery || true)) ||
90
- (persist && authStore.token) ||
91
- undefined
70
+ (!iframeSso && isIframe) || typeof idTokenQuery === "string"
71
+ ? idTokenQuery || true
92
72
  : undefined,
93
- initialRefreshToken,
73
+ initialRefreshTokenQuery,
94
74
  ),
95
- idToken:
96
- typeof authStore !== "undefined" &&
75
+ [idTokenQuery, initialRefreshTokenQuery, iframeSso],
76
+ );
77
+ const initialTokenQuery = useMemo(
78
+ () =>
97
79
  validOrRefreshableToken(
98
- MultiPlatform.isIframe
99
- ? (typeof idTokenQuery === "string" && (idTokenQuery || true)) ||
100
- (persist && authStore.idToken) ||
101
- undefined
80
+ isIframe
81
+ ? typeof tokenQuery === "string"
82
+ ? tokenQuery || true
83
+ : undefined
102
84
  : undefined,
103
- initialRefreshToken,
85
+ initialRefreshTokenQuery,
104
86
  ),
87
+ [tokenQuery, initialRefreshTokenQuery, iframeSso],
88
+ );
89
+ const [tokens, setTokens] = useState<Tokens>({
90
+ refreshToken: initialRefreshTokenQuery,
91
+ token: initialTokenQuery,
92
+ idToken: initialIdTokenQuery,
105
93
  });
94
+ const authSource = useMemo(() => {
95
+ if (!iframeSso && isIframe) {
96
+ if (initialTokenQuery) return AuthSource.Query;
97
+ return AuthSource.Store;
98
+ }
99
+ return AuthSource.Session;
100
+ }, [initialTokenQuery, iframeSso]);
101
+ const authStrategy = useMemo(() => {
102
+ if (authSource === AuthSource.Session) return AuthStrategy.AuthJS;
103
+ if (authSource === AuthSource.Query) {
104
+ return AuthStrategy.KeycloakClientImplicit;
105
+ }
106
+ if (!persist) return AuthStrategy.KeycloakClientStandard;
107
+ if (typeof authStore === "undefined") return;
108
+ if (authStore.token && typeof tokens.token === "string" && tokens.token) {
109
+ return AuthStrategy.KeycloakClientImplicit;
110
+ }
111
+ return AuthStrategy.KeycloakClientStandard;
112
+ }, [authSource, authStore?.token, tokens.token]);
113
+ const isLoading = useMemo(() => {
114
+ if (!authStrategy) return true;
115
+ if (authStrategy === AuthStrategy.KeycloakClientImplicit) {
116
+ if (
117
+ authSource === AuthSource.Query &&
118
+ (initialRefreshTokenQuery === true ||
119
+ initialTokenQuery === true ||
120
+ initialIdTokenQuery === true)
121
+ ) {
122
+ return true;
123
+ }
124
+ if (authSource === AuthSource.Store && typeof authStore === "undefined") {
125
+ return true;
126
+ }
127
+ }
128
+ return false;
129
+ }, [
130
+ authSource,
131
+ authStore?.idToken,
132
+ authStore?.refreshToken,
133
+ authStore?.token,
134
+ authStrategy,
135
+ initialIdTokenQuery,
136
+ initialRefreshTokenQuery,
137
+ initialTokenQuery,
138
+ ]);
139
+
140
+ useEffect(() => {
141
+ if (!persist || typeof authStore === "undefined") return;
142
+ const refreshToken = validOrRefreshableToken(authStore.refreshToken);
143
+ const idToken = validOrRefreshableToken(authStore.idToken, refreshToken);
144
+ const token = validOrRefreshableToken(authStore.token, refreshToken);
145
+ setTokens({
146
+ idToken: idToken || undefined,
147
+ refreshToken: refreshToken || undefined,
148
+ token: token || undefined,
149
+ });
150
+ }, [authStore?.token, authStore?.refreshToken, authStore?.idToken]);
106
151
 
107
152
  useEffect(() => {
108
153
  if (
109
- tokens.token !== true &&
110
- tokens.refreshToken !== true &&
111
- tokens.idToken !== true
112
- )
154
+ disabled ||
155
+ authSource !== AuthSource.Query ||
156
+ tokens.token === true ||
157
+ tokens.refreshToken === true ||
158
+ tokens.idToken === true ||
159
+ loadedMessagePosted
160
+ ) {
113
161
  return;
162
+ }
114
163
  if (debug) logger.debug("post message", JSON.stringify({ type: "LOADED" }));
115
164
  (messageHandlerKeys || []).forEach((key: string) => {
116
165
  window?.webkit?.messageHandlers?.[key]?.postMessage(
@@ -119,11 +168,15 @@ export function AuthProvider({
119
168
  });
120
169
  window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: "LOADED" }));
121
170
  window?.parent?.postMessage(JSON.stringify({ type: "LOADED" }));
122
- }, []);
171
+ setLoadedMessagePosted(true);
172
+ }, [disabled, authSource, tokens.token, tokens.refreshToken, tokens.idToken]);
123
173
 
124
174
  useEffect(() => {
125
- if (tokens.refreshToken !== true) return;
126
- const messageCallback = (e: MessageEvent<any>) => {
175
+ if (disabled || tokens.refreshToken !== true || listeningRefreshToken) {
176
+ return;
177
+ }
178
+ setListeningRefreshToken(true);
179
+ function messageCallback(e: MessageEvent<any>) {
127
180
  let data = e?.data || null;
128
181
  if (typeof data === "string") {
129
182
  try {
@@ -140,8 +193,9 @@ export function AuthProvider({
140
193
  refreshToken: validOrRefreshableToken(message.payload),
141
194
  }));
142
195
  window.removeEventListener("message", messageCallback);
196
+ setListeningRefreshToken(false);
143
197
  }
144
- };
198
+ }
145
199
  if (debug) {
146
200
  logger.debug(
147
201
  "listening for message",
@@ -155,11 +209,12 @@ export function AuthProvider({
155
209
  return () => {
156
210
  window.removeEventListener("message", messageCallback);
157
211
  };
158
- }, []);
212
+ }, [disabled, tokens.refreshToken, listeningRefreshToken]);
159
213
 
160
214
  useEffect(() => {
161
- if (tokens.token !== true) return;
162
- const messageCallback = (e: MessageEvent<any>) => {
215
+ if (disabled || tokens.token !== true || listeningToken) return;
216
+ setListeningToken(true);
217
+ function messageCallback(e: MessageEvent<any>) {
163
218
  let data = e?.data || null;
164
219
  if (typeof data === "string") {
165
220
  try {
@@ -176,8 +231,9 @@ export function AuthProvider({
176
231
  token: validOrRefreshableToken(message.payload, tokens.refreshToken),
177
232
  }));
178
233
  window.removeEventListener("message", messageCallback);
234
+ setListeningToken(false);
179
235
  }
180
- };
236
+ }
181
237
  if (debug) {
182
238
  logger.debug(
183
239
  "listening for message",
@@ -191,11 +247,12 @@ export function AuthProvider({
191
247
  return () => {
192
248
  window.removeEventListener("message", messageCallback);
193
249
  };
194
- }, []);
250
+ }, [disabled, tokens.token, listeningToken]);
195
251
 
196
252
  useEffect(() => {
197
- if (tokens.idToken !== true) return;
198
- const messageCallback = (e: MessageEvent<any>) => {
253
+ if (disabled || tokens.idToken !== true || listeningIdToken) return;
254
+ setListeningIdToken(true);
255
+ function messageCallback(e: MessageEvent<any>) {
199
256
  let data = e?.data || null;
200
257
  if (typeof data === "string") {
201
258
  try {
@@ -215,8 +272,9 @@ export function AuthProvider({
215
272
  ),
216
273
  }));
217
274
  window.removeEventListener("message", messageCallback);
275
+ setListeningIdToken(false);
218
276
  }
219
- };
277
+ }
220
278
  if (debug) {
221
279
  logger.debug(
222
280
  "listening for message",
@@ -230,35 +288,35 @@ export function AuthProvider({
230
288
  return () => {
231
289
  window.removeEventListener("message", messageCallback);
232
290
  };
233
- }, []);
291
+ }, [disabled, tokens.idToken, listeningIdToken]);
234
292
 
235
293
  const keycloakClient = useMemo(
236
294
  () =>
237
- !MultiPlatform.isServer &&
238
- (!MultiPlatform.isBrowser || MultiPlatform.isIframe) &&
295
+ !disabled &&
296
+ !isLoading &&
297
+ (authStrategy === AuthStrategy.KeycloakClientStandard ||
298
+ authStrategy === AuthStrategy.KeycloakClientImplicit) &&
239
299
  keycloakConfig
240
300
  ? new KeycloakClient({
241
- url: keycloakConfig.url,
242
- realm: keycloakConfig.realm,
243
301
  clientId: keycloakConfig.publicClientId || keycloakConfig.clientId,
302
+ realm: keycloakConfig.realm,
303
+ url: keycloakConfig.url,
244
304
  })
245
305
  : undefined,
246
306
  [
247
- keycloakInitOptions,
307
+ authStrategy,
308
+ disabled,
309
+ isLoading,
248
310
  keycloakConfig,
249
- tokens.token,
250
- tokens.refreshToken,
311
+ keycloakInitOptions,
251
312
  tokens.idToken,
313
+ tokens.refreshToken,
314
+ tokens.token,
252
315
  ],
253
316
  );
254
317
 
255
318
  const initOptions = useMemo(() => {
256
- if (
257
- MultiPlatform.isServer ||
258
- (MultiPlatform.isBrowser && !MultiPlatform.isIframe)
259
- ) {
260
- return;
261
- }
319
+ if (!keycloakClient) return;
262
320
  const initOptions: KeycloakInitOptions = {
263
321
  ...defaultKeycloakInitOptions,
264
322
  ...keycloakInitOptions,
@@ -277,29 +335,39 @@ export function AuthProvider({
277
335
  if (tokens.token && typeof tokens.token === "string") {
278
336
  initOptions.token = tokens.token;
279
337
  initOptions.timeSkew = 0;
280
- if (tokens.idToken && typeof tokens.idToken === "string")
338
+ if (tokens.idToken && typeof tokens.idToken === "string") {
281
339
  initOptions.idToken = tokens.idToken;
282
- if (tokens.refreshToken && typeof tokens.refreshToken === "string")
340
+ }
341
+ if (tokens.refreshToken && typeof tokens.refreshToken === "string") {
283
342
  initOptions.refreshToken = tokens.refreshToken;
343
+ }
284
344
  }
285
- if (
286
- (typeof window !== "undefined" && window.self !== window.top) ||
287
- (tokens.token && !tokens.refreshToken)
288
- ) {
345
+ if ((!iframeSso && isIframe) || (tokens.token && !tokens.refreshToken)) {
289
346
  initOptions.checkLoginIframe = false;
290
347
  initOptions.flow = "implicit";
291
348
  initOptions.onLoad = undefined;
292
349
  }
293
350
  return initOptions;
294
351
  }, [
352
+ keycloakClient,
295
353
  keycloakInitOptions,
296
354
  keycloakConfig.scopes,
355
+ debug,
297
356
  tokens.token,
298
357
  tokens.idToken,
299
358
  tokens.refreshToken,
359
+ iframeSso,
300
360
  ]);
301
361
 
302
362
  useEffect(() => {
363
+ if (
364
+ !keycloakClient ||
365
+ !initOptions ||
366
+ (authStrategy === AuthStrategy.KeycloakClientImplicit &&
367
+ (typeof tokens.token !== "string" || !tokens.token))
368
+ ) {
369
+ return;
370
+ }
303
371
  function onError() {
304
372
  if (keycloakClient && initOptions) {
305
373
  setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
@@ -310,56 +378,40 @@ export function AuthProvider({
310
378
  setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
311
379
  }
312
380
  }
313
- if (keycloakClient && initOptions) {
314
- (async () => {
315
- keycloakClient.onAuthError = onError;
316
- keycloakClient.onAuthLogout = onUpdate;
317
- keycloakClient.onAuthRefreshError = onError;
318
- keycloakClient.onAuthRefreshSuccess = onUpdate;
319
- keycloakClient.onAuthSuccess = onUpdate;
320
- keycloakClient.onReady = onUpdate;
321
- keycloakClient.onTokenExpired = async () => {
322
- try {
323
- await keycloakClient.updateToken(5);
324
- } catch (err) {
325
- setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
326
- }
327
- };
328
- const authenticated = await keycloakClient.init(initOptions);
329
- setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
330
- })();
331
- }
332
- }, []);
333
-
334
- if (typeof authStore === "undefined") {
335
- return <Loading loadingComponent={loadingComponent} />;
336
- }
381
+ (async () => {
382
+ keycloakClient.onAuthError = onError;
383
+ keycloakClient.onAuthLogout = onUpdate;
384
+ keycloakClient.onAuthRefreshError = onError;
385
+ keycloakClient.onAuthRefreshSuccess = onUpdate;
386
+ keycloakClient.onAuthSuccess = onUpdate;
387
+ keycloakClient.onReady = onUpdate;
388
+ keycloakClient.onTokenExpired = async () => {
389
+ try {
390
+ await keycloakClient.updateToken(5);
391
+ } catch (err) {
392
+ logger.warn(err);
393
+ setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
394
+ }
395
+ };
396
+ await keycloakClient.init(initOptions);
397
+ setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
398
+ })();
399
+ }, [keycloakClient, initOptions, authStrategy, tokens.token]);
337
400
 
338
- function render() {
339
- return (
401
+ const render = useCallback(
402
+ () => (
340
403
  <KeycloakConfigContext.Provider value={keycloakConfig}>
341
404
  <KeycloakContext.Provider value={keycloak}>
342
405
  <AfterAuth loadingComponent={loadingComponent}>{children}</AfterAuth>
343
406
  </KeycloakContext.Provider>
344
407
  </KeycloakConfigContext.Provider>
345
- );
346
- }
347
-
348
- if (MultiPlatform.isBrowser && !MultiPlatform.isElectron) {
408
+ ),
409
+ [children, keycloak, keycloakConfig],
410
+ );
411
+ if (disabled) return <>{children}</>;
412
+ if (authStrategy === AuthStrategy.AuthJS) {
349
413
  return <SessionProvider {...sessionProvider}>{render()}</SessionProvider>;
350
414
  }
415
+ if (isLoading) return <Loading loadingComponent={loadingComponent} />;
351
416
  return render();
352
417
  }
353
-
354
- const defaultKeycloakInitOptions: KeycloakInitOptions = {
355
- checkLoginIframe: true,
356
- checkLoginIframeInterval: 5,
357
- enableLogging: false,
358
- onLoad: "check-sso",
359
- pkceMethod: "S256",
360
- };
361
-
362
- export interface MessageSchema {
363
- type: string;
364
- payload?: string;
365
- }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * File: /src/provider/AuthProvider/shared.ts
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
+ *
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 type { KeycloakInitOptions } from "keycloak-js";
23
+ import type { SessionProviderProps } from "next-auth/react";
24
+ import type { ComponentType, PropsWithChildren } from "react";
25
+ import type { KeycloakConfig } from "../../keycloak/index";
26
+
27
+ export const defaultKeycloakInitOptions: KeycloakInitOptions = {
28
+ checkLoginIframe: true,
29
+ checkLoginIframeInterval: 5,
30
+ enableLogging: false,
31
+ onLoad: "check-sso",
32
+ pkceMethod: "S256",
33
+ };
34
+
35
+ export interface MessageSchema {
36
+ type: string;
37
+ payload?: string;
38
+ }
39
+
40
+ export interface AuthProviderProps extends PropsWithChildren {
41
+ disabled?: boolean;
42
+ keycloakConfig: KeycloakConfig;
43
+ keycloakInitOptions?: KeycloakInitOptions;
44
+ loadingComponent?: ComponentType;
45
+ sessionProvider?: Omit<SessionProviderProps, "children">;
46
+ }
47
+
48
+ export interface Tokens<B = boolean> {
49
+ idToken?: string | B;
50
+ refreshToken?: string | B;
51
+ token?: string | B;
52
+ }
53
+
54
+ export enum AuthStrategy {
55
+ AuthJS = "authjs",
56
+ ExpoAuth = "expo-auth",
57
+ KeycloakClientImplicit = "keycloak-client-implicit",
58
+ KeycloakClientStandard = "keycloak-client-standard",
59
+ }
60
+
61
+ export enum AuthSource {
62
+ Query = "query",
63
+ Session = "session",
64
+ Store = "store",
65
+ }
@@ -23,7 +23,6 @@ import type { PropsWithChildren } from "react";
23
23
  import { useMemo } from "react";
24
24
  import type { AuthConfig } from "../authConfig";
25
25
  import { AuthConfigContext } from "../authConfig";
26
- import type { Session } from "../session";
27
26
  import { AuthProvider } from "./AuthProvider";
28
27
 
29
28
  export interface KeycloakProviderProps extends PropsWithChildren, AuthConfig {
@@ -40,29 +39,27 @@ export function KeycloakProvider({
40
39
  loginRedirectUri,
41
40
  debug,
42
41
  disabled,
42
+ iframeSso,
43
43
  publicClientId,
44
44
  realm,
45
45
  }: KeycloakProviderProps) {
46
46
  const authConfig = useMemo(
47
- () => ({ debug, disabled, loginRedirectUri }),
48
- [debug, disabled, loginRedirectUri],
47
+ () => ({ debug, disabled, iframeSso, loginRedirectUri }),
48
+ [debug, disabled, iframeSso, loginRedirectUri],
49
49
  );
50
50
  return (
51
51
  <AuthConfigContext.Provider value={authConfig}>
52
- {disabled ? (
53
- <>{children}</>
54
- ) : (
55
- <AuthProvider
56
- keycloakConfig={{
57
- clientId: clientId || "app",
58
- publicClientId,
59
- realm: realm || "main",
60
- url: baseUrl,
61
- }}
62
- >
63
- {children}
64
- </AuthProvider>
65
- )}
52
+ <AuthProvider
53
+ disabled={disabled}
54
+ keycloakConfig={{
55
+ clientId: clientId || "app",
56
+ publicClientId,
57
+ realm: realm || "main",
58
+ url: baseUrl,
59
+ }}
60
+ >
61
+ {children}
62
+ </AuthProvider>
66
63
  </AuthConfigContext.Provider>
67
64
  );
68
65
  }
@@ -1,7 +1,7 @@
1
- /*
1
+ /**
2
2
  * File: /src/provider/index.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 04-04-2024 15:50:39
4
+ * File Created: 19-11-2024 20:26:31
5
5
  * Author: Clay Risser
6
6
  * -----
7
7
  * BitSpur (c) Copyright 2021 - 2024
@@ -1,5 +1,5 @@
1
1
  /*
2
- * File: /src/session/session.native.ts
2
+ * File: /src/session/index.native.ts
3
3
  * Project: @multiplatform.one/keycloak
4
4
  * File Created: 04-04-2024 15:50:39
5
5
  * Author: Clay Risser
@@ -20,7 +20,7 @@
20
20
  */
21
21
 
22
22
  import type { UseSessionOptions } from "next-auth/react";
23
- import type { SessionContextValue } from "./session";
23
+ import type { SessionContextValue } from "./index";
24
24
 
25
25
  export async function getSession() {
26
26
  return null;
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * File: /src/session/index.ts
3
3
  * Project: @multiplatform.one/keycloak
4
- * File Created: 04-04-2024 15:50:39
4
+ * File Created: 19-11-2024 20:26:31
5
5
  * Author: Clay Risser
6
6
  * -----
7
7
  * BitSpur (c) Copyright 2021 - 2024
@@ -19,4 +19,42 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- export * from "./session";
22
+ import { isBrowser, isElectron } from "multiplatform.one";
23
+ import type { Session as NextSession } from "next-auth";
24
+ import { useSession as useNextSession } from "next-auth/react";
25
+ import type {
26
+ SessionContextValue as NextSessionContextValue,
27
+ UseSessionOptions,
28
+ } from "next-auth/react";
29
+
30
+ export type SessionContextValue<R extends boolean> = Partial<
31
+ Omit<NextSessionContextValue<R> & { session: Session }, "data">
32
+ >;
33
+
34
+ let useSession = <R extends boolean>(
35
+ _options?: UseSessionOptions<R>,
36
+ ): SessionContextValue<R> => {
37
+ return {};
38
+ };
39
+
40
+ if (isBrowser && !isElectron) {
41
+ useSession = <R extends boolean>(
42
+ options?: UseSessionOptions<R>,
43
+ ): SessionContextValue<R> => {
44
+ const nextSession = useNextSession(options);
45
+ return {
46
+ update: nextSession.update,
47
+ status: nextSession.status,
48
+ session: nextSession.data as Session,
49
+ } as SessionContextValue<R>;
50
+ };
51
+ }
52
+
53
+ export interface Session extends NextSession {
54
+ accessToken?: string;
55
+ err?: Error;
56
+ idToken?: string;
57
+ refreshToken?: string;
58
+ }
59
+
60
+ export { useSession };