@authticon/client 0.0.0-beta9 → 0.0.3

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 (248) hide show
  1. package/README.md +390 -0
  2. package/dist/authticon.d.ts +122 -0
  3. package/dist/authticon.d.ts.map +1 -0
  4. package/dist/authticon.js +24 -0
  5. package/dist/authticon.js.map +1 -0
  6. package/dist/browser.d.ts +128 -0
  7. package/dist/browser.d.ts.map +1 -0
  8. package/dist/browser.js +14 -0
  9. package/dist/browser.js.map +1 -0
  10. package/dist/clients/admin.d.ts +107 -0
  11. package/dist/clients/admin.d.ts.map +1 -0
  12. package/dist/clients/admin.js +133 -0
  13. package/dist/clients/admin.js.map +1 -0
  14. package/dist/clients/auth.d.ts +34 -0
  15. package/dist/clients/auth.d.ts.map +1 -0
  16. package/dist/clients/auth.js +67 -0
  17. package/dist/clients/auth.js.map +1 -0
  18. package/dist/clients/base.d.ts +8 -0
  19. package/dist/clients/base.d.ts.map +1 -0
  20. package/dist/clients/base.js +18 -0
  21. package/dist/clients/base.js.map +1 -0
  22. package/dist/clients/generated/client/client.gen.d.ts.map +1 -0
  23. package/dist/clients/generated/client/client.gen.js +236 -0
  24. package/dist/clients/generated/client/client.gen.js.map +1 -0
  25. package/dist/{generated → clients/generated}/client/index.d.ts +2 -2
  26. package/dist/clients/generated/client/index.d.ts.map +1 -0
  27. package/dist/{generated → clients/generated}/client/index.js +1 -1
  28. package/dist/clients/generated/client/index.js.map +1 -0
  29. package/dist/clients/generated/client/types.gen.d.ts +118 -0
  30. package/dist/clients/generated/client/types.gen.d.ts.map +1 -0
  31. package/dist/clients/generated/client/types.gen.js.map +1 -0
  32. package/dist/clients/generated/client/utils.gen.d.ts +34 -0
  33. package/dist/clients/generated/client/utils.gen.d.ts.map +1 -0
  34. package/dist/{generated → clients/generated}/client/utils.gen.js +117 -57
  35. package/dist/clients/generated/client/utils.gen.js.map +1 -0
  36. package/dist/clients/generated/client.gen.d.ts.map +1 -0
  37. package/dist/{generated → clients/generated}/client.gen.js +1 -1
  38. package/dist/clients/generated/client.gen.js.map +1 -0
  39. package/dist/clients/generated/core/auth.gen.d.ts.map +1 -0
  40. package/dist/clients/generated/core/auth.gen.js.map +1 -0
  41. package/dist/clients/generated/core/bodySerializer.gen.d.ts.map +1 -0
  42. package/dist/clients/generated/core/bodySerializer.gen.js.map +1 -0
  43. package/dist/clients/generated/core/params.gen.d.ts.map +1 -0
  44. package/dist/clients/generated/core/params.gen.js.map +1 -0
  45. package/dist/clients/generated/core/pathSerializer.gen.d.ts.map +1 -0
  46. package/dist/clients/generated/core/pathSerializer.gen.js.map +1 -0
  47. package/dist/clients/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  48. package/dist/clients/generated/core/queryKeySerializer.gen.js.map +1 -0
  49. package/dist/clients/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  50. package/dist/clients/generated/core/serverSentEvents.gen.js.map +1 -0
  51. package/dist/clients/generated/core/types.gen.d.ts.map +1 -0
  52. package/dist/clients/generated/core/types.gen.js.map +1 -0
  53. package/dist/clients/generated/core/utils.gen.d.ts.map +1 -0
  54. package/dist/clients/generated/core/utils.gen.js.map +1 -0
  55. package/dist/clients/generated/index.d.ts +3 -0
  56. package/dist/clients/generated/index.d.ts.map +1 -0
  57. package/dist/clients/generated/index.js +3 -0
  58. package/dist/clients/generated/index.js.map +1 -0
  59. package/dist/clients/generated/sdk.gen.d.ts +178 -0
  60. package/dist/clients/generated/sdk.gen.d.ts.map +1 -0
  61. package/dist/clients/generated/sdk.gen.js +445 -0
  62. package/dist/clients/generated/sdk.gen.js.map +1 -0
  63. package/dist/clients/generated/types.gen.d.ts +1355 -0
  64. package/dist/clients/generated/types.gen.d.ts.map +1 -0
  65. package/dist/clients/generated/types.gen.js.map +1 -0
  66. package/dist/clients/user.d.ts +70 -0
  67. package/dist/clients/user.d.ts.map +1 -0
  68. package/dist/clients/user.js +72 -0
  69. package/dist/clients/user.js.map +1 -0
  70. package/dist/cookies/browser.d.ts +3 -0
  71. package/dist/cookies/browser.d.ts.map +1 -0
  72. package/dist/cookies/browser.js +31 -0
  73. package/dist/cookies/browser.js.map +1 -0
  74. package/dist/cookies/node.d.ts +8 -0
  75. package/dist/cookies/node.d.ts.map +1 -0
  76. package/dist/cookies/node.js +49 -0
  77. package/dist/cookies/node.js.map +1 -0
  78. package/dist/errors.d.ts +22 -0
  79. package/dist/errors.d.ts.map +1 -0
  80. package/dist/errors.js +40 -0
  81. package/dist/errors.js.map +1 -0
  82. package/dist/node.d.ts +163 -0
  83. package/dist/node.d.ts.map +1 -0
  84. package/dist/node.js +46 -0
  85. package/dist/node.js.map +1 -0
  86. package/dist/password.d.ts +8 -0
  87. package/dist/password.d.ts.map +1 -0
  88. package/dist/password.js +23 -0
  89. package/dist/password.js.map +1 -0
  90. package/dist/session.d.ts +99 -0
  91. package/dist/session.d.ts.map +1 -0
  92. package/dist/session.js +223 -0
  93. package/dist/session.js.map +1 -0
  94. package/dist/tokens.d.ts +27 -0
  95. package/dist/tokens.d.ts.map +1 -0
  96. package/dist/tokens.js +212 -0
  97. package/dist/tokens.js.map +1 -0
  98. package/dist/types.d.ts +48 -6
  99. package/dist/types.d.ts.map +1 -1
  100. package/package.json +23 -8
  101. package/dist/Acccount.d.ts +0 -9
  102. package/dist/Acccount.d.ts.map +0 -1
  103. package/dist/Acccount.js +0 -22
  104. package/dist/Acccount.js.map +0 -1
  105. package/dist/Auth.d.ts +0 -25
  106. package/dist/Auth.d.ts.map +0 -1
  107. package/dist/Auth.js +0 -43
  108. package/dist/Auth.js.map +0 -1
  109. package/dist/Authticon.d.ts +0 -87
  110. package/dist/Authticon.d.ts.map +0 -1
  111. package/dist/Authticon.js +0 -74
  112. package/dist/Authticon.js.map +0 -1
  113. package/dist/BrowserCookieAdapter.d.ts +0 -13
  114. package/dist/BrowserCookieAdapter.d.ts.map +0 -1
  115. package/dist/BrowserCookieAdapter.js +0 -18
  116. package/dist/BrowserCookieAdapter.js.map +0 -1
  117. package/dist/BrowserCookieAdapter.test.d.ts +0 -2
  118. package/dist/BrowserCookieAdapter.test.d.ts.map +0 -1
  119. package/dist/BrowserCookieAdapter.test.js +0 -145
  120. package/dist/BrowserCookieAdapter.test.js.map +0 -1
  121. package/dist/Challange.d.ts +0 -8
  122. package/dist/Challange.d.ts.map +0 -1
  123. package/dist/Challange.js +0 -24
  124. package/dist/Challange.js.map +0 -1
  125. package/dist/CookieStorageAdapter.d.ts +0 -14
  126. package/dist/CookieStorageAdapter.d.ts.map +0 -1
  127. package/dist/CookieStorageAdapter.js +0 -42
  128. package/dist/CookieStorageAdapter.js.map +0 -1
  129. package/dist/CookieStorageAdapter.test.d.ts +0 -2
  130. package/dist/CookieStorageAdapter.test.d.ts.map +0 -1
  131. package/dist/CookieStorageAdapter.test.js +0 -130
  132. package/dist/CookieStorageAdapter.test.js.map +0 -1
  133. package/dist/RemixCookieAdapter.d.ts +0 -12
  134. package/dist/RemixCookieAdapter.d.ts.map +0 -1
  135. package/dist/RemixCookieAdapter.js +0 -25
  136. package/dist/RemixCookieAdapter.js.map +0 -1
  137. package/dist/RemixCookieAdapter.test.d.ts +0 -2
  138. package/dist/RemixCookieAdapter.test.d.ts.map +0 -1
  139. package/dist/RemixCookieAdapter.test.js +0 -136
  140. package/dist/RemixCookieAdapter.test.js.map +0 -1
  141. package/dist/TokenManager.d.ts +0 -24
  142. package/dist/TokenManager.d.ts.map +0 -1
  143. package/dist/TokenManager.js +0 -53
  144. package/dist/TokenManager.js.map +0 -1
  145. package/dist/TokenManager.test.d.ts +0 -2
  146. package/dist/TokenManager.test.d.ts.map +0 -1
  147. package/dist/TokenManager.test.js +0 -118
  148. package/dist/TokenManager.test.js.map +0 -1
  149. package/dist/TokenStorage.d.ts +0 -18
  150. package/dist/TokenStorage.d.ts.map +0 -1
  151. package/dist/TokenStorage.js +0 -69
  152. package/dist/TokenStorage.js.map +0 -1
  153. package/dist/TokenStorage.test.d.ts +0 -2
  154. package/dist/TokenStorage.test.d.ts.map +0 -1
  155. package/dist/TokenStorage.test.js +0 -179
  156. package/dist/TokenStorage.test.js.map +0 -1
  157. package/dist/TokenVerifier.d.ts +0 -13
  158. package/dist/TokenVerifier.d.ts.map +0 -1
  159. package/dist/TokenVerifier.js +0 -61
  160. package/dist/TokenVerifier.js.map +0 -1
  161. package/dist/TokenVerifier.test.d.ts +0 -2
  162. package/dist/TokenVerifier.test.d.ts.map +0 -1
  163. package/dist/TokenVerifier.test.js +0 -117
  164. package/dist/TokenVerifier.test.js.map +0 -1
  165. package/dist/TwoFa.d.ts +0 -26
  166. package/dist/TwoFa.d.ts.map +0 -1
  167. package/dist/TwoFa.js +0 -55
  168. package/dist/TwoFa.js.map +0 -1
  169. package/dist/User.d.ts +0 -25
  170. package/dist/User.d.ts.map +0 -1
  171. package/dist/User.js +0 -27
  172. package/dist/User.js.map +0 -1
  173. package/dist/Users.d.ts +0 -57
  174. package/dist/Users.d.ts.map +0 -1
  175. package/dist/Users.js +0 -55
  176. package/dist/Users.js.map +0 -1
  177. package/dist/cookie-utils.d.ts +0 -5
  178. package/dist/cookie-utils.d.ts.map +0 -1
  179. package/dist/cookie-utils.js +0 -33
  180. package/dist/cookie-utils.js.map +0 -1
  181. package/dist/generated/client/client.gen.d.ts.map +0 -1
  182. package/dist/generated/client/client.gen.js +0 -135
  183. package/dist/generated/client/client.gen.js.map +0 -1
  184. package/dist/generated/client/index.d.ts.map +0 -1
  185. package/dist/generated/client/index.js.map +0 -1
  186. package/dist/generated/client/types.gen.d.ts +0 -89
  187. package/dist/generated/client/types.gen.d.ts.map +0 -1
  188. package/dist/generated/client/types.gen.js.map +0 -1
  189. package/dist/generated/client/utils.gen.d.ts +0 -15
  190. package/dist/generated/client/utils.gen.d.ts.map +0 -1
  191. package/dist/generated/client/utils.gen.js.map +0 -1
  192. package/dist/generated/client.gen.d.ts.map +0 -1
  193. package/dist/generated/client.gen.js.map +0 -1
  194. package/dist/generated/core/auth.gen.d.ts.map +0 -1
  195. package/dist/generated/core/auth.gen.js.map +0 -1
  196. package/dist/generated/core/bodySerializer.gen.d.ts.map +0 -1
  197. package/dist/generated/core/bodySerializer.gen.js.map +0 -1
  198. package/dist/generated/core/params.gen.d.ts.map +0 -1
  199. package/dist/generated/core/params.gen.js.map +0 -1
  200. package/dist/generated/core/pathSerializer.gen.d.ts.map +0 -1
  201. package/dist/generated/core/pathSerializer.gen.js.map +0 -1
  202. package/dist/generated/core/queryKeySerializer.gen.d.ts.map +0 -1
  203. package/dist/generated/core/queryKeySerializer.gen.js.map +0 -1
  204. package/dist/generated/core/serverSentEvents.gen.d.ts.map +0 -1
  205. package/dist/generated/core/serverSentEvents.gen.js.map +0 -1
  206. package/dist/generated/core/types.gen.d.ts.map +0 -1
  207. package/dist/generated/core/types.gen.js.map +0 -1
  208. package/dist/generated/core/utils.gen.d.ts.map +0 -1
  209. package/dist/generated/core/utils.gen.js.map +0 -1
  210. package/dist/generated/index.d.ts +0 -3
  211. package/dist/generated/index.d.ts.map +0 -1
  212. package/dist/generated/index.js +0 -3
  213. package/dist/generated/index.js.map +0 -1
  214. package/dist/generated/sdk.gen.d.ts +0 -58
  215. package/dist/generated/sdk.gen.d.ts.map +0 -1
  216. package/dist/generated/sdk.gen.js +0 -337
  217. package/dist/generated/sdk.gen.js.map +0 -1
  218. package/dist/generated/types.gen.d.ts +0 -1344
  219. package/dist/generated/types.gen.d.ts.map +0 -1
  220. package/dist/generated/types.gen.js.map +0 -1
  221. package/dist/index.d.ts +0 -10
  222. package/dist/index.d.ts.map +0 -1
  223. package/dist/index.js +0 -8
  224. package/dist/index.js.map +0 -1
  225. package/dist/user.d.ts +0 -50
  226. package/dist/user.d.ts.map +0 -1
  227. package/dist/user.js +0 -35
  228. package/dist/user.js.map +0 -1
  229. /package/dist/{generated → clients/generated}/client/client.gen.d.ts +0 -0
  230. /package/dist/{generated → clients/generated}/client/types.gen.js +0 -0
  231. /package/dist/{generated → clients/generated}/client.gen.d.ts +0 -0
  232. /package/dist/{generated → clients/generated}/core/auth.gen.d.ts +0 -0
  233. /package/dist/{generated → clients/generated}/core/auth.gen.js +0 -0
  234. /package/dist/{generated → clients/generated}/core/bodySerializer.gen.d.ts +0 -0
  235. /package/dist/{generated → clients/generated}/core/bodySerializer.gen.js +0 -0
  236. /package/dist/{generated → clients/generated}/core/params.gen.d.ts +0 -0
  237. /package/dist/{generated → clients/generated}/core/params.gen.js +0 -0
  238. /package/dist/{generated → clients/generated}/core/pathSerializer.gen.d.ts +0 -0
  239. /package/dist/{generated → clients/generated}/core/pathSerializer.gen.js +0 -0
  240. /package/dist/{generated → clients/generated}/core/queryKeySerializer.gen.d.ts +0 -0
  241. /package/dist/{generated → clients/generated}/core/queryKeySerializer.gen.js +0 -0
  242. /package/dist/{generated → clients/generated}/core/serverSentEvents.gen.d.ts +0 -0
  243. /package/dist/{generated → clients/generated}/core/serverSentEvents.gen.js +0 -0
  244. /package/dist/{generated → clients/generated}/core/types.gen.d.ts +0 -0
  245. /package/dist/{generated → clients/generated}/core/types.gen.js +0 -0
  246. /package/dist/{generated → clients/generated}/core/utils.gen.d.ts +0 -0
  247. /package/dist/{generated → clients/generated}/core/utils.gen.js +0 -0
  248. /package/dist/{generated → clients/generated}/types.gen.js +0 -0
