@geekmidas/auth 10.0.0-alpha.99 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/cacheTokenStorage-16NE8Cd9.mjs +32 -0
  3. package/dist/cacheTokenStorage-16NE8Cd9.mjs.map +1 -0
  4. package/dist/{cacheTokenStorage-B3u8Sf-6.d.cts → cacheTokenStorage-B7sOoysu.d.cts} +5 -2
  5. package/dist/cacheTokenStorage-B7sOoysu.d.cts.map +1 -0
  6. package/dist/cacheTokenStorage-CEpMniTi.cjs +38 -0
  7. package/dist/cacheTokenStorage-CEpMniTi.cjs.map +1 -0
  8. package/dist/{cacheTokenStorage-B3u8Sf-6.d.mts → cacheTokenStorage-_tq4Kmhc.d.mts} +5 -2
  9. package/dist/cacheTokenStorage-_tq4Kmhc.d.mts.map +1 -0
  10. package/dist/cacheTokenStorage.cjs +2 -30
  11. package/dist/cacheTokenStorage.d.cts +1 -1
  12. package/dist/cacheTokenStorage.d.mts +1 -1
  13. package/dist/cacheTokenStorage.mjs +2 -29
  14. package/dist/{rolldown-runtime-VH7oDXx4.cjs → chunk-CUT6urMc.cjs} +10 -8
  15. package/dist/client-BPl_mMvb.cjs +162 -0
  16. package/dist/client-BPl_mMvb.cjs.map +1 -0
  17. package/dist/client-eidYNJSH.mjs +144 -0
  18. package/dist/client-eidYNJSH.mjs.map +1 -0
  19. package/dist/client.cjs +6 -144
  20. package/dist/client.d.cts +1 -1
  21. package/dist/client.d.mts +1 -1
  22. package/dist/client.mjs +3 -140
  23. package/dist/hono/jwt.cjs +10 -7
  24. package/dist/hono/jwt.cjs.map +1 -1
  25. package/dist/hono/jwt.d.cts +6 -4
  26. package/dist/hono/jwt.d.cts.map +1 -1
  27. package/dist/hono/jwt.d.mts +6 -4
  28. package/dist/hono/jwt.d.mts.map +1 -1
  29. package/dist/hono/jwt.mjs +10 -7
  30. package/dist/hono/jwt.mjs.map +1 -1
  31. package/dist/hono/oidc.cjs +10 -7
  32. package/dist/hono/oidc.cjs.map +1 -1
  33. package/dist/hono/oidc.d.cts +7 -5
  34. package/dist/hono/oidc.d.cts.map +1 -1
  35. package/dist/hono/oidc.d.mts +7 -5
  36. package/dist/hono/oidc.d.mts.map +1 -1
  37. package/dist/hono/oidc.mjs +10 -7
  38. package/dist/hono/oidc.mjs.map +1 -1
  39. package/dist/index.cjs +5 -5
  40. package/dist/index.d.cts +2 -2
  41. package/dist/index.d.mts +2 -2
  42. package/dist/index.mjs +5 -4
  43. package/dist/{jwt-CoKrpeMB.d.mts → jwt-3eIuY2dg.d.cts} +3 -2
  44. package/dist/jwt-3eIuY2dg.d.cts.map +1 -0
  45. package/dist/jwt-Bo_eACEi.cjs +70 -0
  46. package/dist/jwt-Bo_eACEi.cjs.map +1 -0
  47. package/dist/{jwt-CoKrpeMB.d.cts → jwt-BqLlRkw-.d.mts} +3 -2
  48. package/dist/jwt-BqLlRkw-.d.mts.map +1 -0
  49. package/dist/jwt-D88cPJyT.mjs +52 -0
  50. package/dist/jwt-D88cPJyT.mjs.map +1 -0
  51. package/dist/jwt.cjs +4 -56
  52. package/dist/jwt.d.cts +1 -1
  53. package/dist/jwt.d.mts +1 -1
  54. package/dist/jwt.mjs +2 -51
  55. package/dist/lambda/jwt.cjs +20 -16
  56. package/dist/lambda/jwt.cjs.map +1 -1
  57. package/dist/lambda/jwt.d.cts +6 -4
  58. package/dist/lambda/jwt.d.cts.map +1 -1
  59. package/dist/lambda/jwt.d.mts +6 -4
  60. package/dist/lambda/jwt.d.mts.map +1 -1
  61. package/dist/lambda/jwt.mjs +20 -16
  62. package/dist/lambda/jwt.mjs.map +1 -1
  63. package/dist/lambda/oidc.cjs +20 -16
  64. package/dist/lambda/oidc.cjs.map +1 -1
  65. package/dist/lambda/oidc.d.cts +7 -5
  66. package/dist/lambda/oidc.d.cts.map +1 -1
  67. package/dist/lambda/oidc.d.mts +7 -5
  68. package/dist/lambda/oidc.d.mts.map +1 -1
  69. package/dist/lambda/oidc.mjs +20 -16
  70. package/dist/lambda/oidc.mjs.map +1 -1
  71. package/dist/oidc-C0KyYaAK.cjs +68 -0
  72. package/dist/oidc-C0KyYaAK.cjs.map +1 -0
  73. package/dist/oidc-ChA17wLB.d.cts +87 -0
  74. package/dist/oidc-ChA17wLB.d.cts.map +1 -0
  75. package/dist/oidc-DTRgBBl6.d.mts +87 -0
  76. package/dist/oidc-DTRgBBl6.d.mts.map +1 -0
  77. package/dist/oidc-KA30gMlx.mjs +62 -0
  78. package/dist/oidc-KA30gMlx.mjs.map +1 -0
  79. package/dist/oidc.cjs +2 -64
  80. package/dist/oidc.d.cts +3 -84
  81. package/dist/oidc.d.mts +3 -84
  82. package/dist/oidc.mjs +2 -61
  83. package/dist/server.cjs +4 -4
  84. package/dist/server.d.cts +3 -3
  85. package/dist/server.d.mts +3 -3
  86. package/dist/server.mjs +4 -3
  87. package/dist/tokenManager-CL3yE06D.d.cts +40 -0
  88. package/dist/tokenManager-CL3yE06D.d.cts.map +1 -0
  89. package/dist/tokenManager-Ci2Tgxp8.mjs +66 -0
  90. package/dist/tokenManager-Ci2Tgxp8.mjs.map +1 -0
  91. package/dist/tokenManager-CvEMgxOp.cjs +72 -0
  92. package/dist/tokenManager-CvEMgxOp.cjs.map +1 -0
  93. package/dist/tokenManager-RrwjL0y-.d.mts +40 -0
  94. package/dist/tokenManager-RrwjL0y-.d.mts.map +1 -0
  95. package/dist/tokenManager.cjs +2 -64
  96. package/dist/tokenManager.d.cts +2 -37
  97. package/dist/tokenManager.d.mts +2 -37
  98. package/dist/tokenManager.mjs +2 -61
  99. package/package.json +9 -13
  100. package/src/__tests__/cacheTokenStorage.spec.ts +213 -0
  101. package/src/__tests__/client.spec.ts +465 -0
  102. package/src/__tests__/hono-jwt.spec.ts +232 -0
  103. package/src/__tests__/hono-oidc.spec.ts +605 -0
  104. package/src/__tests__/jwt.spec.ts +197 -0
  105. package/src/__tests__/lambda-jwt.spec.ts +278 -0
  106. package/src/__tests__/lambda-oidc.spec.ts +624 -0
  107. package/src/__tests__/oidc.spec.ts +405 -0
  108. package/src/__tests__/tokenManager.spec.ts +259 -0
  109. package/src/cacheTokenStorage.ts +43 -0
  110. package/src/client.ts +220 -0
  111. package/src/hono/jwt.ts +142 -0
  112. package/src/hono/oidc.ts +170 -0
  113. package/src/index.ts +3 -0
  114. package/src/jwt.ts +106 -0
  115. package/src/lambda/jwt.ts +210 -0
  116. package/src/lambda/oidc.ts +203 -0
  117. package/src/oidc.ts +156 -0
  118. package/src/server.ts +8 -0
  119. package/src/tokenManager.ts +106 -0
  120. package/tsconfig.json +10 -0
  121. package/tsdown.config.ts +3 -0
  122. package/dist/cacheTokenStorage-B3u8Sf-6.d.cts.map +0 -1
  123. package/dist/cacheTokenStorage-B3u8Sf-6.d.mts.map +0 -1
  124. package/dist/cacheTokenStorage.cjs.map +0 -1
  125. package/dist/cacheTokenStorage.mjs.map +0 -1
  126. package/dist/client.cjs.map +0 -1
  127. package/dist/client.mjs.map +0 -1
  128. package/dist/cookies.cjs +0 -25
  129. package/dist/cookies.cjs.map +0 -1
  130. package/dist/cookies.d.cts +0 -12
  131. package/dist/cookies.d.cts.map +0 -1
  132. package/dist/cookies.d.mts +0 -12
  133. package/dist/cookies.d.mts.map +0 -1
  134. package/dist/cookies.mjs +0 -24
  135. package/dist/cookies.mjs.map +0 -1
  136. package/dist/jwt-CoKrpeMB.d.cts.map +0 -1
  137. package/dist/jwt-CoKrpeMB.d.mts.map +0 -1
  138. package/dist/jwt.cjs.map +0 -1
  139. package/dist/jwt.mjs.map +0 -1
  140. package/dist/oidc.cjs.map +0 -1
  141. package/dist/oidc.d.cts.map +0 -1
  142. package/dist/oidc.d.mts.map +0 -1
  143. package/dist/oidc.mjs.map +0 -1
  144. package/dist/tokenManager.cjs.map +0 -1
  145. package/dist/tokenManager.d.cts.map +0 -1
  146. package/dist/tokenManager.d.mts.map +0 -1
  147. package/dist/tokenManager.mjs.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,67 @@
