@authticon/client 0.0.0-beta37 → 0.0.0-beta39

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 (263) hide show
  1. package/README.md +375 -0
  2. package/dist/TokenStorage.d.ts +6 -18
  3. package/dist/TokenStorage.d.ts.map +1 -1
  4. package/dist/TokenStorage.js +83 -135
  5. package/dist/TokenStorage.js.map +1 -1
  6. package/dist/TokenVerifier.d.ts +3 -10
  7. package/dist/TokenVerifier.d.ts.map +1 -1
  8. package/dist/TokenVerifier.js +39 -46
  9. package/dist/TokenVerifier.js.map +1 -1
  10. package/dist/admin.d.ts +2 -0
  11. package/dist/admin.d.ts.map +1 -0
  12. package/dist/admin.js +2 -0
  13. package/dist/admin.js.map +1 -0
  14. package/dist/adminClient.d.ts +104 -0
  15. package/dist/adminClient.d.ts.map +1 -0
  16. package/dist/adminClient.js +108 -0
  17. package/dist/adminClient.js.map +1 -0
  18. package/dist/apiClient.d.ts +8 -0
  19. package/dist/apiClient.d.ts.map +1 -0
  20. package/dist/apiClient.js +18 -0
  21. package/dist/apiClient.js.map +1 -0
  22. package/dist/authClient.d.ts +42 -0
  23. package/dist/authClient.d.ts.map +1 -0
  24. package/dist/authClient.js +75 -0
  25. package/dist/authClient.js.map +1 -0
  26. package/dist/authticon.d.ts +88 -0
  27. package/dist/authticon.d.ts.map +1 -0
  28. package/dist/authticon.js +24 -0
  29. package/dist/authticon.js.map +1 -0
  30. package/dist/browser.d.ts +91 -0
  31. package/dist/browser.d.ts.map +1 -0
  32. package/dist/browser.js +7 -0
  33. package/dist/browser.js.map +1 -0
  34. package/dist/clients/admin.d.ts +106 -0
  35. package/dist/clients/admin.d.ts.map +1 -0
  36. package/dist/clients/admin.js +126 -0
  37. package/dist/clients/admin.js.map +1 -0
  38. package/dist/clients/auth.d.ts +42 -0
  39. package/dist/clients/auth.d.ts.map +1 -0
  40. package/dist/clients/auth.js +74 -0
  41. package/dist/clients/auth.js.map +1 -0
  42. package/dist/clients/base.d.ts +8 -0
  43. package/dist/clients/base.d.ts.map +1 -0
  44. package/dist/clients/base.js +18 -0
  45. package/dist/clients/base.js.map +1 -0
  46. package/dist/clients/generated/client/client.gen.d.ts +3 -0
  47. package/dist/clients/generated/client/client.gen.d.ts.map +1 -0
  48. package/dist/clients/generated/client/client.gen.js +236 -0
  49. package/dist/clients/generated/client/client.gen.js.map +1 -0
  50. package/dist/clients/generated/client/index.d.ts +9 -0
  51. package/dist/clients/generated/client/index.d.ts.map +1 -0
  52. package/dist/clients/generated/client/index.js +7 -0
  53. package/dist/clients/generated/client/index.js.map +1 -0
  54. package/dist/clients/generated/client/types.gen.d.ts +118 -0
  55. package/dist/clients/generated/client/types.gen.d.ts.map +1 -0
  56. package/dist/clients/generated/client/types.gen.js +3 -0
  57. package/dist/clients/generated/client/types.gen.js.map +1 -0
  58. package/dist/clients/generated/client/utils.gen.d.ts +34 -0
  59. package/dist/clients/generated/client/utils.gen.d.ts.map +1 -0
  60. package/dist/clients/generated/client/utils.gen.js +229 -0
  61. package/dist/clients/generated/client/utils.gen.js.map +1 -0
  62. package/dist/clients/generated/client.gen.d.ts +13 -0
  63. package/dist/clients/generated/client.gen.d.ts.map +1 -0
  64. package/dist/clients/generated/client.gen.js +4 -0
  65. package/dist/clients/generated/client.gen.js.map +1 -0
  66. package/dist/clients/generated/core/auth.gen.d.ts +19 -0
  67. package/dist/clients/generated/core/auth.gen.d.ts.map +1 -0
  68. package/dist/clients/generated/core/auth.gen.js +15 -0
  69. package/dist/clients/generated/core/auth.gen.js.map +1 -0
  70. package/dist/clients/generated/core/bodySerializer.gen.d.ts +26 -0
  71. package/dist/clients/generated/core/bodySerializer.gen.d.ts.map +1 -0
  72. package/dist/clients/generated/core/bodySerializer.gen.js +58 -0
  73. package/dist/clients/generated/core/bodySerializer.gen.js.map +1 -0
  74. package/dist/clients/generated/core/params.gen.d.ts +44 -0
  75. package/dist/clients/generated/core/params.gen.d.ts.map +1 -0
  76. package/dist/clients/generated/core/params.gen.js +101 -0
  77. package/dist/clients/generated/core/params.gen.js.map +1 -0
  78. package/dist/clients/generated/core/pathSerializer.gen.d.ts +34 -0
  79. package/dist/clients/generated/core/pathSerializer.gen.d.ts.map +1 -0
  80. package/dist/clients/generated/core/pathSerializer.gen.js +107 -0
  81. package/dist/clients/generated/core/pathSerializer.gen.js.map +1 -0
  82. package/dist/clients/generated/core/queryKeySerializer.gen.d.ts +19 -0
  83. package/dist/clients/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  84. package/dist/clients/generated/core/queryKeySerializer.gen.js +93 -0
  85. package/dist/clients/generated/core/queryKeySerializer.gen.js.map +1 -0
  86. package/dist/clients/generated/core/serverSentEvents.gen.d.ts +72 -0
  87. package/dist/clients/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  88. package/dist/clients/generated/core/serverSentEvents.gen.js +134 -0
  89. package/dist/clients/generated/core/serverSentEvents.gen.js.map +1 -0
  90. package/dist/clients/generated/core/types.gen.d.ts +79 -0
  91. package/dist/clients/generated/core/types.gen.d.ts.map +1 -0
  92. package/dist/clients/generated/core/types.gen.js +3 -0
  93. package/dist/clients/generated/core/types.gen.js.map +1 -0
  94. package/dist/clients/generated/core/utils.gen.d.ts +20 -0
  95. package/dist/clients/generated/core/utils.gen.d.ts.map +1 -0
  96. package/dist/clients/generated/core/utils.gen.js +88 -0
  97. package/dist/clients/generated/core/utils.gen.js.map +1 -0
  98. package/dist/clients/generated/index.d.ts +3 -0
  99. package/dist/clients/generated/index.d.ts.map +1 -0
  100. package/dist/clients/generated/index.js +3 -0
  101. package/dist/clients/generated/index.js.map +1 -0
  102. package/dist/clients/generated/sdk.gen.d.ts +164 -0
  103. package/dist/clients/generated/sdk.gen.d.ts.map +1 -0
  104. package/dist/clients/generated/sdk.gen.js +415 -0
  105. package/dist/clients/generated/sdk.gen.js.map +1 -0
  106. package/dist/clients/generated/types.gen.d.ts +1234 -0
  107. package/dist/clients/generated/types.gen.d.ts.map +1 -0
  108. package/dist/clients/generated/types.gen.js +3 -0
  109. package/dist/clients/generated/types.gen.js.map +1 -0
  110. package/dist/clients/user.d.ts +44 -0
  111. package/dist/clients/user.d.ts.map +1 -0
  112. package/dist/clients/user.js +68 -0
  113. package/dist/clients/user.js.map +1 -0
  114. package/dist/cookies/browser.d.ts +3 -0
  115. package/dist/cookies/browser.d.ts.map +1 -0
  116. package/dist/cookies/browser.js +31 -0
  117. package/dist/cookies/browser.js.map +1 -0
  118. package/dist/cookies/node.d.ts +8 -0
  119. package/dist/cookies/node.d.ts.map +1 -0
  120. package/dist/cookies/node.js +50 -0
  121. package/dist/cookies/node.js.map +1 -0
  122. package/dist/createSessionUser.d.ts +3 -0
  123. package/dist/createSessionUser.d.ts.map +1 -0
  124. package/dist/createSessionUser.js +15 -0
  125. package/dist/createSessionUser.js.map +1 -0
  126. package/dist/errors.d.ts +3 -3
  127. package/dist/errors.d.ts.map +1 -1
  128. package/dist/errors.js +4 -4
  129. package/dist/errors.js.map +1 -1
  130. package/dist/generated/client/client.gen.d.ts.map +1 -1
  131. package/dist/generated/client/client.gen.js +151 -50
  132. package/dist/generated/client/client.gen.js.map +1 -1
  133. package/dist/generated/client/index.d.ts +2 -2
  134. package/dist/generated/client/index.d.ts.map +1 -1
  135. package/dist/generated/client/index.js +1 -1
  136. package/dist/generated/client/index.js.map +1 -1
  137. package/dist/generated/client/types.gen.d.ts +53 -24
  138. package/dist/generated/client/types.gen.d.ts.map +1 -1
  139. package/dist/generated/client/utils.gen.d.ts +25 -6
  140. package/dist/generated/client/utils.gen.d.ts.map +1 -1
  141. package/dist/generated/client/utils.gen.js +117 -57
  142. package/dist/generated/client/utils.gen.js.map +1 -1
  143. package/dist/generated/client.gen.js +1 -1
  144. package/dist/generated/index.d.ts +2 -2
  145. package/dist/generated/index.d.ts.map +1 -1
  146. package/dist/generated/index.js +1 -1
  147. package/dist/generated/index.js.map +1 -1
  148. package/dist/generated/sdk.gen.d.ts +149 -43
  149. package/dist/generated/sdk.gen.d.ts.map +1 -1
  150. package/dist/generated/sdk.gen.js +231 -153
  151. package/dist/generated/sdk.gen.js.map +1 -1
  152. package/dist/generated/types.gen.d.ts +613 -738
  153. package/dist/generated/types.gen.d.ts.map +1 -1
  154. package/dist/index.d.ts +1 -9
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +1 -8
  157. package/dist/index.js.map +1 -1
  158. package/dist/node.d.ts +169 -0
  159. package/dist/node.d.ts.map +1 -0
  160. package/dist/node.js +46 -0
  161. package/dist/node.js.map +1 -0
  162. package/dist/session.d.ts +57 -0
  163. package/dist/session.d.ts.map +1 -0
  164. package/dist/session.js +273 -0
  165. package/dist/session.js.map +1 -0
  166. package/dist/sessionClient.d.ts +53 -0
  167. package/dist/sessionClient.d.ts.map +1 -0
  168. package/dist/sessionClient.js +267 -0
  169. package/dist/sessionClient.js.map +1 -0
  170. package/dist/{TokenManager.d.ts → tokens.d.ts} +17 -22
  171. package/dist/tokens.d.ts.map +1 -0
  172. package/dist/tokens.js +188 -0
  173. package/dist/tokens.js.map +1 -0
  174. package/dist/types.d.ts +31 -5
  175. package/dist/types.d.ts.map +1 -1
  176. package/dist/userClient.d.ts +41 -0
  177. package/dist/userClient.d.ts.map +1 -0
  178. package/dist/userClient.js +64 -0
  179. package/dist/userClient.js.map +1 -0
  180. package/package.json +22 -8
  181. package/dist/Acccount.d.ts +0 -9
  182. package/dist/Acccount.d.ts.map +0 -1
  183. package/dist/Acccount.js +0 -22
  184. package/dist/Acccount.js.map +0 -1
  185. package/dist/Auth.d.ts +0 -29
  186. package/dist/Auth.d.ts.map +0 -1
  187. package/dist/Auth.js +0 -47
  188. package/dist/Auth.js.map +0 -1
  189. package/dist/Authticon.d.ts +0 -207
  190. package/dist/Authticon.d.ts.map +0 -1
  191. package/dist/Authticon.js +0 -127
  192. package/dist/Authticon.js.map +0 -1
  193. package/dist/BrowserCookieAdapter.d.ts +0 -13
  194. package/dist/BrowserCookieAdapter.d.ts.map +0 -1
  195. package/dist/BrowserCookieAdapter.js +0 -18
  196. package/dist/BrowserCookieAdapter.js.map +0 -1
  197. package/dist/BrowserCookieAdapter.test.d.ts +0 -2
  198. package/dist/BrowserCookieAdapter.test.d.ts.map +0 -1
  199. package/dist/BrowserCookieAdapter.test.js +0 -145
  200. package/dist/BrowserCookieAdapter.test.js.map +0 -1
  201. package/dist/Challange.d.ts +0 -8
  202. package/dist/Challange.d.ts.map +0 -1
  203. package/dist/Challange.js +0 -24
  204. package/dist/Challange.js.map +0 -1
  205. package/dist/CookieStorageAdapter.test.d.ts +0 -2
  206. package/dist/CookieStorageAdapter.test.d.ts.map +0 -1
  207. package/dist/CookieStorageAdapter.test.js +0 -137
  208. package/dist/CookieStorageAdapter.test.js.map +0 -1
  209. package/dist/InMemoryCacheAdapter.test.d.ts +0 -2
  210. package/dist/InMemoryCacheAdapter.test.d.ts.map +0 -1
  211. package/dist/InMemoryCacheAdapter.test.js +0 -38
  212. package/dist/InMemoryCacheAdapter.test.js.map +0 -1
  213. package/dist/RemixCookieAdapter.d.ts +0 -12
  214. package/dist/RemixCookieAdapter.d.ts.map +0 -1
  215. package/dist/RemixCookieAdapter.js +0 -25
  216. package/dist/RemixCookieAdapter.js.map +0 -1
  217. package/dist/RemixCookieAdapter.test.d.ts +0 -2
  218. package/dist/RemixCookieAdapter.test.d.ts.map +0 -1
  219. package/dist/RemixCookieAdapter.test.js +0 -136
  220. package/dist/RemixCookieAdapter.test.js.map +0 -1
  221. package/dist/Session.d.ts +0 -10
  222. package/dist/Session.d.ts.map +0 -1
  223. package/dist/Session.js +0 -16
  224. package/dist/Session.js.map +0 -1
  225. package/dist/TokenManager.d.ts.map +0 -1
  226. package/dist/TokenManager.js +0 -49
  227. package/dist/TokenManager.js.map +0 -1
  228. package/dist/TokenManager.test.d.ts +0 -2
  229. package/dist/TokenManager.test.d.ts.map +0 -1
  230. package/dist/TokenManager.test.js +0 -120
  231. package/dist/TokenManager.test.js.map +0 -1
  232. package/dist/TokenStorage.test.d.ts +0 -2
  233. package/dist/TokenStorage.test.d.ts.map +0 -1
  234. package/dist/TokenStorage.test.js +0 -318
  235. package/dist/TokenStorage.test.js.map +0 -1
  236. package/dist/TokenVerifier.test.d.ts +0 -2
  237. package/dist/TokenVerifier.test.d.ts.map +0 -1
  238. package/dist/TokenVerifier.test.js +0 -139
  239. package/dist/TokenVerifier.test.js.map +0 -1
  240. package/dist/TwoFa.d.ts +0 -26
  241. package/dist/TwoFa.d.ts.map +0 -1
  242. package/dist/TwoFa.js +0 -55
  243. package/dist/TwoFa.js.map +0 -1
  244. package/dist/User.d.ts +0 -25
  245. package/dist/User.d.ts.map +0 -1
  246. package/dist/User.js +0 -27
  247. package/dist/User.js.map +0 -1
  248. package/dist/Users.d.ts +0 -68
  249. package/dist/Users.d.ts.map +0 -1
  250. package/dist/Users.js +0 -64
  251. package/dist/Users.js.map +0 -1
  252. package/dist/cookie-utils.d.ts +0 -5
  253. package/dist/cookie-utils.d.ts.map +0 -1
  254. package/dist/cookie-utils.js +0 -33
  255. package/dist/cookie-utils.js.map +0 -1
  256. package/dist/errors.test.d.ts +0 -2
  257. package/dist/errors.test.d.ts.map +0 -1
  258. package/dist/errors.test.js +0 -99
  259. package/dist/errors.test.js.map +0 -1
  260. package/dist/user.d.ts +0 -117
  261. package/dist/user.d.ts.map +0 -1
  262. package/dist/user.js +0 -84
  263. package/dist/user.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,375 @@
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
+ | `sendMagicLink(params)` | Wysyła magic link na email. |
129
+ | `loginWithMagicLink(params)` | Weryfikuje magic link i loguje użytkownika. Zwraca `SessionUser`. |
130
+ | `forgotPassword(params)` | Inicjuje reset hasła. |
131
+ | `verifyEmail(params)` | Weryfikuje email. |
132
+ | `createGuest(params)` | Tworzy użytkownika-gościa. Zwraca `SessionUser`. |
133
+ | `acceptInvitation(params)` | Akceptuje zaproszenie. Zwraca `SessionUser`. |
134
+ | `resendConfirmation(params)` | Ponownie wysyła email potwierdzający. |
135
+ | `logout()` | Wylogowuje (server-side + czyści cookies). |
136
+ | `refresh()` | Wymusza odświeżenie tokenów. |
137
+
138
+ #### Stan użytkownika
139
+
140
+ | Metoda | Opis |
141
+ |---|---|
142
+ | `getUser()` | Zwraca `SessionUser \| null`. |
143
+ | `requireUser()` | Zwraca `SessionUser` lub rzuca `AuthticonError`. |
144
+ | `hasSession()` | Zwraca `boolean` — czy istnieje access token. |
145
+ | `getFirstChallenge()` | Zwraca pierwszy challenge (np. `"verifyTwoFa"`, `"setPassword"`) lub `undefined`. |
146
+
147
+ #### Zarządzanie kontem
148
+
149
+ | Metoda | Opis |
150
+ |---|---|
151
+ | `changeEmail(params)` | Zmiana emaila. |
152
+ | `changePassword(params)` | Zmiana hasła. |
153
+ | `setPassword(params)` | Ustawienie hasła (np. po resecie). |
154
+ | `changePhone(params)` | Zmiana numeru telefonu. |
155
+ | `verifyPhone(params)` | Weryfikacja numeru telefonu. |
156
+
157
+ #### Dwuskładnikowe uwierzytelnianie (2FA)
158
+
159
+ | Metoda | Opis |
160
+ |---|---|
161
+ | `getTwoFaSecret()` | Pobiera sekret 2FA (do wyświetlenia QR code). |
162
+ | `enableTwoFa(params)` | Włącza 2FA. |
163
+ | `disableTwoFa(params)` | Wyłącza 2FA. |
164
+ | `sendTwoFaCode(params)` | Wysyła kod 2FA. |
165
+ | `completeTwoFaChallenge(code, remember?)` | Weryfikuje kod 2FA i aktualizuje sesję. |
166
+
167
+ #### Zaproszenia
168
+
169
+ | Metoda | Opis |
170
+ |---|---|
171
+ | `createInvitation(params)` | Tworzy zaproszenie. |
172
+ | `deleteInvitation(params)` | Usuwa zaproszenie. |
173
+
174
+ #### Tokeny
175
+
176
+ Obiekt `session.tokens` daje bezpośredni dostęp do tokenów:
177
+
178
+ ```typescript
179
+ session.tokens.getAccessToken(); // string | null
180
+ session.tokens.getRefreshToken(); // string | null
181
+ session.tokens.verify(); // weryfikuje aktualny access token
182
+ session.tokens.verify(customToken); // weryfikuje dowolny token
183
+ session.tokens.clear(); // czyści tokeny z cookies i resetuje stan sesji
184
+ ```
185
+
186
+ ### SessionUser
187
+
188
+ ```typescript
189
+ type SessionUser<Payload> = {
190
+ id: string; // ID użytkownika
191
+ sessionId: string; // ID sesji
192
+ projectId: string; // ID projektu
193
+ role: "guest" | "user";
194
+ isGuest: boolean;
195
+ challenges: Challenge[]; // np. ["verifyTwoFa", "setPassword"]
196
+ payload: Payload; // custom claims z tokena
197
+ raw: AccessTokenPayload; // surowy payload JWT
198
+ };
199
+ ```
200
+
201
+ ## Low-level API
202
+
203
+ Oprócz stanowej sesji, `createAuthticon()` udostępnia niskopoziomowe klienty API, które nie zarządzają stanem ani cookies.
204
+
205
+ ### `authticon.auth()` — klient publiczny (bez autoryzacji)
206
+
207
+ Bezstanowy klient do endpointów niewymagających tokenu:
208
+
209
+ ```typescript
210
+ const auth = authticon.auth();
211
+
212
+ await auth.login({ email: "user@example.com", password: "secret" });
213
+ await auth.register({ email: "user@example.com", password: "secret" });
214
+ await auth.forgotPassword({ email: "user@example.com" });
215
+ await auth.sendMagicLink({ email: "user@example.com" });
216
+ await auth.verifyMagicLink({ token: "..." });
217
+ await auth.verifyEmail({ token: "..." });
218
+ await auth.createGuestUser({ ... });
219
+ await auth.acceptInvitation({ token: "...", password: "..." });
220
+ await auth.resendConfirmation({ email: "..." });
221
+ ```
222
+
223
+ > **Uwaga:** Te metody zwracają surowe dane z API (np. tokeny). Zarządzanie cookies/stanem leży po stronie wywołującego.
224
+
225
+ ### `authticon.admin(options)` — klient administracyjny (tylko Node.js)
226
+
227
+ Wymaga klucza API. Służy do operacji administracyjnych:
228
+
229
+ ```typescript
230
+ const admin = authticon.admin({ apiKey: "your-api-key" });
231
+
232
+ await admin.listUsers({ page: 1 });
233
+ await admin.createUser({ email: "new@example.com", password: "..." });
234
+ await admin.getUser("user-id");
235
+ await admin.updateUser("user-id", { ... });
236
+ await admin.deleteUser("user-id");
237
+ await admin.loginAs({ userId: "user-id" });
238
+
239
+ // Role
240
+ await admin.createUserRole("user-id", { ... });
241
+ await admin.listUserRoles("user-id");
242
+ await admin.updateUserRole("user-id", "role-id", { ... });
243
+ await admin.deleteUserRole("user-id", "role-id");
244
+
245
+ // SMS
246
+ await admin.sendSmsCode("user-id");
247
+ await admin.verifySms("user-id", { code: "123456" });
248
+
249
+ // Test email
250
+ await admin.testEmail({ ... });
251
+ ```
252
+
253
+ ### `authticon.tokens` (tylko Node.js)
254
+
255
+ Bezpośredni dostęp do weryfikatora tokenów na poziomie instancji:
256
+
257
+ ```typescript
258
+ const payload = await authticon.tokens.verify(accessToken);
259
+ authticon.tokens.clearKeyCache(); // czyści cache kluczy JWKS
260
+ ```
261
+
262
+ ## Cookie adaptery
263
+
264
+ ### Node.js — `createNodeCookieStorageAdapter`
265
+
266
+ Parsuje cookies z `Request`, buforuje zmiany i pozwala je aplikować do `Response`:
267
+
268
+ ```typescript
269
+ import { createNodeCookieStorageAdapter } from "@authticon/client/node";
270
+
271
+ const cookies = createNodeCookieStorageAdapter(request);
272
+
273
+ // Po operacjach sesji:
274
+ cookies.applyToResponse(response);
275
+ // lub:
276
+ const setCookieHeaders = cookies.stringifySetCookies(); // string[]
277
+ ```
278
+
279
+ ### Przeglądarka — `createBrowserCookieAdapter`
280
+
281
+ Operuje bezpośrednio na `document.cookie`:
282
+
283
+ ```typescript
284
+ import { createBrowserCookieAdapter } from "@authticon/client/browser";
285
+
286
+ const cookies = createBrowserCookieAdapter();
287
+ ```
288
+
289
+ ### Własny adapter
290
+
291
+ Możesz zaimplementować interfejs `CookieAdapter`:
292
+
293
+ ```typescript
294
+ interface CookieAdapter {
295
+ get(name: string): string | null;
296
+ set(name: string, value: string, options: CookieSetOptions): void;
297
+ remove(name: string, options: CookieRemoveOptions): void;
298
+ }
299
+ ```
300
+
301
+ ## Token storage — konfiguracja cookies
302
+
303
+ ```typescript
304
+ type TokenStorageOptions = {
305
+ accessTokenName?: string; // domyślnie: "access_token"
306
+ refreshTokenName?: string; // domyślnie: "refresh_token"
307
+ deviceIdName?: string; // domyślnie: "device_id"
308
+ adminRefreshTokenName?: string; // domyślnie: "admin_refresh_token"
309
+ path?: string; // domyślnie: "/"
310
+ domain?: string;
311
+ secure?: boolean; // domyślnie: true
312
+ sameSite?: "Strict" | "Lax" | "None"; // domyślnie: "Lax"
313
+ accessTokenMaxAge?: number; // domyślnie: 900 (15 min)
314
+ refreshTokenMaxAge?: number; // domyślnie: 2592000 (30 dni)
315
+ };
316
+ ```
317
+
318
+ ## Obsługa błędów
319
+
320
+ Biblioteka definiuje dedykowaną hierarchię błędów:
321
+
322
+ ```typescript
323
+ import {
324
+ AuthticonError,
325
+ AuthticonApiError,
326
+ AuthticonTokenError,
327
+ isAuthticonError,
328
+ isAuthticonApiError,
329
+ isAuthticonTokenError,
330
+ } from "@authticon/client";
331
+ ```
332
+
333
+ | Klasa | Opis |
334
+ |---|---|
335
+ | `AuthticonError` | Bazowy błąd (np. brak tokenu, użytkownik niezalogowany) |
336
+ | `AuthticonApiError` | Błąd odpowiedzi API (zawiera `statusCode` i `response`) |
337
+ | `AuthticonTokenError` | Błąd weryfikacji JWT (zawiera `code` i oryginalny `joseError`) |
338
+
339
+ ```typescript
340
+ try {
341
+ const user = session.requireUser();
342
+ } catch (error) {
343
+ if (isAuthticonApiError(error)) {
344
+ console.log(error.statusCode); // np. 401
345
+ }
346
+ if (isAuthticonTokenError(error, "ERR_JWT_EXPIRED")) {
347
+ // Token wygasł
348
+ }
349
+ }
350
+ ```
351
+
352
+ ## Typowanie custom payloadu
353
+
354
+ Biblioteka wspiera generyczne typowanie payloadu JWT:
355
+
356
+ ```typescript
357
+ type MyPayload = {
358
+ organizationId: string;
359
+ permissions: string[];
360
+ };
361
+
362
+ const authticon = createAuthticon<MyPayload>({
363
+ projectId: "...",
364
+ });
365
+
366
+ const session = await authticon.session({ request });
367
+ const user = session.getUser();
368
+
369
+ user?.payload.organizationId; // string
370
+ user?.payload.permissions; // string[]
371
+ ```
372
+
373
+ ## Licencja
374
+
375
+ MIT
@@ -1,33 +1,21 @@
1
1
  import type { Logger } from "pino";