package/README.md ADDED
@@ -0,0 +1,390 @@
1
+ # @authticon/client
2
+
3
+ Oficjalny klient JavaScript/TypeScript dla [Authticon](https://authticon.com) — usługi uwierzytelniania. Biblioteka wspiera zarówno środowisko **Node.js** (SSR, API routes), jak i **przeglądarkę** (SPA, client-side).
4
+
5
+ ## Instalacja
6
+
7
+ ```bash
8
+ npm install @authticon/client
9
+ ```
10
+
11
+ **Wymagania:** Node.js >= 18
12
+
13
+ ## Dwa entry pointy
14
+
15
+ Biblioteka dostarcza dwa osobne moduły z odrębnymi implementacjami cookie i sesji:
16
+
17
+ | Import | Środowisko | Cookie adapter |
18
+ | ------------------------------------------------ | ------------------ | -------------------------------------------------------------------------------------------------------------------------- |
19
+ | `@authticon/client` lub `@authticon/client/node` | Node.js / SSR | Parsuje cookies z obiektu `Request`, zwraca `CookieStorageAdapter` z metodami `applyToResponse()`, `stringifySetCookies()` |
20
+ | `@authticon/client/browser` | Przeglądarka / SPA | Używa `document.cookie` |
21
+
22
+ ## Szybki start
23
+
24
+ ### Node.js (np. Next.js, Express, Hono)
25
+
26
+ ```typescript
27
+ import { createAuthticon } from "@authticon/client/node";
28
+
29
+ const authticon = createAuthticon({
30
+ projectId: "your-project-id",
31
+ });
32
+
33
+ // W handlerze HTTP:
34
+ async function handler(request: Request) {
35
+ const { getUser, login, logout, cookies } = await authticon.session({
36
+ request,
37
+ });
38
+
39
+ const user = getUser(); // SessionUser | null
40
+
41
+ // cookies.applyToResponse(response) — ustawia Set-Cookie na odpowiedzi
42
+ }
43
+ ```
44
+
45
+ ### Przeglądarka
46
+
47
+ ```typescript
48
+ import { createAuthticon } from "@authticon/client/browser";
49
+
50
+ const authticon = createAuthticon({
51
+ projectId: "your-project-id",
52
+ });
53
+
54
+ const session = await authticon.session({});
55
+
56
+ const user = session.getUser();
57
+ await session.login({ email: "user@example.com", password: "secret" });
58
+ ```
59
+
60
+ ## Konfiguracja
61
+
62
+ ```typescript
63
+ type AuthticonOptions = {
64
+ projectId: string; // ID projektu w Authticon (wymagane)
65
+ baseUrl?: string; // URL API (domyślnie: "https://authticon.com")
66
+ jwksUrl?: string; // URL do JWKS (domyślnie: {baseUrl}/.well-known/jwks.json)
67
+ jwksCacheTtlMs?: number; // TTL cache kluczy JWKS (domyślnie: 1h)
68
+ cache?: CacheAdapter; // Zewnętrzny adapter cache (domyślnie: in-memory)
69
+ logger?: Logger; // Instancja pino logger
70
+ };
71
+ ```
72
+
73
+ ## Session (API stanowe)
74
+
75
+ `session()` to główny sposób interakcji z biblioteką. Tworzy **stanowy obiekt sesji**, który:
76
+
77
+ 1. Przy tworzeniu automatycznie odczytuje tokeny z cookies
78
+ 2. Weryfikuje access token za pomocą JWKS
79
+ 3. Jeśli token wygasł — automatycznie odświeża go za pomocą refresh tokena
80
+ 4. Cache'uje obiekt `SessionUser` w pamięci na czas życia sesji
81
+ 5. Operacje takie jak `login()`, `logout()`, `createGuest()` automatycznie aktualizują wewnętrzny stan sesji i zapisują nowe tokeny w cookies
82
+
83
+ ### Tworzenie sesji
84
+
85
+ #### Node.js — z obiektu `Request`
86
+
87
+ ```typescript
88
+ const session = await authticon.session({ request });
89
+ // session.cookies — CookieStorageAdapter z metodami applyToResponse(), stringifySetCookies()
90
+ ```
91
+
92
+ #### Node.js — z własnym `CookieAdapter`
93
+
94
+ ```typescript
95
+ const session = await authticon.session({ cookies: myCookieAdapter });
96
+ ```
97
+
98
+ #### Przeglądarka
99
+
100
+ ```typescript
101
+ const session = await authticon.session({});
102
+ // Automatycznie używa document.cookie
103
+ ```
104
+
105
+ Opcjonalnie można przekazać `tokenStorage` do nadpisania nazw cookies i ich parametrów:
106
+
107
+ ```typescript
108
+ const session = await authticon.session({
109
+ request,
110
+ tokenStorage: {
111
+ accessTokenName: "my_access_token",
112
+ refreshTokenName: "my_refresh_token",
113
+ secure: true,
114
+ sameSite: "Strict",
115
+ domain: ".example.com",
116
+ },
117
+ });
118
+ ```
119
+
120
+ ### Metody sesji
121
+
122
+ #### Autentykacja
123
+
124
+ | Metoda | Opis |
125
+ | ---------------------------- | ------------------------------------------------------------------------- |
126
+ | `login(params)` | Logowanie (email/password). Zwraca `SessionUser`. |
127
+ | `register(params)` | Rejestracja. Zwraca dane rejestracji (tokeny nie są jeszcze zapisywane). |
128
+ | `loginByMagicLink(params)` | Loguje użytkownika przez magic link (z `deviceId`). Zwraca `SessionUser`. |
129
+ | `forgotPassword(params)` | Inicjuje reset hasła. |
130
+ | `verifyEmail(params)` | Weryfikuje email. |
131
+ | `createGuest(params)` | Tworzy użytkownika-gościa. Zwraca `SessionUser`. |
132
+ | `acceptInvitation(params)` | Akceptuje zaproszenie. Zwraca `SessionUser`. |
133
+ | `resendConfirmation(params)` | Ponownie wysyła email potwierdzający. |
134
+ | `logout()` | Wylogowuje (server-side + czyści cookies). |
135
+ | `refresh()` | Wymusza odświeżenie tokenów. |
136
+
137
+ #### Stan użytkownika
138
+
139
+ | Metoda | Opis |
140
+ | --------------------- | --------------------------------------------------------------------------------- |
141
+ | `getUser()` | Zwraca `SessionUser \| null`. |
142
+ | `requireUser()` | Zwraca `SessionUser` lub rzuca `AuthticonError`. |
143
+ | `isLoggedIn()` | Zwraca `boolean` — czy istnieje access token. |
144
+ | `isLoggedInByAdmin()` | Zwraca `boolean` — czy istnieje admin refresh token (logowanie jako użytkownik). |
145
+ | `getFirstChallenge()` | Zwraca pierwszy challenge (np. `"verifyTwoFa"`, `"setPassword"`) lub `undefined`. |
146
+
147
+ #### Profil użytkownika
148
+
149
+ | Metoda | Opis |
150
+ | ------------------ | -------------------------------------------- |
151
+ | `getMe()` | Pobiera dane zalogowanego użytkownika z API. |
152
+ | `updateMe(params)` | Aktualizuje dane zalogowanego użytkownika. |
153
+
154
+ #### Zarządzanie kontem
155
+
156
+ | Metoda | Opis |
157
+ | ------------------------ | ---------------------------------- |
158
+ | `changeEmail(params)` | Zmiana emaila. |
159
+ | `changePassword(params)` | Zmiana hasła. |
160
+ | `setPassword(params)` | Ustawienie hasła (np. po resecie). |
161
+ | `changePhone(params)` | Zmiana numeru telefonu. |
162
+ | `verifyPhone(params)` | Weryfikacja numeru telefonu. |
163
+
164
+ #### Dwuskładnikowe uwierzytelnianie (2FA)
165
+
166
+ | Metoda | Opis |
167
+ | ---------------------------------- | ------------------------------------------------------------- |
168
+ | `getTwoFaSecret()` | Pobiera sekret 2FA (do wyświetlenia QR code). |
169
+ | `enableTwoFa(params)` | Włącza 2FA. |
170
+ | `disableTwoFa(params)` | Wyłącza 2FA. |
171
+ | `sendTwoFaCode(params)` | Wysyła kod 2FA. |
172
+ | `verifyTwoFaCode(code, remember?)` | Weryfikuje kod 2FA i aktualizuje sesję. Zwraca `SessionUser`. |
173
+
174
+ #### Zaproszenia
175
+
176
+ | Metoda | Opis |
177
+ | -------------------------- | ------------------- |
178
+ | `createInvitation(params)` | Tworzy zaproszenie. |
179
+ | `deleteInvitation(params)` | Usuwa zaproszenie. |
180
+
181
+ #### Tokeny
182
+
183
+ Obiekt `session.tokens` daje bezpośredni dostęp do tokenów:
184
+
185
+ ```typescript
186
+ session.tokens.getAccessToken(); // string | null
187
+ session.tokens.getRefreshToken(); // string | null
188
+ session.tokens.verify(); // weryfikuje aktualny access token
189
+ session.tokens.verify(customToken); // weryfikuje dowolny token
190
+ session.tokens.clear(); // czyści tokeny z cookies i resetuje stan sesji
191
+ ```
192
+
193
+ ### SessionUser
194
+
195
+ ```typescript
196
+ type SessionUser<Payload> = {
197
+ id: string; // ID użytkownika
198
+ sessionId: string; // ID sesji
199
+ projectId: string; // ID projektu
200
+ role: "guest" | "user";
201
+ isGuest: boolean;
202
+ challenges: Challenge[]; // np. ["verifyTwoFa", "setPassword"]
203
+ payload: Payload; // custom claims z tokena
204
+ raw: AccessTokenPayload; // surowy payload JWT
205
+ };
206
+ ```
207
+
208
+ ## Low-level API
209
+
210
+ Oprócz stanowej sesji, `createAuthticon()` udostępnia niskopoziomowe klienty API, które nie zarządzają stanem ani cookies.
211
+
212
+ ### `authticon.auth()` — klient publiczny (bez autoryzacji)
213
+
214
+ Bezstanowy klient do endpointów niewymagających tokenu:
215
+
216
+ ```typescript
217
+ const auth = authticon.auth();
218
+
219
+ await auth.login({ email: "user@example.com", password: "secret" });
220
+ await auth.register({ email: "user@example.com", password: "secret" });
221
+ await auth.forgotPassword({ email: "user@example.com" });
222
+ await auth.loginByMagicLink({ token: "..." });
223
+ await auth.verifyEmail({ token: "..." });
224
+ await auth.createGuestUser({ ... });
225
+ await auth.acceptInvitation({ token: "...", password: "..." });
226
+ await auth.resendConfirmation({ email: "..." });
227
+ ```
228
+
229
+ > **Uwaga:** Te metody zwracają surowe dane z API (np. tokeny). Zarządzanie cookies/stanem leży po stronie wywołującego.
230
+
231
+ ### `authticon.admin(options)` — klient administracyjny (tylko Node.js)
232
+
233
+ Wymaga klucza API. Służy do operacji administracyjnych:
234
+
235
+ ```typescript
236
+ const admin = authticon.admin({ apiKey: "your-api-key" });
237
+
238
+ await admin.listUsers({ page: 1 });
239
+ await admin.createUser({ email: "new@example.com", password: "..." });
240
+ await admin.getUser("user-id");
241
+ await admin.updateUser("user-id", { ... });
242
+ await admin.deleteUser("user-id");
243
+ await admin.loginAs({ userId: "user-id" });
244
+ await admin.sendMagicLink({ email: "user@example.com", url: "https://example.com/login" });
245
+
246
+
247
+ // Role
248
+ await admin.createUserRole("user-id", { ... });
249
+ await admin.listUserRoles("user-id");
250
+ await admin.updateUserRole("user-id", "role-id", { ... });
251
+ await admin.deleteUserRole("user-id", "role-id");
252
+
253
+ // Magic link
254
+ await admin.sendMagicLink({ email: "user@example.com" });
255
+
256
+ // SMS
257
+ await admin.sendSmsCode("user-id");
258
+ await admin.verifySms("user-id", { code: "123456" });
259
+
260
+ // Dostępność
261
+ await admin.isEmailAvailable("user@example.com"); // boolean
262
+ await admin.isPhoneAvailable("+48123456789"); // boolean
263
+
264
+ // Test email
265
+ await admin.testEmail({ ... });
266
+ ```
267
+
268
+ ### `authticon.tokens` (tylko Node.js)
269
+
270
+ Bezpośredni dostęp do weryfikatora tokenów na poziomie instancji:
271
+
272
+ ```typescript
273
+ const payload = await authticon.tokens.verify(accessToken);
274
+ authticon.tokens.clearKeyCache(); // czyści cache kluczy JWKS
275
+ ```
276
+
277
+ ## Cookie adaptery
278
+
279
+ ### Node.js — `createNodeCookieStorageAdapter`
280
+
281
+ Parsuje cookies z `Request`, buforuje zmiany i pozwala je aplikować do `Response`:
282
+
283
+ ```typescript
284
+ import { createNodeCookieStorageAdapter } from "@authticon/client/node";
285
+
286
+ const cookies = createNodeCookieStorageAdapter(request);
287
+
288
+ // Po operacjach sesji:
289
+ cookies.applyToResponse(response);
290
+ // lub:
291
+ const setCookieHeaders = cookies.stringifySetCookies(); // string[]
292
+ ```
293
+
294
+ ### Przeglądarka — `createBrowserCookieAdapter`
295
+
296
+ Operuje bezpośrednio na `document.cookie`:
297
+
298
+ ```typescript
299
+ import { createBrowserCookieAdapter } from "@authticon/client/browser";
300
+
301
+ const cookies = createBrowserCookieAdapter();
302
+ ```
303
+
304
+ ### Własny adapter
305
+
306
+ Możesz zaimplementować interfejs `CookieAdapter`:
307
+
308
+ ```typescript
309
+ interface CookieAdapter {
310
+ get(name: string): string | null;
311
+ set(name: string, value: string, options: CookieSetOptions): void;
312
+ remove(name: string, options: CookieRemoveOptions): void;
313
+ }
314
+ ```
315
+
316
+ ## Token storage — konfiguracja cookies
317
+
318
+ ```typescript
319
+ type TokenStorageOptions = {
320
+ accessTokenName?: string; // domyślnie: "access_token"
321
+ refreshTokenName?: string; // domyślnie: "refresh_token"
322
+ deviceIdName?: string; // domyślnie: "device_id"
323
+ adminRefreshTokenName?: string; // domyślnie: "admin_refresh_token"
324
+ path?: string; // domyślnie: "/"
325
+ domain?: string;
326
+ secure?: boolean; // domyślnie: true
327
+ sameSite?: "Strict" | "Lax" | "None"; // domyślnie: "Lax"
328
+ accessTokenMaxAge?: number; // domyślnie: 900 (15 min)
329
+ refreshTokenMaxAge?: number; // domyślnie: 2592000 (30 dni)
330
+ };
331
+ ```
332
+
333
+ ## Obsługa błędów
334
+
335
+ Biblioteka definiuje dedykowaną hierarchię błędów:
336
+
337
+ ```typescript
338
+ import {
339
+ AuthticonError,
340
+ AuthticonApiError,
341
+ AuthticonTokenError,
342
+ isAuthticonError,
343
+ isAuthticonApiError,
344
+ isAuthticonTokenError,
345
+ } from "@authticon/client";
346
+ ```
347
+
348
+ | Klasa | Opis |
349
+ | --------------------- | -------------------------------------------------------------- |
350
+ | `AuthticonError` | Bazowy błąd (np. brak tokenu, użytkownik niezalogowany) |
351
+ | `AuthticonApiError` | Błąd odpowiedzi API (zawiera `statusCode` i `response`) |
352
+ | `AuthticonTokenError` | Błąd weryfikacji JWT (zawiera `code` i oryginalny `joseError`) |
353
+
354
+ ```typescript
355
+ try {
356
+ const user = session.requireUser();
357
+ } catch (error) {
358
+ if (isAuthticonApiError(error)) {
359
+ console.log(error.statusCode); // np. 401
360
+ }
361
+ if (isAuthticonTokenError(error, "ERR_JWT_EXPIRED")) {
362
+ // Token wygasł
363
+ }
364
+ }
365
+ ```
366
+
367
+ ## Typowanie custom payloadu
368
+
369
+ Biblioteka wspiera generyczne typowanie payloadu JWT:
370
+
371
+ ```typescript
372
+ type MyPayload = {
373
+ organizationId: string;
374
+ permissions: string[];
375
+ };
376
+
377
+ const authticon = createAuthticon<MyPayload>({
378
+ projectId: "...",
379
+ });
380
+
381
+ const session = await authticon.session({ request });
382
+ const user = session.getUser();
383
+
384
+ user?.payload.organizationId; // string
385
+ user?.payload.permissions; // string[]
386
+ ```
387
+
388
+ ## Licencja
389
+
390
+ MIT
@@ -0,0 +1,122 @@
1
+ import type { AuthticonOptions, CookieAdapter, DefaultAccessTokenPayload, TokenStorageOptions } from "./types.js";
2
+ export type CookieAdapterFactory<SessionOpts> = (options: SessionOpts) => CookieAdapter;
3
+ export declare const createBaseAuthticon: <Payload extends Record<string, any> = DefaultAccessTokenPayload, SessionOpts extends {
4
+ tokenStorage?: TokenStorageOptions;
5
+ } = {
6
+ tokenStorage?: TokenStorageOptions;
7
+ }>(options: AuthticonOptions, buildCookieAdapter: CookieAdapterFactory<SessionOpts>) => {
8
+ session: (sessionOptions: SessionOpts) => Promise<{
9
+ login: (params: import("./clients/generated/types.gen.js").LoginData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
10
+ loginByMagicLink: (params: import("./clients/generated/types.gen.js").LoginByMagicLinkData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
11
+ loginAs: (admin: import("./clients/admin.js").AdminClient, targetUserId: string) => Promise<import("./types.js").SessionUser<Payload> | null>;
12
+ backToAdmin: () => Promise<import("./types.js").SessionUser<Payload> | null>;
13
+ register: (params: import("./clients/generated/types.gen.js").RegisterData["body"]) => Promise<{
14
+ userId: string;
15
+ }>;
16
+ forgotPassword: (params: import("./clients/generated/types.gen.js").ForgotPasswordData["body"]) => Promise<null>;
17
+ verifyEmail: (token: string) => Promise<void>;
18
+ createGuest: (params: import("./clients/generated/types.gen.js").CreateGuestUserData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
19
+ acceptInvitation: (params: import("./clients/generated/types.gen.js").AcceptInvitationData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
20
+ resendConfirmation: (params: import("./clients/generated/types.gen.js").ResendEmailConfirmationData["body"]) => Promise<null>;
21
+ getMe: () => Promise<{
22
+ id: string;
23
+ email: string;
24
+ firstName: string | null;
25
+ lastName: string | null;
26
+ isGuest: boolean;
27
+ claims: unknown;
28
+ phone: string | null;
29
+ locale: string;
30
+ passwordUpdatedAt: string | null;
31
+ hasPassword: boolean;
32
+ twoFaEnabled: boolean;
33
+ twoFaType: "APP" | "EMAIL" | "PHONE";
34
+ isBlocked: boolean;
35
+ isBlockedUntil: string | null;
36
+ phoneVerified: boolean;
37
+ emailVerified: boolean;
38
+ roles: Array<{
39
+ id: string;
40
+ role: string;
41
+ group: string;
42
+ }>;
43
+ metadata: {
44
+ [key: string]: unknown;
45
+ };
46
+ }>;
47
+ updateUser: (params: import("./clients/generated/types.gen.js").UpdateMeData["body"]) => Promise<{
48
+ id: string;
49
+ }>;
50
+ updateMe: (params: import("./clients/generated/types.gen.js").UpdateMeData["body"]) => Promise<{
51
+ id: string;
52
+ }>;
53
+ getUser: () => import("./types.js").SessionUser<Payload> | null;
54
+ requireUser: () => import("./types.js").SessionUser<Payload>;
55
+ getFirstChallenge: () => import("./types.js").Challenge | undefined;
56
+ isLoggedIn: () => boolean;
57
+ isLoggedInByAdmin: () => boolean;
58
+ logout: () => Promise<void>;
59
+ refresh: () => Promise<void>;
60
+ getDeviceId: () => string | null;
61
+ changeEmail: (params: import("./clients/generated/types.gen.js").ChangeEmailData["body"]) => Promise<null>;
62
+ changePassword: (params: import("./clients/generated/types.gen.js").ChangePasswordData["body"]) => Promise<null>;
63
+ setPassword: (params: import("./clients/generated/types.gen.js").SetPasswordData["body"]) => Promise<null>;
64
+ changePhone: (params: import("./clients/generated/types.gen.js").ChangePhoneData["body"]) => Promise<null>;
65
+ verifyPhone: (params: import("./clients/generated/types.gen.js").VerifyPhoneData["body"]) => Promise<null>;
66
+ getTwoFaSecret: () => Promise<{
67
+ secret: string;
68
+ uri: string;
69
+ }>;
70
+ enableTwoFa: (params: import("./clients/generated/types.gen.js").EnableTwoFaData["body"]) => Promise<void>;
71
+ disableTwoFa: (params: import("./clients/generated/types.gen.js").DisableTwoFaData["body"]) => Promise<void>;
72
+ sendTwoFaCode: (params: import("./clients/generated/types.gen.js").SendTwoFaCodeData["body"]) => Promise<void>;
73
+ verifyTwoFaCode: (code: string, remember?: boolean) => Promise<import("./types.js").SessionUser<Payload>>;
74
+ createInvitation: (params: import("./clients/generated/types.gen.js").CreateInvitationData["body"]) => Promise<{
75
+ id: string;
76
+ email: string;
77
+ token: string;
78
+ validTo: string;
79
+ role: string | null;
80
+ group: string | null;
81
+ returnUrl: string | null;
82
+ }>;
83
+ deleteInvitation: (params: import("./clients/generated/types.gen.js").DeleteInvitationData["path"]) => Promise<{
84
+ id: string;
85
+ }>;
86
+ tokens: {
87
+ getAccessToken: () => string | null;
88
+ getRefreshToken: () => string | null;
89
+ verify: (token?: string) => Promise<import("./types.js").AccessTokenPayload<Payload>>;
90
+ clear: () => void;
91
+ };
92
+ cookies: CookieAdapter;
93
+ }>;
94
+ auth: () => {
95
+ login: (params: import("./clients/generated/types.gen.js").LoginData["body"]) => Promise<{
96
+ accessToken: string;
97
+ refreshToken: string;
98
+ deviceId: string;
99
+ sessionId: string;
100
+ }>;
101
+ loginByMagicLink: (params: import("./clients/generated/types.gen.js").LoginByMagicLinkData["body"]) => Promise<{
102
+ accessToken: string;
103
+ refreshToken: string;
104
+ deviceId: string;
105
+ sessionId: string;
106
+ }>;
107
+ register: (params: import("./clients/generated/types.gen.js").RegisterData["body"]) => Promise<{
108
+ userId: string;
109
+ }>;
110
+ forgotPassword: (params: import("./clients/generated/types.gen.js").ForgotPasswordData["body"]) => Promise<null>;
111
+ createGuestUser: (params: import("./clients/generated/types.gen.js").CreateGuestUserData["body"]) => Promise<{
112
+ token: string;
113
+ }>;
114
+ acceptInvitation: (params: import("./clients/generated/types.gen.js").AcceptInvitationData["body"]) => Promise<{
115
+ accessToken: string;
116
+ refreshToken: string;
117
+ }>;
118
+ verifyEmail: (params: import("./clients/generated/types.gen.js").VerifyEmailData["body"]) => Promise<void>;
119
+ resendConfirmation: (params: import("./clients/generated/types.gen.js").ResendEmailConfirmationData["body"]) => Promise<null>;
120
+ };
121
+ };
122
+ //# sourceMappingURL=authticon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authticon.d.ts","sourceRoot":"","sources":["../src/authticon.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAAI,CAC9C,OAAO,EAAE,WAAW,KACjB,aAAa,CAAC;AAEnB,eAAO,MAAM,mBAAmB,GAC9B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,yBAAyB,EAC/D,WAAW,SAAS;IAAE,YAAY,CAAC,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAC3D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,EAED,SAAS,gBAAgB,EACzB,oBAAoB,oBAAoB,CAAC,WAAW,CAAC;8BAoBzB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcxC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { createAuthClient } from "./clients/auth.js";
2
+ import { createSession } from "./session.js";
3
+ import { createTokenVerifier } from "./tokens.js";
4
+ const DEFAULT_BASE_URL = "https://authticon.com";
5
+ export const createBaseAuthticon = (options, buildCookieAdapter) => {
6
+ const baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
7
+ const jwksUrl = options.jwksUrl ?? `${baseUrl}/.well-known/jwks.json`;
8
+ const verifier = createTokenVerifier(jwksUrl, options.jwksCacheTtlMs, options.logger?.child({ authticon: "token-verifier" }), options.cache);
9
+ const deps = {
10
+ projectId: options.projectId,
11
+ baseUrl,
12
+ verifier,
13
+ logger: options.logger,
14
+ };
15
+ return {
16
+ session: (sessionOptions) => createSession(deps, buildCookieAdapter(sessionOptions), sessionOptions.tokenStorage),
17
+ auth: () => createAuthClient({
18
+ projectId: options.projectId,
19
+ baseUrl,
20
+ logger: options.logger,
21
+ }),
22
+ };
23
+ };
24
+ //# sourceMappingURL=authticon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authticon.js","sourceRoot":"","sources":["../src/authticon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAA0B,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQlD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAMjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAMjC,OAAyB,EACzB,kBAAqD,EACrD,EAAE;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,OAAO,wBAAwB,CAAC;IAEtE,MAAM,QAAQ,GAAG,mBAAmB,CAClC,OAAO,EACP,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EACtD,OAAO,CAAC,KAAK,CACd,CAAC;IAEF,MAAM,IAAI,GAAsB;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO;QACP,QAAQ;QACR,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,cAA2B,EAAE,EAAE,CACvC,aAAa,CACX,IAAI,EACJ,kBAAkB,CAAC,cAAc,CAAC,EAClC,cAAc,CAAC,YAAY,CAC5B;QAEH,IAAI,EAAE,GAAG,EAAE,CACT,gBAAgB,CAAC;YACf,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;KACL,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,128 @@
1
+ import type { AuthticonOptions, CookieAdapter, DefaultAccessTokenPayload, TokenStorageOptions } from "./types.js";
2
+ export type BrowserSessionOptions = {
3
+ readonly cookies?: CookieAdapter;
4
+ readonly tokenStorage?: TokenStorageOptions;
5
+ };
6
+ export declare const createAuthticon: <Payload extends Record<string, any> = DefaultAccessTokenPayload>(options: AuthticonOptions) => {
7
+ password: {
8
+ encrypt: (password: string) => Promise<string>;
9
+ };
10
+ session: (sessionOptions: BrowserSessionOptions) => Promise<{
11
+ login: (params: import("./clients/generated/types.gen.js").LoginData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
12
+ loginByMagicLink: (params: import("./clients/generated/types.gen.js").LoginByMagicLinkData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
13
+ loginAs: (admin: import("./clients/admin.js").AdminClient, targetUserId: string) => Promise<import("./types.js").SessionUser<Payload> | null>;
14
+ backToAdmin: () => Promise<import("./types.js").SessionUser<Payload> | null>;
15
+ register: (params: import("./clients/generated/types.gen.js").RegisterData["body"]) => Promise<{
16
+ userId: string;
17
+ }>;
18
+ forgotPassword: (params: import("./clients/generated/types.gen.js").ForgotPasswordData["body"]) => Promise<null>;
19
+ verifyEmail: (token: string) => Promise<void>;
20
+ createGuest: (params: import("./clients/generated/types.gen.js").CreateGuestUserData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
21
+ acceptInvitation: (params: import("./clients/generated/types.gen.js").AcceptInvitationData["body"]) => Promise<import("./types.js").SessionUser<Payload>>;
22
+ resendConfirmation: (params: import("./clients/generated/types.gen.js").ResendEmailConfirmationData["body"]) => Promise<null>;
23
+ getMe: () => Promise<{
24
+ id: string;
25
+ email: string;
26
+ firstName: string | null;
27
+ lastName: string | null;
28
+ isGuest: boolean;
29
+ claims: unknown;
30
+ phone: string | null;
31
+ locale: string;
32
+ passwordUpdatedAt: string | null;
33
+ hasPassword: boolean;
34
+ twoFaEnabled: boolean;
35
+ twoFaType: "APP" | "EMAIL" | "PHONE";
36
+ isBlocked: boolean;
37
+ isBlockedUntil: string | null;
38
+ phoneVerified: boolean;
39
+ emailVerified: boolean;
40
+ roles: Array<{
41
+ id: string;
42
+ role: string;
43
+ group: string;
44
+ }>;
45
+ metadata: {
46
+ [key: string]: unknown;
47
+ };
48
+ }>;
49
+ updateUser: (params: import("./clients/generated/types.gen.js").UpdateMeData["body"]) => Promise<{
50
+ id: string;
51
+ }>;
52
+ updateMe: (params: import("./clients/generated/types.gen.js").UpdateMeData["body"]) => Promise<{
53
+ id: string;
54
+ }>;
55
+ getUser: () => import("./types.js").SessionUser<Payload> | null;
56
+ requireUser: () => import("./types.js").SessionUser<Payload>;
57
+ getFirstChallenge: () => import("./types.js").Challenge | undefined;
58
+ isLoggedIn: () => boolean;
59
+ isLoggedInByAdmin: () => boolean;
60
+ logout: () => Promise<void>;
61
+ refresh: () => Promise<void>;
62
+ getDeviceId: () => string | null;
63
+ changeEmail: (params: import("./clients/generated/types.gen.js").ChangeEmailData["body"]) => Promise<null>;
64
+ changePassword: (params: import("./clients/generated/types.gen.js").ChangePasswordData["body"]) => Promise<null>;
65
+ setPassword: (params: import("./clients/generated/types.gen.js").SetPasswordData["body"]) => Promise<null>;
66
+ changePhone: (params: import("./clients/generated/types.gen.js").ChangePhoneData["body"]) => Promise<null>;
67
+ verifyPhone: (params: import("./clients/generated/types.gen.js").VerifyPhoneData["body"]) => Promise<null>;
68
+ getTwoFaSecret: () => Promise<{
69
+ secret: string;
70
+ uri: string;
71
+ }>;
72
+ enableTwoFa: (params: import("./clients/generated/types.gen.js").EnableTwoFaData["body"]) => Promise<void>;
73
+ disableTwoFa: (params: import("./clients/generated/types.gen.js").DisableTwoFaData["body"]) => Promise<void>;
74
+ sendTwoFaCode: (params: import("./clients/generated/types.gen.js").SendTwoFaCodeData["body"]) => Promise<void>;
75
+ verifyTwoFaCode: (code: string, remember?: boolean) => Promise<import("./types.js").SessionUser<Payload>>;
76
+ createInvitation: (params: import("./clients/generated/types.gen.js").CreateInvitationData["body"]) => Promise<{
77
+ id: string;
78
+ email: string;
79
+ token: string;
80
+ validTo: string;
81
+ role: string | null;
82
+ group: string | null;
83
+ returnUrl: string | null;
84
+ }>;
85
+ deleteInvitation: (params: import("./clients/generated/types.gen.js").DeleteInvitationData["path"]) => Promise<{
86
+ id: string;
87
+ }>;
88
+ tokens: {
89
+ getAccessToken: () => string | null;
90
+ getRefreshToken: () => string | null;
91
+ verify: (token?: string) => Promise<import("./types.js").AccessTokenPayload<Payload>>;
92
+ clear: () => void;
93
+ };
94
+ cookies: CookieAdapter;
95
+ }>;
96
+ auth: () => {
97
+ login: (params: import("./clients/generated/types.gen.js").LoginData["body"]) => Promise<{
98
+ accessToken: string;
99
+ refreshToken: string;
100
+ deviceId: string;
101
+ sessionId: string;
102
+ }>;
103
+ loginByMagicLink: (params: import("./clients/generated/types.gen.js").LoginByMagicLinkData["body"]) => Promise<{
104
+ accessToken: string;
105
+ refreshToken: string;
106
+ deviceId: string;
107
+ sessionId: string;
108
+ }>;
109
+ register: (params: import("./clients/generated/types.gen.js").RegisterData["body"]) => Promise<{
110
+ userId: string;
111
+ }>;
112
+ forgotPassword: (params: import("./clients/generated/types.gen.js").ForgotPasswordData["body"]) => Promise<null>;
113
+ createGuestUser: (params: import("./clients/generated/types.gen.js").CreateGuestUserData["body"]) => Promise<{
114
+ token: string;
115
+ }>;
116
+ acceptInvitation: (params: import("./clients/generated/types.gen.js").AcceptInvitationData["body"]) => Promise<{
117
+ accessToken: string;
118
+ refreshToken: string;
119
+ }>;
120
+ verifyEmail: (params: import("./clients/generated/types.gen.js").VerifyEmailData["body"]) => Promise<void>;
121
+ resendConfirmation: (params: import("./clients/generated/types.gen.js").ResendEmailConfirmationData["body"]) => Promise<null>;
122
+ };
123
+ };
124
+ export { createBrowserCookieAdapter } from "./cookies/browser.js";
125
+ export * from "./errors.js";
126
+ export { createInMemoryCacheAdapter, createTokenStorage, createTokenVerifier, } from "./tokens.js";
127
+ export type * from "./types.js";
128
+ //# sourceMappingURL=browser.d.ts.map