1
+ # @geekmidas/auth
2
+
3
+ ## 10.0.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies []:
8
+ - @geekmidas/cache@10.0.0
9
+
10
+ ## 9.0.2
11
+
12
+ ### Patch Changes
13
+
14
+ - [#12](https://github.com/geekmidas/toolbox/pull/12) [`d53863a`](https://github.com/geekmidas/toolbox/commit/d53863a84db2e4ab5420e08f79128b637043fc42) Thanks [@geekmidas](https://github.com/geekmidas)! - Align every published package on a single version and keep them in step.
15
+
16
+ All packages now share one version, enforced by a changesets `fixed` group. The
17
+ baseline is 9.0.1 — @geekmidas/client's published version — so nothing moves
18
+ backwards; this release takes the whole set to 9.0.2 together.
19
+
20
+ Independent versions made "which version of the docs applies to me"
21
+ unanswerable: a reader on constructs@7 and cli@2 was on no version at all. One
22
+ number per release makes versioned documentation possible, and lets 9 freeze as
23
+ the current paradigm while the constructs rework is developed against it.
24
+
25
+ Every release now publishes every package, and a major anywhere is a major
26
+ everywhere. Peer ranges get simpler in return.
27
+
28
+ - Updated dependencies [[`d53863a`](https://github.com/geekmidas/toolbox/commit/d53863a84db2e4ab5420e08f79128b637043fc42)]:
29
+ - @geekmidas/cache@9.0.2
30
+
31
+ ## 2.0.2
32
+
33
+ ### Patch Changes
34
+
35
+ - 🐛 [#11](https://github.com/geekmidas/toolbox/pull/11) [`40f4dc0`](https://github.com/geekmidas/toolbox/commit/40f4dc095911b2223a255029d8f776caf7781309) Thanks [@geekmidas](https://github.com/geekmidas)! - Patch release across all packages to realign published versions with the
36
+ registry. The previous release only published the four packages that had
37
+ version bumps; the remaining packages failed with "cannot publish over the
38
+ previously published versions" because their versions were unchanged.
39
+ - Updated dependencies [[`40f4dc0`](https://github.com/geekmidas/toolbox/commit/40f4dc095911b2223a255029d8f776caf7781309)]:
40
+ - @geekmidas/cache@1.1.2
41
+
42
+ ## 2.0.1
43
+
44
+ ### Patch Changes
45
+
46
+ - 🐛 [`d70c6c0`](https://github.com/geekmidas/toolbox/commit/d70c6c0aeb8a79da2473ac77dbd8255a4a2f5651) Thanks [@geekmidas](https://github.com/geekmidas)! - Fix `package.json` exports so TypeScript declarations resolve correctly under NodeNext/Bundler module resolution. Each subpath export now nests `types` inside its `import`/`require` condition, pointing at the `.d.mts` and `.d.cts` files that `tsdown` actually emits (previously the exports referenced non-existent `.d.ts` files, causing type-resolution failures for consumers). Both ESM (`.mjs`) and CJS (`.cjs`) runtime entry points are preserved. Additionally, `@geekmidas/ui` had `import` paths pointing at `.js` files that were never emitted — those are corrected to `.mjs`.
47
+
48
+ - Updated dependencies [[`d70c6c0`](https://github.com/geekmidas/toolbox/commit/d70c6c0aeb8a79da2473ac77dbd8255a4a2f5651)]:
49
+ - @geekmidas/cache@1.1.1
50
+
51
+ ## 2.0.0
52
+
53
+ ### Patch Changes
54
+
55
+ - Updated dependencies [[`be4f7a9`](https://github.com/geekmidas/toolbox/commit/be4f7a9bd5de7f08adbca582916d6902e0c24de2)]:
56
+ - @geekmidas/cache@1.1.0
57
+
58
+ ## 1.0.0
59
+
60
+ ### Major Changes
61
+
62
+ - [`ff7b115`](https://github.com/geekmidas/toolbox/commit/ff7b11599f60f84ac6cdc73714c853ecf786b2e8) Thanks [@geekmidas](https://github.com/geekmidas)! - Version 1 Stable release
63
+
64
+ ### Patch Changes
65
+
66
+ - Updated dependencies [[`ff7b115`](https://github.com/geekmidas/toolbox/commit/ff7b11599f60f84ac6cdc73714c853ecf786b2e8)]:
67
+ - @geekmidas/cache@1.0.0
@@ -0,0 +1,32 @@
1
+ //#region src/cacheTokenStorage.ts
2
+ var CacheTokenStorage = class {
3
+ cache;
4
+ accessTokenKey;
5
+ refreshTokenKey;
6
+ constructor(cache, accessTokenKey = "access_token", refreshTokenKey = "refresh_token") {
7
+ this.cache = cache;
8
+ this.accessTokenKey = accessTokenKey;
9
+ this.refreshTokenKey = refreshTokenKey;
10
+ }
11
+ async getAccessToken() {
12
+ const token = await this.cache.get(this.accessTokenKey);
13
+ return token ?? null;
14
+ }
15
+ async setAccessToken(token, ttl) {
16
+ await this.cache.set(this.accessTokenKey, token, ttl);
17
+ }
18
+ async getRefreshToken() {
19
+ const token = await this.cache.get(this.refreshTokenKey);
20
+ return token ?? null;
21
+ }
22
+ async setRefreshToken(token, ttl) {
23
+ await this.cache.set(this.refreshTokenKey, token, ttl);
24
+ }
25
+ async clearTokens() {
26
+ await Promise.all([this.cache.delete(this.accessTokenKey), this.cache.delete(this.refreshTokenKey)]);
27
+ }
28
+ };
29
+
30
+ //#endregion
31
+ export { CacheTokenStorage };
32
+ //# sourceMappingURL=cacheTokenStorage-16NE8Cd9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheTokenStorage-16NE8Cd9.mjs","names":["cache: Cache","accessTokenKey: string","refreshTokenKey: string","token: string","ttl?: number"],"sources":["../src/cacheTokenStorage.ts"],"sourcesContent":["import type { Cache } from '@geekmidas/cache';\nimport type { TokenStorage } from './client.js';\n\nexport class CacheTokenStorage implements TokenStorage {\n\tprivate cache: Cache;\n\tprivate accessTokenKey: string;\n\tprivate refreshTokenKey: string;\n\n\tconstructor(\n\t\tcache: Cache,\n\t\taccessTokenKey: string = 'access_token',\n\t\trefreshTokenKey: string = 'refresh_token',\n\t) {\n\t\tthis.cache = cache;\n\t\tthis.accessTokenKey = accessTokenKey;\n\t\tthis.refreshTokenKey = refreshTokenKey;\n\t}\n\n\tasync getAccessToken(): Promise<string | null> {\n\t\tconst token = await this.cache.get<string>(this.accessTokenKey);\n\t\treturn token ?? null;\n\t}\n\n\tasync setAccessToken(token: string, ttl?: number): Promise<void> {\n\t\tawait this.cache.set(this.accessTokenKey, token, ttl);\n\t}\n\n\tasync getRefreshToken(): Promise<string | null> {\n\t\tconst token = await this.cache.get<string>(this.refreshTokenKey);\n\t\treturn token ?? null;\n\t}\n\n\tasync setRefreshToken(token: string, ttl?: number): Promise<void> {\n\t\tawait this.cache.set(this.refreshTokenKey, token, ttl);\n\t}\n\n\tasync clearTokens(): Promise<void> {\n\t\tawait Promise.all([\n\t\t\tthis.cache.delete(this.accessTokenKey),\n\t\t\tthis.cache.delete(this.refreshTokenKey),\n\t\t]);\n\t}\n}\n"],"mappings":";AAGA,IAAa,oBAAb,MAAuD;CACtD,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YACCA,OACAC,iBAAyB,gBACzBC,kBAA0B,iBACzB;AACD,OAAK,QAAQ;AACb,OAAK,iBAAiB;AACtB,OAAK,kBAAkB;CACvB;CAED,MAAM,iBAAyC;EAC9C,MAAM,QAAQ,MAAM,KAAK,MAAM,IAAY,KAAK,eAAe;AAC/D,SAAO,SAAS;CAChB;CAED,MAAM,eAAeC,OAAeC,KAA6B;AAChE,QAAM,KAAK,MAAM,IAAI,KAAK,gBAAgB,OAAO,IAAI;CACrD;CAED,MAAM,kBAA0C;EAC/C,MAAM,QAAQ,MAAM,KAAK,MAAM,IAAY,KAAK,gBAAgB;AAChE,SAAO,SAAS;CAChB;CAED,MAAM,gBAAgBD,OAAeC,KAA6B;AACjE,QAAM,KAAK,MAAM,IAAI,KAAK,iBAAiB,OAAO,IAAI;CACtD;CAED,MAAM,cAA6B;AAClC,QAAM,QAAQ,IAAI,CACjB,KAAK,MAAM,OAAO,KAAK,eAAe,EACtC,KAAK,MAAM,OAAO,KAAK,gBAAgB,AACvC,EAAC;CACF;AACD"}
@@ -1,4 +1,5 @@
1
1
  import { Cache } from "@geekmidas/cache";
2
+
2
3
  //#region src/client.d.ts
3
4
  interface TokenStorage {
4
5
  getAccessToken(): Promise<string | null> | string | null;
@@ -65,6 +66,8 @@ declare class CacheTokenStorage implements TokenStorage {
65
66
  setRefreshToken(token: string, ttl?: number): Promise<void>;
66
67
  clearTokens(): Promise<void>;
67
68
  }
69
+ //# sourceMappingURL=cacheTokenStorage.d.ts.map
70
+
68
71
  //#endregion
69
- export { TokenClientOptions as a, TokenClient as i, LocalStorageTokenStorage as n, TokenStorage as o, MemoryTokenStorage as r, CacheTokenStorage as t };
70
- //# sourceMappingURL=cacheTokenStorage-B3u8Sf-6.d.cts.map
72
+ export { CacheTokenStorage, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenClientOptions, TokenStorage };
73
+ //# sourceMappingURL=cacheTokenStorage-B7sOoysu.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheTokenStorage-B7sOoysu.d.cts","names":[],"sources":["../src/client.ts","../src/cacheTokenStorage.ts"],"sourcesContent":[],"mappings":";;;UAAiB,YAAA;oBACE;+CAC2B;EAF7B,eAAY,EAAA,EAGT,OAHS,CAAA,MAAA,GAAA,IAAA,CAAA,GAAA,MAAA,GAAA,IAAA;EAAA,eAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,EAIkB,OAJlB,CAAA,IAAA,CAAA,GAAA,IAAA;EAAA,WACV,EAAA,EAIH,OAJG,CAAA,IAAA,CAAA,GAAA,IAAA;;AAEC,cAKP,wBAAA,YAAoC,YAL7B,CAAA;EAAO,QACoB,cAAA;EAAO,QACtC,eAAA;EAAO,WAAA,CAAA,cAAA,CAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,MAAA;EAGV,cAAA,CAAA,CAAA,EAAA,MAAA,GAAyB,IAAA;EAuCzB,cAAA,CAAA,KAAA,EAAmB,MAAA,EAAA,IAAuB,CAAZ,EAAA,MAAY,CAAA,EAAA,IAAA;EA0BtC,eAAA,CAAA,CAAA,EAAA,MAAkB,GAAA,IACxB;EASE,eAAW,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAA,WAAA,CAAA,CAAA,EAAA,IAAA;;AAgBC,cApDZ,kBAAA,YAA8B,YAoDlB,CAAA;EAAO,QAIN,WAAA;EAAO,QAS7B,YAAA;EAAO,cAOW,CAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EAAO,cAiBO,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAI,eAYhB,CAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EAAO,eA0CD,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAO,WAkBD,CAAA,CAAA,EAAA,IAAA;;AAKK,UA5IxB,kBAAA,CA4IwB;EAAM,OAAd,CAAA,EA3ItB,YA2IsB;EAAO,eAAA,CAAA,EAAA,MAAA;;;;EClN3B,CAAA,EAAA,GAAA,IAAA;EAAkB,cAAA,CAAA,EAAA,GAAA,GAAA,IAAA;;AAeN,cDiEZ,WAAA,CCjEY;EAAO,QAKoB,OAAA;EAAO,QAIjC,eAAA;EAAO,QAKoB,cAAA;EAAO,QAItC,cAAA;EAAO,WAjCa,CAAA,OAAA,CAAA,EDyFpB,kBCzFoB;EAAY,cAAA,CAAA,CAAA,EDgG7B,OChG6B,CAAA,MAAA,GAAA,IAAA,CAAA;qBDoG5B;kGAStB;iBAOkB;;qCAiBc;mBAYZ;yBA0CM;uBAkBF,QAAQ;4BAKH,QAAQ;;;;cClN5B,iBAAA,YAA6B;EDHzB,QAAA,KAAA;EAAY,QAAA,cAAA;EAAA,QACV,eAAA;EAAO,WACoB,CAAA,KAAA,ECOrC,KDPqC,EAAA,cAAA,CAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,MAAA;EAAO,cACjC,CAAA,CAAA,ECeK,ODfL,CAAA,MAAA,GAAA,IAAA,CAAA;EAAO,cACoB,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,ECmBK,ODnBL,CAAA,IAAA,CAAA;EAAO,eACtC,CAAA,CAAA,ECsBU,ODtBV,CAAA,MAAA,GAAA,IAAA,CAAA;EAAO,eAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,EC2B8B,OD3B9B,CAAA,IAAA,CAAA;EAGV,WAAA,CAAA,CAAA,EC4BS,OD5BT,CAAA,IAAyB,CAAA;AAuCtC;AA0BA"}
@@ -0,0 +1,38 @@
1
+
2
+ //#region src/cacheTokenStorage.ts
3
+ var CacheTokenStorage = class {
4
+ cache;
5
+ accessTokenKey;
6
+ refreshTokenKey;
7
+ constructor(cache, accessTokenKey = "access_token", refreshTokenKey = "refresh_token") {
8
+ this.cache = cache;
9
+ this.accessTokenKey = accessTokenKey;
10
+ this.refreshTokenKey = refreshTokenKey;
11
+ }
12
+ async getAccessToken() {
13
+ const token = await this.cache.get(this.accessTokenKey);
14
+ return token ?? null;
15
+ }
16
+ async setAccessToken(token, ttl) {
17
+ await this.cache.set(this.accessTokenKey, token, ttl);
18
+ }
19
+ async getRefreshToken() {
20
+ const token = await this.cache.get(this.refreshTokenKey);
21
+ return token ?? null;
22
+ }
23
+ async setRefreshToken(token, ttl) {
24
+ await this.cache.set(this.refreshTokenKey, token, ttl);
25
+ }
26
+ async clearTokens() {
27
+ await Promise.all([this.cache.delete(this.accessTokenKey), this.cache.delete(this.refreshTokenKey)]);
28
+ }
29
+ };
30
+
31
+ //#endregion
32
+ Object.defineProperty(exports, 'CacheTokenStorage', {
33
+ enumerable: true,
34
+ get: function () {
35
+ return CacheTokenStorage;
36
+ }
37
+ });
38
+ //# sourceMappingURL=cacheTokenStorage-CEpMniTi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheTokenStorage-CEpMniTi.cjs","names":["cache: Cache","accessTokenKey: string","refreshTokenKey: string","token: string","ttl?: number"],"sources":["../src/cacheTokenStorage.ts"],"sourcesContent":["import type { Cache } from '@geekmidas/cache';\nimport type { TokenStorage } from './client.js';\n\nexport class CacheTokenStorage implements TokenStorage {\n\tprivate cache: Cache;\n\tprivate accessTokenKey: string;\n\tprivate refreshTokenKey: string;\n\n\tconstructor(\n\t\tcache: Cache,\n\t\taccessTokenKey: string = 'access_token',\n\t\trefreshTokenKey: string = 'refresh_token',\n\t) {\n\t\tthis.cache = cache;\n\t\tthis.accessTokenKey = accessTokenKey;\n\t\tthis.refreshTokenKey = refreshTokenKey;\n\t}\n\n\tasync getAccessToken(): Promise<string | null> {\n\t\tconst token = await this.cache.get<string>(this.accessTokenKey);\n\t\treturn token ?? null;\n\t}\n\n\tasync setAccessToken(token: string, ttl?: number): Promise<void> {\n\t\tawait this.cache.set(this.accessTokenKey, token, ttl);\n\t}\n\n\tasync getRefreshToken(): Promise<string | null> {\n\t\tconst token = await this.cache.get<string>(this.refreshTokenKey);\n\t\treturn token ?? null;\n\t}\n\n\tasync setRefreshToken(token: string, ttl?: number): Promise<void> {\n\t\tawait this.cache.set(this.refreshTokenKey, token, ttl);\n\t}\n\n\tasync clearTokens(): Promise<void> {\n\t\tawait Promise.all([\n\t\t\tthis.cache.delete(this.accessTokenKey),\n\t\t\tthis.cache.delete(this.refreshTokenKey),\n\t\t]);\n\t}\n}\n"],"mappings":";;AAGA,IAAa,oBAAb,MAAuD;CACtD,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YACCA,OACAC,iBAAyB,gBACzBC,kBAA0B,iBACzB;AACD,OAAK,QAAQ;AACb,OAAK,iBAAiB;AACtB,OAAK,kBAAkB;CACvB;CAED,MAAM,iBAAyC;EAC9C,MAAM,QAAQ,MAAM,KAAK,MAAM,IAAY,KAAK,eAAe;AAC/D,SAAO,SAAS;CAChB;CAED,MAAM,eAAeC,OAAeC,KAA6B;AAChE,QAAM,KAAK,MAAM,IAAI,KAAK,gBAAgB,OAAO,IAAI;CACrD;CAED,MAAM,kBAA0C;EAC/C,MAAM,QAAQ,MAAM,KAAK,MAAM,IAAY,KAAK,gBAAgB;AAChE,SAAO,SAAS;CAChB;CAED,MAAM,gBAAgBD,OAAeC,KAA6B;AACjE,QAAM,KAAK,MAAM,IAAI,KAAK,iBAAiB,OAAO,IAAI;CACtD;CAED,MAAM,cAA6B;AAClC,QAAM,QAAQ,IAAI,CACjB,KAAK,MAAM,OAAO,KAAK,eAAe,EACtC,KAAK,MAAM,OAAO,KAAK,gBAAgB,AACvC,EAAC;CACF;AACD"}
@@ -1,4 +1,5 @@
1
1
  import { Cache } from "@geekmidas/cache";
2
+
2
3
  //#region src/client.d.ts
3
4
  interface TokenStorage {
4
5
  getAccessToken(): Promise<string | null> | string | null;
@@ -65,6 +66,8 @@ declare class CacheTokenStorage implements TokenStorage {
65
66
  setRefreshToken(token: string, ttl?: number): Promise<void>;
66
67
  clearTokens(): Promise<void>;
67
68
  }
69
+ //# sourceMappingURL=cacheTokenStorage.d.ts.map
70
+
68
71
  //#endregion
69
- export { TokenClientOptions as a, TokenClient as i, LocalStorageTokenStorage as n, TokenStorage as o, MemoryTokenStorage as r, CacheTokenStorage as t };
70
- //# sourceMappingURL=cacheTokenStorage-B3u8Sf-6.d.mts.map
72
+ export { CacheTokenStorage, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenClientOptions, TokenStorage };
73
+ //# sourceMappingURL=cacheTokenStorage-_tq4Kmhc.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheTokenStorage-_tq4Kmhc.d.mts","names":[],"sources":["../src/client.ts","../src/cacheTokenStorage.ts"],"sourcesContent":[],"mappings":";;;UAAiB,YAAA;oBACE;+CAC2B;EAF7B,eAAY,EAAA,EAGT,OAHS,CAAA,MAAA,GAAA,IAAA,CAAA,GAAA,MAAA,GAAA,IAAA;EAAA,eAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,EAIkB,OAJlB,CAAA,IAAA,CAAA,GAAA,IAAA;EAAA,WACV,EAAA,EAIH,OAJG,CAAA,IAAA,CAAA,GAAA,IAAA;;AAEC,cAKP,wBAAA,YAAoC,YAL7B,CAAA;EAAO,QACoB,cAAA;EAAO,QACtC,eAAA;EAAO,WAAA,CAAA,cAAA,CAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,MAAA;EAGV,cAAA,CAAA,CAAA,EAAA,MAAA,GAAyB,IAAA;EAuCzB,cAAA,CAAA,KAAA,EAAmB,MAAA,EAAA,IAAuB,CAAZ,EAAA,MAAY,CAAA,EAAA,IAAA;EA0BtC,eAAA,CAAA,CAAA,EAAA,MAAkB,GAAA,IACxB;EASE,eAAW,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAA,WAAA,CAAA,CAAA,EAAA,IAAA;;AAgBC,cApDZ,kBAAA,YAA8B,YAoDlB,CAAA;EAAO,QAIN,WAAA;EAAO,QAS7B,YAAA;EAAO,cAOW,CAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EAAO,cAiBO,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAI,eAYhB,CAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EAAO,eA0CD,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAO,WAkBD,CAAA,CAAA,EAAA,IAAA;;AAKK,UA5IxB,kBAAA,CA4IwB;EAAM,OAAd,CAAA,EA3ItB,YA2IsB;EAAO,eAAA,CAAA,EAAA,MAAA;;;;EClN3B,CAAA,EAAA,GAAA,IAAA;EAAkB,cAAA,CAAA,EAAA,GAAA,GAAA,IAAA;;AAeN,cDiEZ,WAAA,CCjEY;EAAO,QAKoB,OAAA;EAAO,QAIjC,eAAA;EAAO,QAKoB,cAAA;EAAO,QAItC,cAAA;EAAO,WAjCa,CAAA,OAAA,CAAA,EDyFpB,kBCzFoB;EAAY,cAAA,CAAA,CAAA,EDgG7B,OChG6B,CAAA,MAAA,GAAA,IAAA,CAAA;qBDoG5B;kGAStB;iBAOkB;;qCAiBc;mBAYZ;yBA0CM;uBAkBF,QAAQ;4BAKH,QAAQ;;;;cClN5B,iBAAA,YAA6B;EDHzB,QAAA,KAAA;EAAY,QAAA,cAAA;EAAA,QACV,eAAA;EAAO,WACoB,CAAA,KAAA,ECOrC,KDPqC,EAAA,cAAA,CAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,MAAA;EAAO,cACjC,CAAA,CAAA,ECeK,ODfL,CAAA,MAAA,GAAA,IAAA,CAAA;EAAO,cACoB,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,ECmBK,ODnBL,CAAA,IAAA,CAAA;EAAO,eACtC,CAAA,CAAA,ECsBU,ODtBV,CAAA,MAAA,GAAA,IAAA,CAAA;EAAO,eAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,EC2B8B,OD3B9B,CAAA,IAAA,CAAA;EAGV,WAAA,CAAA,CAAA,EC4BS,OD5BT,CAAA,IAAyB,CAAA;AAuCtC;AA0BA"}
@@ -1,31 +1,3 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/cacheTokenStorage.ts
3
- var CacheTokenStorage = class {
4
- cache;
5
- accessTokenKey;
6
- refreshTokenKey;
7
- constructor(cache, accessTokenKey = "access_token", refreshTokenKey = "refresh_token") {
8
- this.cache = cache;
9
- this.accessTokenKey = accessTokenKey;
10
- this.refreshTokenKey = refreshTokenKey;
11
- }
12
- async getAccessToken() {
13
- return await this.cache.get(this.accessTokenKey) ?? null;
14
- }
15
- async setAccessToken(token, ttl) {
16
- await this.cache.set(this.accessTokenKey, token, ttl);
17
- }
18
- async getRefreshToken() {
19
- return await this.cache.get(this.refreshTokenKey) ?? null;
20
- }
21
- async setRefreshToken(token, ttl) {
22
- await this.cache.set(this.refreshTokenKey, token, ttl);
23
- }
24
- async clearTokens() {
25
- await Promise.all([this.cache.delete(this.accessTokenKey), this.cache.delete(this.refreshTokenKey)]);
26
- }
27
- };
28
- //#endregion
29
- exports.CacheTokenStorage = CacheTokenStorage;
1
+ const require_cacheTokenStorage = require('./cacheTokenStorage-CEpMniTi.cjs');
30
2
 
31
- //# sourceMappingURL=cacheTokenStorage.cjs.map
3
+ exports.CacheTokenStorage = require_cacheTokenStorage.CacheTokenStorage;
@@ -1,2 +1,2 @@
1
- import { t as CacheTokenStorage } from "./cacheTokenStorage-B3u8Sf-6.cjs";
1
+ import { CacheTokenStorage } from "./cacheTokenStorage-B7sOoysu.cjs";
2
2
  export { CacheTokenStorage };
@@ -1,2 +1,2 @@
1
- import { t as CacheTokenStorage } from "./cacheTokenStorage-B3u8Sf-6.mjs";
1
+ import { CacheTokenStorage } from "./cacheTokenStorage-_tq4Kmhc.mjs";
2
2
  export { CacheTokenStorage };
@@ -1,30 +1,3 @@
1
- //#region src/cacheTokenStorage.ts
2
- var CacheTokenStorage = class {
3
- cache;
4
- accessTokenKey;
5
- refreshTokenKey;
6
- constructor(cache, accessTokenKey = "access_token", refreshTokenKey = "refresh_token") {
7
- this.cache = cache;
8
- this.accessTokenKey = accessTokenKey;
9
- this.refreshTokenKey = refreshTokenKey;
10
- }
11
- async getAccessToken() {
12
- return await this.cache.get(this.accessTokenKey) ?? null;
13
- }
14
- async setAccessToken(token, ttl) {
15
- await this.cache.set(this.accessTokenKey, token, ttl);
16
- }
17
- async getRefreshToken() {
18
- return await this.cache.get(this.refreshTokenKey) ?? null;
19
- }
20
- async setRefreshToken(token, ttl) {
21
- await this.cache.set(this.refreshTokenKey, token, ttl);
22
- }
23
- async clearTokens() {
24
- await Promise.all([this.cache.delete(this.accessTokenKey), this.cache.delete(this.refreshTokenKey)]);
25
- }
26
- };
27
- //#endregion
28
- export { CacheTokenStorage };
1
+ import { CacheTokenStorage } from "./cacheTokenStorage-16NE8Cd9.mjs";
29
2
 
30
- //# sourceMappingURL=cacheTokenStorage.mjs.map
3
+ export { CacheTokenStorage };
@@ -1,4 +1,4 @@
1
- //#region \0rolldown/runtime.js
1
+ //#region rolldown:runtime
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -15,14 +15,16 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
19
  value: mod,
20
20
  enumerable: true
21
21
  }) : target, mod));
22
+
22
23
  //#endregion
23
- Object.defineProperty(exports, "__toESM", {
24
- enumerable: true,
25
- get: function() {
26
- return __toESM;
27
- }
28
- });
24
+
25
+ Object.defineProperty(exports, '__toESM', {
26
+ enumerable: true,
27
+ get: function () {
28
+ return __toESM;
29
+ }
30
+ });
@@ -0,0 +1,162 @@
1
+
2
+ //#region src/client.ts
3
+ var LocalStorageTokenStorage = class {
4
+ accessTokenKey;
5
+ refreshTokenKey;
6
+ constructor(accessTokenKey = "access_token", refreshTokenKey = "refresh_token") {
7
+ this.accessTokenKey = accessTokenKey;
8
+ this.refreshTokenKey = refreshTokenKey;
9
+ }
10
+ getAccessToken() {
11
+ if (typeof window === "undefined") return null;
12
+ return localStorage.getItem(this.accessTokenKey);
13
+ }
14
+ setAccessToken(token, _ttl) {
15
+ if (typeof window === "undefined") return;
16
+ localStorage.setItem(this.accessTokenKey, token);
17
+ }
18
+ getRefreshToken() {
19
+ if (typeof window === "undefined") return null;
20
+ return localStorage.getItem(this.refreshTokenKey);
21
+ }
22
+ setRefreshToken(token, _ttl) {
23
+ if (typeof window === "undefined") return;
24
+ localStorage.setItem(this.refreshTokenKey, token);
25
+ }
26
+ clearTokens() {
27
+ if (typeof window === "undefined") return;
28
+ localStorage.removeItem(this.accessTokenKey);
29
+ localStorage.removeItem(this.refreshTokenKey);
30
+ }
31
+ };
32
+ var MemoryTokenStorage = class {
33
+ accessToken = null;
34
+ refreshToken = null;
35
+ getAccessToken() {
36
+ return this.accessToken;
37
+ }
38
+ setAccessToken(token, _ttl) {
39
+ this.accessToken = token;
40
+ }
41
+ getRefreshToken() {
42
+ return this.refreshToken;
43
+ }
44
+ setRefreshToken(token, _ttl) {
45
+ this.refreshToken = token;
46
+ }
47
+ clearTokens() {
48
+ this.accessToken = null;
49
+ this.refreshToken = null;
50
+ }
51
+ };
52
+ var TokenClient = class {
53
+ storage;
54
+ refreshEndpoint;
55
+ onTokenRefresh;
56
+ onTokenExpired;
57
+ constructor(options = {}) {
58
+ this.storage = options.storage || new LocalStorageTokenStorage();
59
+ this.refreshEndpoint = options.refreshEndpoint;
60
+ this.onTokenRefresh = options.onTokenRefresh;
61
+ this.onTokenExpired = options.onTokenExpired;
62
+ }
63
+ async getAccessToken() {
64
+ return await this.storage.getAccessToken();
65
+ }
66
+ async getRefreshToken() {
67
+ return await this.storage.getRefreshToken();
68
+ }
69
+ async setTokens(accessToken, refreshToken, accessTtl, refreshTtl) {
70
+ await this.storage.setAccessToken(accessToken, accessTtl);
71
+ if (refreshToken) await this.storage.setRefreshToken(refreshToken, refreshTtl);
72
+ }
73
+ async clearTokens() {
74
+ await this.storage.clearTokens();
75
+ }
76
+ isTokenExpired(token) {
77
+ try {
78
+ const parts = token.split(".");
79
+ const payloadPart = parts[1];
80
+ if (!payloadPart) return true;
81
+ const payload = JSON.parse(atob(payloadPart));
82
+ const now = Math.floor(Date.now() / 1e3);
83
+ return payload.exp < now;
84
+ } catch {
85
+ return true;
86
+ }
87
+ }
88
+ getTokenExpiration(token) {
89
+ try {
90
+ const parts = token.split(".");
91
+ const payloadPart = parts[1];
92
+ if (!payloadPart) return null;
93
+ const payload = JSON.parse(atob(payloadPart));
94
+ return new Date(payload.exp * 1e3);
95
+ } catch {
96
+ return null;
97
+ }
98
+ }
99
+ async refreshTokens() {
100
+ const refreshToken = await this.getRefreshToken();
101
+ if (!refreshToken || !this.refreshEndpoint) return false;
102
+ try {
103
+ const response = await fetch(this.refreshEndpoint, {
104
+ method: "POST",
105
+ headers: { "Content-Type": "application/json" },
106
+ body: JSON.stringify({ refreshToken })
107
+ });
108
+ if (!response.ok) throw new Error("Failed to refresh token");
109
+ const data = await response.json();
110
+ const { accessToken, refreshToken: newRefreshToken } = data;
111
+ await this.setTokens(accessToken, newRefreshToken);
112
+ if (this.onTokenRefresh) this.onTokenRefresh({
113
+ accessToken,
114
+ refreshToken: newRefreshToken
115
+ });
116
+ return true;
117
+ } catch (_error) {
118
+ await this.clearTokens();
119
+ if (this.onTokenExpired) this.onTokenExpired();
120
+ return false;
121
+ }
122
+ }
123
+ async getValidAccessToken() {
124
+ const accessToken = await this.getAccessToken();
125
+ if (!accessToken) return null;
126
+ if (this.isTokenExpired(accessToken)) {
127
+ const refreshed = await this.refreshTokens();
128
+ if (!refreshed) return null;
129
+ return await this.getAccessToken();
130
+ }
131
+ return accessToken;
132
+ }
133
+ async createAuthHeaders() {
134
+ const token = await this.getAccessToken();
135
+ return token ? { Authorization: `Bearer ${token}` } : {};
136
+ }
137
+ async createValidAuthHeaders() {
138
+ const token = await this.getValidAccessToken();
139
+ return token ? { Authorization: `Bearer ${token}` } : {};
140
+ }
141
+ };
142
+
143
+ //#endregion
144
+ Object.defineProperty(exports, 'LocalStorageTokenStorage', {
145
+ enumerable: true,
146
+ get: function () {
147
+ return LocalStorageTokenStorage;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, 'MemoryTokenStorage', {
151
+ enumerable: true,
152
+ get: function () {
153
+ return MemoryTokenStorage;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, 'TokenClient', {
157
+ enumerable: true,
158
+ get: function () {
159
+ return TokenClient;
160
+ }
161
+ });
162
+ //# sourceMappingURL=client-BPl_mMvb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-BPl_mMvb.cjs","names":["accessTokenKey: string","refreshTokenKey: string","token: string","_ttl?: number","options: TokenClientOptions","accessToken: string","refreshToken?: string","accessTtl?: number","refreshTtl?: number"],"sources":["../src/client.ts"],"sourcesContent":["export interface TokenStorage {\n\tgetAccessToken(): Promise<string | null> | string | null;\n\tsetAccessToken(token: string, ttl?: number): Promise<void> | void;\n\tgetRefreshToken(): Promise<string | null> | string | null;\n\tsetRefreshToken(token: string, ttl?: number): Promise<void> | void;\n\tclearTokens(): Promise<void> | void;\n}\n\nexport class LocalStorageTokenStorage implements TokenStorage {\n\tprivate accessTokenKey: string;\n\tprivate refreshTokenKey: string;\n\n\tconstructor(\n\t\taccessTokenKey: string = 'access_token',\n\t\trefreshTokenKey: string = 'refresh_token',\n\t) {\n\t\tthis.accessTokenKey = accessTokenKey;\n\t\tthis.refreshTokenKey = refreshTokenKey;\n\t}\n\n\tgetAccessToken(): string | null {\n\t\tif (typeof window === 'undefined') return null;\n\t\treturn localStorage.getItem(this.accessTokenKey);\n\t}\n\n\tsetAccessToken(token: string, _ttl?: number): void {\n\t\tif (typeof window === 'undefined') return;\n\t\tlocalStorage.setItem(this.accessTokenKey, token);\n\t}\n\n\tgetRefreshToken(): string | null {\n\t\tif (typeof window === 'undefined') return null;\n\t\treturn localStorage.getItem(this.refreshTokenKey);\n\t}\n\n\tsetRefreshToken(token: string, _ttl?: number): void {\n\t\tif (typeof window === 'undefined') return;\n\t\tlocalStorage.setItem(this.refreshTokenKey, token);\n\t}\n\n\tclearTokens(): void {\n\t\tif (typeof window === 'undefined') return;\n\t\tlocalStorage.removeItem(this.accessTokenKey);\n\t\tlocalStorage.removeItem(this.refreshTokenKey);\n\t}\n}\n\nexport class MemoryTokenStorage implements TokenStorage {\n\tprivate accessToken: string | null = null;\n\tprivate refreshToken: string | null = null;\n\n\tgetAccessToken(): string | null {\n\t\treturn this.accessToken;\n\t}\n\n\tsetAccessToken(token: string, _ttl?: number): void {\n\t\tthis.accessToken = token;\n\t}\n\n\tgetRefreshToken(): string | null {\n\t\treturn this.refreshToken;\n\t}\n\n\tsetRefreshToken(token: string, _ttl?: number): void {\n\t\tthis.refreshToken = token;\n\t}\n\n\tclearTokens(): void {\n\t\tthis.accessToken = null;\n\t\tthis.refreshToken = null;\n\t}\n}\n\nexport interface TokenClientOptions {\n\tstorage?: TokenStorage;\n\trefreshEndpoint?: string;\n\tonTokenRefresh?: (tokens: {\n\t\taccessToken: string;\n\t\trefreshToken?: string;\n\t}) => void;\n\tonTokenExpired?: () => void;\n}\n\nexport class TokenClient {\n\tprivate storage: TokenStorage;\n\tprivate refreshEndpoint?: string;\n\tprivate onTokenRefresh?: (tokens: {\n\t\taccessToken: string;\n\t\trefreshToken?: string;\n\t}) => void;\n\tprivate onTokenExpired?: () => void;\n\n\tconstructor(options: TokenClientOptions = {}) {\n\t\tthis.storage = options.storage || new LocalStorageTokenStorage();\n\t\tthis.refreshEndpoint = options.refreshEndpoint;\n\t\tthis.onTokenRefresh = options.onTokenRefresh;\n\t\tthis.onTokenExpired = options.onTokenExpired;\n\t}\n\n\tasync getAccessToken(): Promise<string | null> {\n\t\treturn await this.storage.getAccessToken();\n\t}\n\n\tasync getRefreshToken(): Promise<string | null> {\n\t\treturn await this.storage.getRefreshToken();\n\t}\n\n\tasync setTokens(\n\t\taccessToken: string,\n\t\trefreshToken?: string,\n\t\taccessTtl?: number,\n\t\trefreshTtl?: number,\n\t): Promise<void> {\n\t\tawait this.storage.setAccessToken(accessToken, accessTtl);\n\t\tif (refreshToken) {\n\t\t\tawait this.storage.setRefreshToken(refreshToken, refreshTtl);\n\t\t}\n\t}\n\n\tasync clearTokens(): Promise<void> {\n\t\tawait this.storage.clearTokens();\n\t}\n\n\tisTokenExpired(token: string): boolean {\n\t\ttry {\n\t\t\tconst parts = token.split('.');\n\t\t\tconst payloadPart = parts[1];\n\t\t\tif (!payloadPart) return true;\n\t\t\tconst payload = JSON.parse(atob(payloadPart));\n\t\t\tconst now = Math.floor(Date.now() / 1000);\n\t\t\treturn payload.exp < now;\n\t\t} catch {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tgetTokenExpiration(token: string): Date | null {\n\t\ttry {\n\t\t\tconst parts = token.split('.');\n\t\t\tconst payloadPart = parts[1];\n\t\t\tif (!payloadPart) return null;\n\t\t\tconst payload = JSON.parse(atob(payloadPart));\n\t\t\treturn new Date(payload.exp * 1000);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync refreshTokens(): Promise<boolean> {\n\t\tconst refreshToken = await this.getRefreshToken();\n\n\t\tif (!refreshToken || !this.refreshEndpoint) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.refreshEndpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ refreshToken }),\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error('Failed to refresh token');\n\t\t\t}\n\n\t\t\tconst data = (await response.json()) as {\n\t\t\t\taccessToken: string;\n\t\t\t\trefreshToken: string;\n\t\t\t};\n\t\t\tconst { accessToken, refreshToken: newRefreshToken } = data;\n\n\t\t\tawait this.setTokens(accessToken, newRefreshToken);\n\n\t\t\tif (this.onTokenRefresh) {\n\t\t\t\tthis.onTokenRefresh({ accessToken, refreshToken: newRefreshToken });\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} catch (_error) {\n\t\t\tawait this.clearTokens();\n\t\t\tif (this.onTokenExpired) {\n\t\t\t\tthis.onTokenExpired();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync getValidAccessToken(): Promise<string | null> {\n\t\tconst accessToken = await this.getAccessToken();\n\n\t\tif (!accessToken) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.isTokenExpired(accessToken)) {\n\t\t\tconst refreshed = await this.refreshTokens();\n\t\t\tif (!refreshed) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn await this.getAccessToken();\n\t\t}\n\n\t\treturn accessToken;\n\t}\n\n\tasync createAuthHeaders(): Promise<Record<string, string>> {\n\t\tconst token = await this.getAccessToken();\n\t\treturn token ? { Authorization: `Bearer ${token}` } : {};\n\t}\n\n\tasync createValidAuthHeaders(): Promise<Record<string, string>> {\n\t\tconst token = await this.getValidAccessToken();\n\t\treturn token ? { Authorization: `Bearer ${token}` } : {};\n\t}\n}\n\nexport { CacheTokenStorage } from './cacheTokenStorage.js';\n"],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ //#region src/client.ts
2
+ var LocalStorageTokenStorage = class {
3
+ accessTokenKey;
4
+ refreshTokenKey;
5
+ constructor(accessTokenKey = "access_token", refreshTokenKey = "refresh_token") {
6
+ this.accessTokenKey = accessTokenKey;
7
+ this.refreshTokenKey = refreshTokenKey;
8
+ }
9
+ getAccessToken() {
10
+ if (typeof window === "undefined") return null;
11
+ return localStorage.getItem(this.accessTokenKey);
12
+ }
13
+ setAccessToken(token, _ttl) {
14
+ if (typeof window === "undefined") return;
15
+ localStorage.setItem(this.accessTokenKey, token);
16
+ }
17
+ getRefreshToken() {
18
+ if (typeof window === "undefined") return null;
19
+ return localStorage.getItem(this.refreshTokenKey);
20
+ }
21
+ setRefreshToken(token, _ttl) {
22
+ if (typeof window === "undefined") return;
23
+ localStorage.setItem(this.refreshTokenKey, token);
24
+ }
25
+ clearTokens() {
26
+ if (typeof window === "undefined") return;
27
+ localStorage.removeItem(this.accessTokenKey);
28
+ localStorage.removeItem(this.refreshTokenKey);
29
+ }
30
+ };
31
+ var MemoryTokenStorage = class {
32
+ accessToken = null;
33
+ refreshToken = null;
34
+ getAccessToken() {
35
+ return this.accessToken;
36
+ }
37
+ setAccessToken(token, _ttl) {
38
+ this.accessToken = token;
39
+ }
40
+ getRefreshToken() {
41
+ return this.refreshToken;
42
+ }
43
+ setRefreshToken(token, _ttl) {
44
+ this.refreshToken = token;
45
+ }
46
+ clearTokens() {
47
+ this.accessToken = null;
48
+ this.refreshToken = null;
49
+ }
50
+ };
51
+ var TokenClient = class {
52
+ storage;
53
+ refreshEndpoint;
54
+ onTokenRefresh;
55
+ onTokenExpired;
56
+ constructor(options = {}) {
57
+ this.storage = options.storage || new LocalStorageTokenStorage();
58
+ this.refreshEndpoint = options.refreshEndpoint;
59
+ this.onTokenRefresh = options.onTokenRefresh;
60
+ this.onTokenExpired = options.onTokenExpired;
61
+ }
62
+ async getAccessToken() {
63
+ return await this.storage.getAccessToken();
64
+ }
65
+ async getRefreshToken() {
66
+ return await this.storage.getRefreshToken();
67
+ }
68
+ async setTokens(accessToken, refreshToken, accessTtl, refreshTtl) {
69
+ await this.storage.setAccessToken(accessToken, accessTtl);
70
+ if (refreshToken) await this.storage.setRefreshToken(refreshToken, refreshTtl);
71
+ }
72
+ async clearTokens() {
73
+ await this.storage.clearTokens();
74
+ }
75
+ isTokenExpired(token) {
76
+ try {
77
+ const parts = token.split(".");
78
+ const payloadPart = parts[1];
79
+ if (!payloadPart) return true;
80
+ const payload = JSON.parse(atob(payloadPart));
81
+ const now = Math.floor(Date.now() / 1e3);
82
+ return payload.exp < now;
83
+ } catch {
84
+ return true;
85
+ }
86
+ }
87
+ getTokenExpiration(token) {
88
+ try {
89
+ const parts = token.split(".");
90
+ const payloadPart = parts[1];
91
+ if (!payloadPart) return null;
92
+ const payload = JSON.parse(atob(payloadPart));
93
+ return new Date(payload.exp * 1e3);
94
+ } catch {
95
+ return null;
96
+ }
97
+ }
98
+ async refreshTokens() {
99
+ const refreshToken = await this.getRefreshToken();
100
+ if (!refreshToken || !this.refreshEndpoint) return false;
101
+ try {
102
+ const response = await fetch(this.refreshEndpoint, {
103
+ method: "POST",
104
+ headers: { "Content-Type": "application/json" },
105
+ body: JSON.stringify({ refreshToken })
106
+ });
107
+ if (!response.ok) throw new Error("Failed to refresh token");
108
+ const data = await response.json();
109
+ const { accessToken, refreshToken: newRefreshToken } = data;
110
+ await this.setTokens(accessToken, newRefreshToken);
111
+ if (this.onTokenRefresh) this.onTokenRefresh({
112
+ accessToken,
113
+ refreshToken: newRefreshToken
114
+ });
115
+ return true;
116
+ } catch (_error) {
117
+ await this.clearTokens();
118
+ if (this.onTokenExpired) this.onTokenExpired();
119
+ return false;
120
+ }
121
+ }
122
+ async getValidAccessToken() {
123
+ const accessToken = await this.getAccessToken();
124
+ if (!accessToken) return null;
125
+ if (this.isTokenExpired(accessToken)) {
126
+ const refreshed = await this.refreshTokens();
127
+ if (!refreshed) return null;
128
+ return await this.getAccessToken();
129
+ }
130
+ return accessToken;
131
+ }
132
+ async createAuthHeaders() {
133
+ const token = await this.getAccessToken();
134
+ return token ? { Authorization: `Bearer ${token}` } : {};
135
+ }
136
+ async createValidAuthHeaders() {
137
+ const token = await this.getValidAccessToken();
138
+ return token ? { Authorization: `Bearer ${token}` } : {};
139
+ }
140
+ };
141
+
142
+ //#endregion
143
+ export { LocalStorageTokenStorage, MemoryTokenStorage, TokenClient };
144
+ //# sourceMappingURL=client-eidYNJSH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-eidYNJSH.mjs","names":["accessTokenKey: string","refreshTokenKey: string","token: string","_ttl?: number","options: TokenClientOptions","accessToken: string","refreshToken?: string","accessTtl?: number","refreshTtl?: number"],"sources":["../src/client.ts"],"sourcesContent":["export interface TokenStorage {\n\tgetAccessToken(): Promise<string | null> | string | null;\n\tsetAccessToken(token: string, ttl?: number): Promise<void> | void;\n\tgetRefreshToken(): Promise<string | null> | string | null;\n\tsetRefreshToken(token: string, ttl?: number): Promise<void> | void;\n\tclearTokens(): Promise<void> | void;\n}\n\nexport class LocalStorageTokenStorage implements TokenStorage {\n\tprivate accessTokenKey: string;\n\tprivate refreshTokenKey: string;\n\n\tconstructor(\n\t\taccessTokenKey: string = 'access_token',\n\t\trefreshTokenKey: string = 'refresh_token',\n\t) {\n\t\tthis.accessTokenKey = accessTokenKey;\n\t\tthis.refreshTokenKey = refreshTokenKey;\n\t}\n\n\tgetAccessToken(): string | null {\n\t\tif (typeof window === 'undefined') return null;\n\t\treturn localStorage.getItem(this.accessTokenKey);\n\t}\n\n\tsetAccessToken(token: string, _ttl?: number): void {\n\t\tif (typeof window === 'undefined') return;\n\t\tlocalStorage.setItem(this.accessTokenKey, token);\n\t}\n\n\tgetRefreshToken(): string | null {\n\t\tif (typeof window === 'undefined') return null;\n\t\treturn localStorage.getItem(this.refreshTokenKey);\n\t}\n\n\tsetRefreshToken(token: string, _ttl?: number): void {\n\t\tif (typeof window === 'undefined') return;\n\t\tlocalStorage.setItem(this.refreshTokenKey, token);\n\t}\n\n\tclearTokens(): void {\n\t\tif (typeof window === 'undefined') return;\n\t\tlocalStorage.removeItem(this.accessTokenKey);\n\t\tlocalStorage.removeItem(this.refreshTokenKey);\n\t}\n}\n\nexport class MemoryTokenStorage implements TokenStorage {\n\tprivate accessToken: string | null = null;\n\tprivate refreshToken: string | null = null;\n\n\tgetAccessToken(): string | null {\n\t\treturn this.accessToken;\n\t}\n\n\tsetAccessToken(token: string, _ttl?: number): void {\n\t\tthis.accessToken = token;\n\t}\n\n\tgetRefreshToken(): string | null {\n\t\treturn this.refreshToken;\n\t}\n\n\tsetRefreshToken(token: string, _ttl?: number): void {\n\t\tthis.refreshToken = token;\n\t}\n\n\tclearTokens(): void {\n\t\tthis.accessToken = null;\n\t\tthis.refreshToken = null;\n\t}\n}\n\nexport interface TokenClientOptions {\n\tstorage?: TokenStorage;\n\trefreshEndpoint?: string;\n\tonTokenRefresh?: (tokens: {\n\t\taccessToken: string;\n\t\trefreshToken?: string;\n\t}) => void;\n\tonTokenExpired?: () => void;\n}\n\nexport class TokenClient {\n\tprivate storage: TokenStorage;\n\tprivate refreshEndpoint?: string;\n\tprivate onTokenRefresh?: (tokens: {\n\t\taccessToken: string;\n\t\trefreshToken?: string;\n\t}) => void;\n\tprivate onTokenExpired?: () => void;\n\n\tconstructor(options: TokenClientOptions = {}) {\n\t\tthis.storage = options.storage || new LocalStorageTokenStorage();\n\t\tthis.refreshEndpoint = options.refreshEndpoint;\n\t\tthis.onTokenRefresh = options.onTokenRefresh;\n\t\tthis.onTokenExpired = options.onTokenExpired;\n\t}\n\n\tasync getAccessToken(): Promise<string | null> {\n\t\treturn await this.storage.getAccessToken();\n\t}\n\n\tasync getRefreshToken(): Promise<string | null> {\n\t\treturn await this.storage.getRefreshToken();\n\t}\n\n\tasync setTokens(\n\t\taccessToken: string,\n\t\trefreshToken?: string,\n\t\taccessTtl?: number,\n\t\trefreshTtl?: number,\n\t): Promise<void> {\n\t\tawait this.storage.setAccessToken(accessToken, accessTtl);\n\t\tif (refreshToken) {\n\t\t\tawait this.storage.setRefreshToken(refreshToken, refreshTtl);\n\t\t}\n\t}\n\n\tasync clearTokens(): Promise<void> {\n\t\tawait this.storage.clearTokens();\n\t}\n\n\tisTokenExpired(token: string): boolean {\n\t\ttry {\n\t\t\tconst parts = token.split('.');\n\t\t\tconst payloadPart = parts[1];\n\t\t\tif (!payloadPart) return true;\n\t\t\tconst payload = JSON.parse(atob(payloadPart));\n\t\t\tconst now = Math.floor(Date.now() / 1000);\n\t\t\treturn payload.exp < now;\n\t\t} catch {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tgetTokenExpiration(token: string): Date | null {\n\t\ttry {\n\t\t\tconst parts = token.split('.');\n\t\t\tconst payloadPart = parts[1];\n\t\t\tif (!payloadPart) return null;\n\t\t\tconst payload = JSON.parse(atob(payloadPart));\n\t\t\treturn new Date(payload.exp * 1000);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync refreshTokens(): Promise<boolean> {\n\t\tconst refreshToken = await this.getRefreshToken();\n\n\t\tif (!refreshToken || !this.refreshEndpoint) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.refreshEndpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ refreshToken }),\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error('Failed to refresh token');\n\t\t\t}\n\n\t\t\tconst data = (await response.json()) as {\n\t\t\t\taccessToken: string;\n\t\t\t\trefreshToken: string;\n\t\t\t};\n\t\t\tconst { accessToken, refreshToken: newRefreshToken } = data;\n\n\t\t\tawait this.setTokens(accessToken, newRefreshToken);\n\n\t\t\tif (this.onTokenRefresh) {\n\t\t\t\tthis.onTokenRefresh({ accessToken, refreshToken: newRefreshToken });\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} catch (_error) {\n\t\t\tawait this.clearTokens();\n\t\t\tif (this.onTokenExpired) {\n\t\t\t\tthis.onTokenExpired();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync getValidAccessToken(): Promise<string | null> {\n\t\tconst accessToken = await this.getAccessToken();\n\n\t\tif (!accessToken) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.isTokenExpired(accessToken)) {\n\t\t\tconst refreshed = await this.refreshTokens();\n\t\t\tif (!refreshed) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn await this.getAccessToken();\n\t\t}\n\n\t\treturn accessToken;\n\t}\n\n\tasync createAuthHeaders(): Promise<Record<string, string>> {\n\t\tconst token = await this.getAccessToken();\n\t\treturn token ? { Authorization: `Bearer ${token}` } : {};\n\t}\n\n\tasync createValidAuthHeaders(): Promise<Record<string, string>> {\n\t\tconst token = await this.getValidAccessToken();\n\t\treturn token ? { Authorization: `Bearer ${token}` } : {};\n\t}\n}\n\nexport { CacheTokenStorage } from './cacheTokenStorage.js';\n"],"mappings":"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"}