2
2
  import type { CookieAdapter, TokenPair, TokenStorageOptions } from "./types.js";
3
- export declare class TokenStorage {
4
- private readonly cookies;
5
- private readonly logger?;
6
- private readonly accessName;
7
- private readonly refreshName;
8
- private readonly deviceIdName;
9
- private readonly rememberName;
10
- private readonly adminRefreshName;
11
- private readonly setOptions;
12
- private readonly removeOptions;
13
- constructor(cookies: CookieAdapter, options?: TokenStorageOptions, logger?: Logger | undefined);
3
+ export type TokenStorage = {
14
4
  readonly save: (tokens: TokenPair) => void;
15
5
  readonly clear: () => void;
16
6
  readonly getAccessToken: () => string | null;
17
7
  readonly getRefreshToken: () => string | null;
18
8
  readonly getDeviceId: () => string | null;
19
- readonly getRememberToken: () => string | null;
20
9
  readonly getAdminRefreshToken: () => string | null;
21
10
  readonly setAccessToken: (accessToken: string) => void;
22
- readonly setRememberToken: (rememberToken: string) => void;
23
11
  readonly setRefreshToken: (refreshToken: string) => void;
24
12
  readonly setAdminRefreshToken: (adminRefreshToken: string) => void;
25
13
  readonly setDeviceId: (deviceId: string) => void;
26
- readonly clearAdminRefreshToken: () => void;
27
- readonly clearDeviceId: () => void;
28
- readonly clearRememberToken: () => void;
29
- readonly clearRefreshToken: () => void;
30
14
  readonly clearAccessToken: () => void;
15
+ readonly clearRefreshToken: () => void;
16
+ readonly clearDeviceId: () => void;
17
+ readonly clearAdminRefreshToken: () => void;
31
18
  readonly getAll: () => TokenPair | null;
32
- }
19
+ };
20
+ export declare const createTokenStorage: (cookies: CookieAdapter, options?: TokenStorageOptions, logger?: Logger) => TokenStorage;
33
21
  //# sourceMappingURL=TokenStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../src/TokenStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EACV,aAAa,EAGb,SAAS,EACT,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAYpB,qBAAa,YAAY;IAgBrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAjB1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAMzB;IACF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAGjC,OAAO,EAAE,aAAa,EACvC,OAAO,GAAE,mBAAwB,EAChB,MAAM,CAAC,EAAE,MAAM,YAAA;IA0DlC,QAAQ,CAAC,IAAI,GAAI,QAAQ,SAAS,KAAG,IAAI,CAYvC;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAMvB;IAEF,QAAQ,CAAC,cAAc,sBAA2C;IAElE,QAAQ,CAAC,eAAe,sBAA4C;IAEpE,QAAQ,CAAC,WAAW,sBAA6C;IAEjE,QAAQ,CAAC,gBAAgB,sBAA6C;IAEtE,QAAQ,CAAC,oBAAoB,sBACa;IAE1C,QAAQ,CAAC,cAAc,GAAI,aAAa,MAAM,KAAG,IAAI,CAMnD;IAEF,QAAQ,CAAC,gBAAgB,GAAI,eAAe,MAAM,KAAG,IAAI,CAUvD;IAEF,QAAQ,CAAC,eAAe,GAAI,cAAc,MAAM,KAAG,IAAI,CAMrD;IAEF,QAAQ,CAAC,oBAAoB,GAAI,mBAAmB,MAAM,KAAG,IAAI,CAU/D;IAEF,QAAQ,CAAC,WAAW,GAAI,UAAU,MAAM,KAAG,IAAI,CAG7C;IAEF,QAAQ,CAAC,sBAAsB,QAAO,IAAI,CAGxC;IAEF,QAAQ,CAAC,aAAa,QAAO,IAAI,CAG/B;IAEF,QAAQ,CAAC,kBAAkB,QAAO,IAAI,CAGpC;IAEF,QAAQ,CAAC,iBAAiB,QAAO,IAAI,CAGnC;IAEF,QAAQ,CAAC,gBAAgB,QAAO,IAAI,CAGlC;IAEF,QAAQ,CAAC,MAAM,QAAO,SAAS,GAAG,IAAI,CAWpC;CACH"}
1
+ {"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../src/TokenStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EACV,aAAa,EAGb,SAAS,EACT,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAUpB,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,aAAa,EACtB,UAAS,mBAAwB,EACjC,SAAS,MAAM,KACd,YAuGF,CAAC"}
@@ -1,153 +1,101 @@
1
1
  const DEFAULT_ACCESS_TOKEN_NAME = "access_token";
2
2
  const DEFAULT_REFRESH_TOKEN_NAME = "refresh_token";
3
3
  const DEFAULT_DEVICE_ID_NAME = "device_id";
4
- const DEFAULT_REMEMBER_TOKEN_NAME = "remember_token";
5
4
  const DEFAULT_ADMIN_REFRESH_TOKEN_NAME = "admin_refresh_token";
6
5
  const DEFAULT_ACCESS_TOKEN_MAX_AGE = 900;
7
6
  const DEFAULT_REFRESH_TOKEN_MAX_AGE = 2_592_000;
8
- const DEFAULT_REMEMBER_TOKEN_MAX_AGE = 7_776_000;
9
7
  const DEFAULT_ADMIN_REFRESH_TOKEN_MAX_AGE = 2_592_000;
10
- export class TokenStorage {
11
- cookies;
12
- logger;
13
- accessName;
14
- refreshName;
15
- deviceIdName;
16
- rememberName;
17
- adminRefreshName;
18
- setOptions;
19
- removeOptions;
20
- constructor(cookies, options = {}, logger) {
21
- this.cookies = cookies;
22
- this.logger = logger;
23
- this.accessName = options.accessTokenName ?? DEFAULT_ACCESS_TOKEN_NAME;
24
- this.refreshName = options.refreshTokenName ?? DEFAULT_REFRESH_TOKEN_NAME;
25
- this.deviceIdName = options.deviceIdName ?? DEFAULT_DEVICE_ID_NAME;
26
- this.rememberName =
27
- options.rememberTokenName ?? DEFAULT_REMEMBER_TOKEN_NAME;
28
- this.adminRefreshName =
29
- options.adminRefreshTokenName ?? DEFAULT_ADMIN_REFRESH_TOKEN_NAME;
30
- const path = options.path ?? "/";
31
- const domain = options.domain;
32
- const secure = options.secure ?? true;
33
- const sameSite = options.sameSite ?? "Lax";
34
- this.setOptions = {
35
- access: {
36
- path,
37
- domain,
38
- secure,
39
- sameSite,
40
- maxAge: options.accessTokenMaxAge ?? DEFAULT_ACCESS_TOKEN_MAX_AGE,
41
- },
42
- refresh: {
43
- path,
44
- domain,
45
- secure,
46
- sameSite,
47
- maxAge: options.refreshTokenMaxAge ?? DEFAULT_REFRESH_TOKEN_MAX_AGE,
48
- },
49
- deviceId: {
50
- path,
51
- domain,
52
- secure,
53
- sameSite,
54
- maxAge: options.refreshTokenMaxAge ?? DEFAULT_REFRESH_TOKEN_MAX_AGE,
55
- },
56
- remember: {
57
- path,
58
- domain,
59
- secure,
60
- sameSite,
61
- maxAge: options.rememberTokenMaxAge ?? DEFAULT_REMEMBER_TOKEN_MAX_AGE,
62
- },
63
- adminRefresh: {
64
- path,
65
- domain,
66
- secure,
67
- sameSite,
68
- maxAge: options.adminRefreshTokenMaxAge ??
69
- DEFAULT_ADMIN_REFRESH_TOKEN_MAX_AGE,
70
- },
71
- };
72
- this.removeOptions = { path, domain };
73
- }
74
- save = (tokens) => {
75
- this.setAccessToken(tokens.accessToken);
76
- this.setRefreshToken(tokens.refreshToken);
77
- if (tokens.deviceId) {
78
- this.setDeviceId(tokens.deviceId);
79
- }
80
- if (tokens.rememberToken) {
81
- this.setRememberToken(tokens.rememberToken);
82
- }
83
- if (tokens.adminRefreshToken) {
84
- this.setAdminRefreshToken(tokens.adminRefreshToken);
85
- }
8
+ export const createTokenStorage = (cookies, options = {}, logger) => {
9
+ const accessName = options.accessTokenName ?? DEFAULT_ACCESS_TOKEN_NAME;
10
+ const refreshName = options.refreshTokenName ?? DEFAULT_REFRESH_TOKEN_NAME;
11
+ const deviceIdName = options.deviceIdName ?? DEFAULT_DEVICE_ID_NAME;
12
+ const adminRefreshName = options.adminRefreshTokenName ?? DEFAULT_ADMIN_REFRESH_TOKEN_NAME;
13
+ const path = options.path ?? "/";
14
+ const domain = options.domain;
15
+ const secure = options.secure ?? true;
16
+ const sameSite = options.sameSite ?? "Lax";
17
+ const setOpts = {
18
+ access: { path, domain, secure, sameSite, maxAge: options.accessTokenMaxAge ?? DEFAULT_ACCESS_TOKEN_MAX_AGE },
19
+ refresh: { path, domain, secure, sameSite, maxAge: options.refreshTokenMaxAge ?? DEFAULT_REFRESH_TOKEN_MAX_AGE },
20
+ deviceId: { path, domain, secure, sameSite, maxAge: options.refreshTokenMaxAge ?? DEFAULT_REFRESH_TOKEN_MAX_AGE },
21
+ adminRefresh: { path, domain, secure, sameSite, maxAge: options.adminRefreshTokenMaxAge ?? DEFAULT_ADMIN_REFRESH_TOKEN_MAX_AGE },
86
22
  };
87
- clear = () => {
88
- this.clearAccessToken();
89
- this.clearRefreshToken();
90
- this.clearDeviceId();
91
- this.clearRememberToken();
92
- this.clearAdminRefreshToken();
23
+ const removeOpts = { path, domain };
24
+ const setAccessToken = (accessToken) => {
25
+ logger?.debug({ accessToken: accessToken.slice(0, 10) + "..." }, "Setting access token");
26
+ cookies.set(accessName, accessToken, setOpts.access);
93
27
  };
94
- getAccessToken = () => this.cookies.get(this.accessName);
95
- getRefreshToken = () => this.cookies.get(this.refreshName);
96
- getDeviceId = () => this.cookies.get(this.deviceIdName);
97
- getRememberToken = () => this.cookies.get(this.rememberName);
98
- getAdminRefreshToken = () => this.cookies.get(this.adminRefreshName);
99
- setAccessToken = (accessToken) => {
100
- this.logger?.debug({ accessToken: accessToken.slice(0, 10) + "..." }, "Setting access token");
101
- this.cookies.set(this.accessName, accessToken, this.setOptions.access);
28
+ const setRefreshToken = (refreshToken) => {
29
+ logger?.debug({ refreshToken: refreshToken.slice(0, 10) + "..." }, "Setting refresh token");
30
+ cookies.set(refreshName, refreshToken, setOpts.refresh);
102
31
  };
103
- setRememberToken = (rememberToken) => {
104
- this.logger?.debug({ rememberToken: rememberToken.slice(0, 10) + "..." }, "Setting remember token");
105
- this.cookies.set(this.rememberName, rememberToken, this.setOptions.remember);
32
+ const setAdminRefreshToken = (adminRefreshToken) => {
33
+ logger?.debug({ adminRefreshToken: adminRefreshToken.slice(0, 10) + "..." }, "Setting admin refresh token");
34
+ cookies.set(adminRefreshName, adminRefreshToken, setOpts.adminRefresh);
106
35
  };
107
- setRefreshToken = (refreshToken) => {
108
- this.logger?.debug({ refreshToken: refreshToken.slice(0, 10) + "..." }, "Setting refresh token");
109
- this.cookies.set(this.refreshName, refreshToken, this.setOptions.refresh);
36
+ const setDeviceId = (deviceId) => {
37
+ logger?.debug({ deviceId }, "Setting device id");
38
+ cookies.set(deviceIdName, deviceId, setOpts.deviceId);
110
39
  };
111
- setAdminRefreshToken = (adminRefreshToken) => {
112
- this.logger?.debug({ adminRefreshToken: adminRefreshToken.slice(0, 10) + "..." }, "Setting admin refresh token");
113
- this.cookies.set(this.adminRefreshName, adminRefreshToken, this.setOptions.adminRefresh);
40
+ const clearAccessToken = () => {
41
+ logger?.debug("Clearing access token");
42
+ cookies.remove(accessName, removeOpts);
114
43
  };
115
- setDeviceId = (deviceId) => {
116
- this.logger?.debug({ deviceId }, "Setting device id");
117
- this.cookies.set(this.deviceIdName, deviceId, this.setOptions.deviceId);
44
+ const clearRefreshToken = () => {
45
+ logger?.debug("Clearing refresh token");
46
+ cookies.remove(refreshName, removeOpts);
118
47
  };
119
- clearAdminRefreshToken = () => {
120
- this.logger?.debug("Clearing admin refresh token");
121
- this.cookies.remove(this.adminRefreshName, this.removeOptions);
48
+ const clearDeviceId = () => {
49
+ logger?.debug("Clearing device id");
50
+ cookies.remove(deviceIdName, removeOpts);
122
51
  };
123
- clearDeviceId = () => {
124
- this.logger?.debug("Clearing device id");
125
- this.cookies.remove(this.deviceIdName, this.removeOptions);
52
+ const clearAdminRefreshToken = () => {
53
+ logger?.debug("Clearing admin refresh token");
54
+ cookies.remove(adminRefreshName, removeOpts);
126
55
  };
127
- clearRememberToken = () => {
128
- this.logger?.debug("Clearing remember token");
129
- this.cookies.remove(this.rememberName, this.removeOptions);
56
+ const getAccessToken = () => cookies.get(accessName);
57
+ const getRefreshToken = () => cookies.get(refreshName);
58
+ const getDeviceId = () => cookies.get(deviceIdName);
59
+ const getAdminRefreshToken = () => cookies.get(adminRefreshName);
60
+ return {
61
+ save: (tokens) => {
62
+ setAccessToken(tokens.accessToken);
63
+ setRefreshToken(tokens.refreshToken);
64
+ if (tokens.deviceId)
65
+ setDeviceId(tokens.deviceId);
66
+ if (tokens.adminRefreshToken)
67
+ setAdminRefreshToken(tokens.adminRefreshToken);
68
+ },
69
+ clear: () => {
70
+ clearAccessToken();
71
+ clearRefreshToken();
72
+ clearDeviceId();
73
+ clearAdminRefreshToken();
74
+ },
75
+ getAccessToken,
76
+ getRefreshToken,
77
+ getDeviceId,
78
+ getAdminRefreshToken,
79
+ setAccessToken,
80
+ setRefreshToken,
81
+ setAdminRefreshToken,
82
+ setDeviceId,
83
+ clearAccessToken,
84
+ clearRefreshToken,
85
+ clearDeviceId,
86
+ clearAdminRefreshToken,
87
+ getAll: () => {
88
+ const accessToken = getAccessToken();
89
+ const refreshToken = getRefreshToken();
90
+ if (!accessToken || !refreshToken)
91
+ return null;
92
+ return {
93
+ accessToken,
94
+ refreshToken,
95
+ deviceId: getDeviceId() ?? undefined,
96
+ adminRefreshToken: getAdminRefreshToken() ?? undefined,
97
+ };
98
+ },
130
99
  };
131
- clearRefreshToken = () => {
132
- this.logger?.debug("Clearing refresh token");
133
- this.cookies.remove(this.refreshName, this.removeOptions);
134
- };
135
- clearAccessToken = () => {
136
- this.logger?.debug("Clearing access token");
137
- this.cookies.remove(this.accessName, this.removeOptions);
138
- };
139
- getAll = () => {
140
- const accessToken = this.getAccessToken();
141
- const refreshToken = this.getRefreshToken();
142
- if (!accessToken || !refreshToken)
143
- return null;
144
- return {
145
- accessToken,
146
- refreshToken,
147
- deviceId: this.getDeviceId() ?? undefined,
148
- rememberToken: this.getRememberToken() ?? undefined,
149
- adminRefreshToken: this.getAdminRefreshToken() ?? undefined,
150
- };
151
- };
152
- }
100
+ };
153
101
  //# sourceMappingURL=TokenStorage.js.map