@kaiz11/stack-client 0.0.14

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/LICENSE +32 -0
  2. package/README.md +586 -0
  3. package/dist/accounts/accounts-client.d.ts +188 -0
  4. package/dist/accounts/accounts-client.d.ts.map +1 -0
  5. package/dist/accounts/accounts-client.js +264 -0
  6. package/dist/accounts/accounts-client.js.map +1 -0
  7. package/dist/accounts/index.d.ts +8 -0
  8. package/dist/accounts/index.d.ts.map +1 -0
  9. package/dist/accounts/index.js +8 -0
  10. package/dist/accounts/index.js.map +1 -0
  11. package/dist/accounts/mock-accounts.d.ts +90 -0
  12. package/dist/accounts/mock-accounts.d.ts.map +1 -0
  13. package/dist/accounts/mock-accounts.js +434 -0
  14. package/dist/accounts/mock-accounts.js.map +1 -0
  15. package/dist/accounts/types.d.ts +180 -0
  16. package/dist/accounts/types.d.ts.map +1 -0
  17. package/dist/accounts/types.js +59 -0
  18. package/dist/accounts/types.js.map +1 -0
  19. package/dist/auth/auth-client.d.ts +224 -0
  20. package/dist/auth/auth-client.d.ts.map +1 -0
  21. package/dist/auth/auth-client.js +230 -0
  22. package/dist/auth/auth-client.js.map +1 -0
  23. package/dist/auth/base-auth.d.ts +44 -0
  24. package/dist/auth/base-auth.d.ts.map +1 -0
  25. package/dist/auth/base-auth.js +55 -0
  26. package/dist/auth/base-auth.js.map +1 -0
  27. package/dist/auth/index.d.ts +11 -0
  28. package/dist/auth/index.d.ts.map +1 -0
  29. package/dist/auth/index.js +11 -0
  30. package/dist/auth/index.js.map +1 -0
  31. package/dist/auth/methods/admin.d.ts +59 -0
  32. package/dist/auth/methods/admin.d.ts.map +1 -0
  33. package/dist/auth/methods/admin.js +55 -0
  34. package/dist/auth/methods/admin.js.map +1 -0
  35. package/dist/auth/methods/index.d.ts +9 -0
  36. package/dist/auth/methods/index.d.ts.map +1 -0
  37. package/dist/auth/methods/index.js +8 -0
  38. package/dist/auth/methods/index.js.map +1 -0
  39. package/dist/auth/methods/magic-link.d.ts +27 -0
  40. package/dist/auth/methods/magic-link.d.ts.map +1 -0
  41. package/dist/auth/methods/magic-link.js +37 -0
  42. package/dist/auth/methods/magic-link.js.map +1 -0
  43. package/dist/auth/methods/mfa.d.ts +92 -0
  44. package/dist/auth/methods/mfa.d.ts.map +1 -0
  45. package/dist/auth/methods/mfa.js +153 -0
  46. package/dist/auth/methods/mfa.js.map +1 -0
  47. package/dist/auth/methods/oauth.d.ts +62 -0
  48. package/dist/auth/methods/oauth.d.ts.map +1 -0
  49. package/dist/auth/methods/oauth.js +165 -0
  50. package/dist/auth/methods/oauth.js.map +1 -0
  51. package/dist/auth/methods/otp.d.ts +43 -0
  52. package/dist/auth/methods/otp.d.ts.map +1 -0
  53. package/dist/auth/methods/otp.js +66 -0
  54. package/dist/auth/methods/otp.js.map +1 -0
  55. package/dist/auth/methods/password.d.ts +64 -0
  56. package/dist/auth/methods/password.d.ts.map +1 -0
  57. package/dist/auth/methods/password.js +116 -0
  58. package/dist/auth/methods/password.js.map +1 -0
  59. package/dist/auth/methods/recovery.d.ts +62 -0
  60. package/dist/auth/methods/recovery.d.ts.map +1 -0
  61. package/dist/auth/methods/recovery.js +100 -0
  62. package/dist/auth/methods/recovery.js.map +1 -0
  63. package/dist/auth/mock-auth.d.ts +135 -0
  64. package/dist/auth/mock-auth.d.ts.map +1 -0
  65. package/dist/auth/mock-auth.js +417 -0
  66. package/dist/auth/mock-auth.js.map +1 -0
  67. package/dist/auth/server/helpers.d.ts +215 -0
  68. package/dist/auth/server/helpers.d.ts.map +1 -0
  69. package/dist/auth/server/helpers.js +241 -0
  70. package/dist/auth/server/helpers.js.map +1 -0
  71. package/dist/auth/server/index.d.ts +24 -0
  72. package/dist/auth/server/index.d.ts.map +1 -0
  73. package/dist/auth/server/index.js +40 -0
  74. package/dist/auth/server/index.js.map +1 -0
  75. package/dist/auth/server/middleware.d.ts +305 -0
  76. package/dist/auth/server/middleware.d.ts.map +1 -0
  77. package/dist/auth/server/middleware.js +405 -0
  78. package/dist/auth/server/middleware.js.map +1 -0
  79. package/dist/auth/server/verify.d.ts +184 -0
  80. package/dist/auth/server/verify.d.ts.map +1 -0
  81. package/dist/auth/server/verify.js +222 -0
  82. package/dist/auth/server/verify.js.map +1 -0
  83. package/dist/auth/token-manager.d.ts +94 -0
  84. package/dist/auth/token-manager.d.ts.map +1 -0
  85. package/dist/auth/token-manager.js +231 -0
  86. package/dist/auth/token-manager.js.map +1 -0
  87. package/dist/auth/types.d.ts +412 -0
  88. package/dist/auth/types.d.ts.map +1 -0
  89. package/dist/auth/types.js +66 -0
  90. package/dist/auth/types.js.map +1 -0
  91. package/dist/auth/user/identities.d.ts +62 -0
  92. package/dist/auth/user/identities.d.ts.map +1 -0
  93. package/dist/auth/user/identities.js +88 -0
  94. package/dist/auth/user/identities.js.map +1 -0
  95. package/dist/auth/user/index.d.ts +4 -0
  96. package/dist/auth/user/index.d.ts.map +1 -0
  97. package/dist/auth/user/index.js +4 -0
  98. package/dist/auth/user/index.js.map +1 -0
  99. package/dist/auth/user/user.d.ts +64 -0
  100. package/dist/auth/user/user.d.ts.map +1 -0
  101. package/dist/auth/user/user.js +105 -0
  102. package/dist/auth/user/user.js.map +1 -0
  103. package/dist/auth/user/verification.d.ts +49 -0
  104. package/dist/auth/user/verification.d.ts.map +1 -0
  105. package/dist/auth/user/verification.js +71 -0
  106. package/dist/auth/user/verification.js.map +1 -0
  107. package/dist/cli/browser.d.ts +11 -0
  108. package/dist/cli/browser.d.ts.map +1 -0
  109. package/dist/cli/browser.js +35 -0
  110. package/dist/cli/browser.js.map +1 -0
  111. package/dist/cli/callback-server.d.ts +30 -0
  112. package/dist/cli/callback-server.d.ts.map +1 -0
  113. package/dist/cli/callback-server.js +100 -0
  114. package/dist/cli/callback-server.js.map +1 -0
  115. package/dist/cli/file-token-store.d.ts +79 -0
  116. package/dist/cli/file-token-store.d.ts.map +1 -0
  117. package/dist/cli/file-token-store.js +138 -0
  118. package/dist/cli/file-token-store.js.map +1 -0
  119. package/dist/cli/index.d.ts +33 -0
  120. package/dist/cli/index.d.ts.map +1 -0
  121. package/dist/cli/index.js +38 -0
  122. package/dist/cli/index.js.map +1 -0
  123. package/dist/cli/oauth.d.ts +67 -0
  124. package/dist/cli/oauth.d.ts.map +1 -0
  125. package/dist/cli/oauth.js +101 -0
  126. package/dist/cli/oauth.js.map +1 -0
  127. package/dist/cli/pkce.d.ts +35 -0
  128. package/dist/cli/pkce.d.ts.map +1 -0
  129. package/dist/cli/pkce.js +43 -0
  130. package/dist/cli/pkce.js.map +1 -0
  131. package/dist/client.d.ts +22 -0
  132. package/dist/client.d.ts.map +1 -0
  133. package/dist/client.js +99 -0
  134. package/dist/client.js.map +1 -0
  135. package/dist/db/client.d.ts +9 -0
  136. package/dist/db/client.d.ts.map +1 -0
  137. package/dist/db/client.js +19 -0
  138. package/dist/db/client.js.map +1 -0
  139. package/dist/db/errors.d.ts +19 -0
  140. package/dist/db/errors.d.ts.map +1 -0
  141. package/dist/db/errors.js +57 -0
  142. package/dist/db/errors.js.map +1 -0
  143. package/dist/db/index.d.ts +7 -0
  144. package/dist/db/index.d.ts.map +1 -0
  145. package/dist/db/index.js +5 -0
  146. package/dist/db/index.js.map +1 -0
  147. package/dist/db/mock.d.ts +28 -0
  148. package/dist/db/mock.d.ts.map +1 -0
  149. package/dist/db/mock.js +459 -0
  150. package/dist/db/mock.js.map +1 -0
  151. package/dist/db/types.d.ts +73 -0
  152. package/dist/db/types.d.ts.map +1 -0
  153. package/dist/db/types.js +2 -0
  154. package/dist/db/types.js.map +1 -0
  155. package/dist/index.d.ts +21 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +20 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/lib/errors.d.ts +33 -0
  160. package/dist/lib/errors.d.ts.map +1 -0
  161. package/dist/lib/errors.js +76 -0
  162. package/dist/lib/errors.js.map +1 -0
  163. package/dist/lib/http.d.ts +81 -0
  164. package/dist/lib/http.d.ts.map +1 -0
  165. package/dist/lib/http.js +163 -0
  166. package/dist/lib/http.js.map +1 -0
  167. package/dist/lib/keys.d.ts +87 -0
  168. package/dist/lib/keys.d.ts.map +1 -0
  169. package/dist/lib/keys.js +147 -0
  170. package/dist/lib/keys.js.map +1 -0
  171. package/dist/lib/paths.d.ts +37 -0
  172. package/dist/lib/paths.d.ts.map +1 -0
  173. package/dist/lib/paths.js +49 -0
  174. package/dist/lib/paths.js.map +1 -0
  175. package/dist/lib/token-store.d.ts +42 -0
  176. package/dist/lib/token-store.d.ts.map +1 -0
  177. package/dist/lib/token-store.js +75 -0
  178. package/dist/lib/token-store.js.map +1 -0
  179. package/dist/mocks/handlers.d.ts +29 -0
  180. package/dist/mocks/handlers.d.ts.map +1 -0
  181. package/dist/mocks/handlers.js +79 -0
  182. package/dist/mocks/handlers.js.map +1 -0
  183. package/dist/mocks/index.d.ts +5 -0
  184. package/dist/mocks/index.d.ts.map +1 -0
  185. package/dist/mocks/index.js +9 -0
  186. package/dist/mocks/index.js.map +1 -0
  187. package/dist/mocks/responses.d.ts +76 -0
  188. package/dist/mocks/responses.d.ts.map +1 -0
  189. package/dist/mocks/responses.js +91 -0
  190. package/dist/mocks/responses.js.map +1 -0
  191. package/dist/mocks/server.d.ts +7 -0
  192. package/dist/mocks/server.d.ts.map +1 -0
  193. package/dist/mocks/server.js +9 -0
  194. package/dist/mocks/server.js.map +1 -0
  195. package/dist/mocks/state.d.ts +86 -0
  196. package/dist/mocks/state.d.ts.map +1 -0
  197. package/dist/mocks/state.js +77 -0
  198. package/dist/mocks/state.js.map +1 -0
  199. package/dist/storage/bucket-ref.d.ts +183 -0
  200. package/dist/storage/bucket-ref.d.ts.map +1 -0
  201. package/dist/storage/bucket-ref.js +529 -0
  202. package/dist/storage/bucket-ref.js.map +1 -0
  203. package/dist/storage/errors.d.ts +27 -0
  204. package/dist/storage/errors.d.ts.map +1 -0
  205. package/dist/storage/errors.js +89 -0
  206. package/dist/storage/errors.js.map +1 -0
  207. package/dist/storage/index.d.ts +13 -0
  208. package/dist/storage/index.d.ts.map +1 -0
  209. package/dist/storage/index.js +11 -0
  210. package/dist/storage/index.js.map +1 -0
  211. package/dist/storage/interface.d.ts +245 -0
  212. package/dist/storage/interface.d.ts.map +1 -0
  213. package/dist/storage/interface.js +2 -0
  214. package/dist/storage/interface.js.map +1 -0
  215. package/dist/storage/mock-storage.d.ts +67 -0
  216. package/dist/storage/mock-storage.d.ts.map +1 -0
  217. package/dist/storage/mock-storage.js +478 -0
  218. package/dist/storage/mock-storage.js.map +1 -0
  219. package/dist/storage/policies-client.d.ts +77 -0
  220. package/dist/storage/policies-client.d.ts.map +1 -0
  221. package/dist/storage/policies-client.js +115 -0
  222. package/dist/storage/policies-client.js.map +1 -0
  223. package/dist/storage/policy-templates.d.ts +6 -0
  224. package/dist/storage/policy-templates.d.ts.map +1 -0
  225. package/dist/storage/policy-templates.js +290 -0
  226. package/dist/storage/policy-templates.js.map +1 -0
  227. package/dist/storage/policy-types.d.ts +98 -0
  228. package/dist/storage/policy-types.d.ts.map +1 -0
  229. package/dist/storage/policy-types.js +20 -0
  230. package/dist/storage/policy-types.js.map +1 -0
  231. package/dist/storage/storage-client.d.ts +32 -0
  232. package/dist/storage/storage-client.d.ts.map +1 -0
  233. package/dist/storage/storage-client.js +94 -0
  234. package/dist/storage/storage-client.js.map +1 -0
  235. package/dist/storage/tus-upload.d.ts +56 -0
  236. package/dist/storage/tus-upload.d.ts.map +1 -0
  237. package/dist/storage/tus-upload.js +236 -0
  238. package/dist/storage/tus-upload.js.map +1 -0
  239. package/dist/storage/types.d.ts +335 -0
  240. package/dist/storage/types.d.ts.map +1 -0
  241. package/dist/storage/types.js +39 -0
  242. package/dist/storage/types.js.map +1 -0
  243. package/dist/test/auth/helpers.d.ts +33 -0
  244. package/dist/test/auth/helpers.d.ts.map +1 -0
  245. package/dist/test/auth/helpers.js +80 -0
  246. package/dist/test/auth/helpers.js.map +1 -0
  247. package/dist/test/helpers/jwt.d.ts +61 -0
  248. package/dist/test/helpers/jwt.d.ts.map +1 -0
  249. package/dist/test/helpers/jwt.js +132 -0
  250. package/dist/test/helpers/jwt.js.map +1 -0
  251. package/dist/test/helpers/mailpit.d.ts +61 -0
  252. package/dist/test/helpers/mailpit.d.ts.map +1 -0
  253. package/dist/test/helpers/mailpit.js +107 -0
  254. package/dist/test/helpers/mailpit.js.map +1 -0
  255. package/dist/test/setup.d.ts +2 -0
  256. package/dist/test/setup.d.ts.map +1 -0
  257. package/dist/test/setup.js +17 -0
  258. package/dist/test/setup.js.map +1 -0
  259. package/dist/types.d.ts +96 -0
  260. package/dist/types.d.ts.map +1 -0
  261. package/dist/types.js +5 -0
  262. package/dist/types.js.map +1 -0
  263. package/package.json +78 -0
@@ -0,0 +1,73 @@
1
+ export interface DbResponse<T> {
2
+ data: T[] | null;
3
+ error: unknown | null;
4
+ count: number | null;
5
+ status: number;
6
+ statusText: string;
7
+ }
8
+ export interface DbSingleResponse<T> {
9
+ data: T | null;
10
+ error: unknown | null;
11
+ count: number | null;
12
+ status: number;
13
+ statusText: string;
14
+ }
15
+ export interface IQueryBuilder<T = unknown> {
16
+ select(columns?: string, options?: {
17
+ count?: string;
18
+ head?: boolean;
19
+ }): IQueryBuilder<T>;
20
+ insert(values: Partial<T> | Partial<T>[], options?: {
21
+ onConflict?: string;
22
+ count?: string;
23
+ }): IQueryBuilder<T>;
24
+ update(values: Partial<T>, options?: {
25
+ count?: string;
26
+ }): IQueryBuilder<T>;
27
+ delete(options?: {
28
+ count?: string;
29
+ }): IQueryBuilder<T>;
30
+ upsert(values: Partial<T> | Partial<T>[], options?: {
31
+ onConflict?: string;
32
+ count?: string;
33
+ }): IQueryBuilder<T>;
34
+ eq(column: string, value: unknown): IQueryBuilder<T>;
35
+ neq(column: string, value: unknown): IQueryBuilder<T>;
36
+ gt(column: string, value: unknown): IQueryBuilder<T>;
37
+ gte(column: string, value: unknown): IQueryBuilder<T>;
38
+ lt(column: string, value: unknown): IQueryBuilder<T>;
39
+ lte(column: string, value: unknown): IQueryBuilder<T>;
40
+ like(column: string, pattern: string): IQueryBuilder<T>;
41
+ ilike(column: string, pattern: string): IQueryBuilder<T>;
42
+ is(column: string, value: unknown): IQueryBuilder<T>;
43
+ in(column: string, values: unknown[]): IQueryBuilder<T>;
44
+ contains(column: string, value: unknown): IQueryBuilder<T>;
45
+ containedBy(column: string, value: unknown): IQueryBuilder<T>;
46
+ overlaps(column: string, value: unknown): IQueryBuilder<T>;
47
+ textSearch(column: string, query: string, options?: unknown): IQueryBuilder<T>;
48
+ filter(column: string, operator: string, value: unknown): IQueryBuilder<T>;
49
+ or(filters: string, options?: {
50
+ referencedTable?: string;
51
+ }): IQueryBuilder<T>;
52
+ and(filters: string, options?: {
53
+ referencedTable?: string;
54
+ }): IQueryBuilder<T>;
55
+ order(column: string, options?: {
56
+ ascending?: boolean;
57
+ nullsFirst?: boolean;
58
+ }): IQueryBuilder<T>;
59
+ limit(count: number): IQueryBuilder<T>;
60
+ range(from: number, to: number): IQueryBuilder<T>;
61
+ single(): PromiseLike<DbSingleResponse<T>>;
62
+ maybeSingle(): PromiseLike<DbSingleResponse<T>>;
63
+ then<TResult = DbResponse<T>>(onfulfilled?: (value: DbResponse<T>) => TResult | PromiseLike<TResult>, onrejected?: (reason: unknown) => TResult | PromiseLike<TResult>): Promise<TResult>;
64
+ }
65
+ export interface IDbClient {
66
+ from<T = unknown>(table: string): IQueryBuilder<T>;
67
+ rpc<T = unknown>(fn: string, params?: Record<string, unknown>, options?: {
68
+ count?: string;
69
+ head?: boolean;
70
+ }): PromiseLike<T>;
71
+ schema(name: string): IDbClient;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,MAAM,CACJ,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3C,aAAa,CAAC,CAAC,CAAC,CAAC;IAEpB,MAAM,CACJ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EACjC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,aAAa,CAAC,CAAC,CAAC,CAAC;IAEpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAEvD,MAAM,CACJ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EACjC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,aAAa,CAAC,CAAC,CAAC,CAAC;IAEpB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACtD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACtD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACzD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3D,UAAU,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,GAChB,aAAa,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAE3E,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9E,GAAG,CACD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACrC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEpB,KAAK,CACH,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GACtD,aAAa,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,WAAW,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAC1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,EACtE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAC/D,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAEnD,GAAG,CAAC,CAAC,GAAG,OAAO,EACb,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3C,WAAW,CAAC,CAAC,CAAC,CAAC;IAElB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ export { StackClient, createClient, createTenantClient, createPlatformClient, } from "./client.js";
2
+ export { MemoryTokenStore, LocalStorageTokenStore } from "./lib/token-store.js";
3
+ export type { ClientConfig, ResolvedClientConfig, TokenStore, TokenStoreType, MockOptions, } from "./types.js";
4
+ export { PLATFORM_TENANT_ID } from "./types.js";
5
+ export type { IAuthClient, Session, User, UserIdentity, Factor, FactorType, FactorStatus, AuthChangeEvent, AuthChangeCallback, Unsubscribe, EmailPasswordCredentials, SignUpOptions, SignUpResult, LogoutScope, } from "./auth/index.js";
6
+ export { StackError, AuthError, NetworkError } from "./lib/errors.js";
7
+ export { StorageError } from "./storage/index.js";
8
+ export { AnonKeyError } from "./lib/keys.js";
9
+ export { fetchAnonKey, fetchAnonKeyCached, clearAnonKeyCache, buildPublicKeyUrl, } from "./lib/keys.js";
10
+ export type { IStorageClient, IBucketRef, Bucket, CreateBucketOptions, UpdateBucketOptions, StorageObject, ObjectMetadata, FileBody, UploadOptions, UploadResult, DownloadOptions, ImageTransformOptions, ListOptions, ListV2Options, ListV2Result, SignedUrl, SignedUrlOptions, SignedUploadUrl, SignedUploadUrlOptions, PublicUrlOptions, MoveOptions, CopyOptions, CopyResult, TusUpload, TusUploadOptions, TusProgress, IStoragePoliciesClient, PolicyCommand, PolicyAction, PolicyTemplate, StoragePolicyInput, StoragePolicy, StoragePolicySet, } from "./storage/index.js";
11
+ export { generatePolicySet } from "./storage/index.js";
12
+ export type { IAccountsClient, Account, AccountMember, AccountRole, AccountRoleInfo, CreateAccountOptions, UpdateAccountOptions, GetMembersOptions, UpdateMemberRoleOptions, Invitation, InvitationLookup, AcceptedInvitation, InvitationType, CreateInvitationOptions, GetInvitationsOptions, } from "./accounts/index.js";
13
+ export { mockState, requestCounts } from "./mocks/state.js";
14
+ export type { MockState, RequestCounts } from "./mocks/state.js";
15
+ export { mockStorageState, storageRequestCounts } from "./storage/index.js";
16
+ export type { MockStorageState } from "./storage/index.js";
17
+ export { mockAccountsState, accountsRequestCounts } from "./accounts/index.js";
18
+ export type { MockAccountsState } from "./accounts/index.js";
19
+ export { PostgrestClient, createDbClient, DbError, mockDbState, dbRequestCounts, resetMockDbState, } from "./db/index.js";
20
+ export type { PostgrestQueryBuilder, PostgrestFilterBuilder, PostgrestTransformBuilder, PostgrestBuilder, PostgrestResponse, PostgrestSingleResponse, PostgrestMaybeSingleResponse, PostgrestError, DbClientConfig, MockDbState, DbRequestCounts, IDbClient, IQueryBuilder, DbResponse, DbSingleResponse, } from "./db/index.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAKhF,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,YAAY,EACV,WAAW,EACX,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,cAAc,EACd,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EAEX,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,YAAY,EACV,eAAe,EACf,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAEvB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,eAAe,EACf,cAAc,EACd,OAAO,EACP,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ // Main client exports
2
+ export { StackClient, createClient, createTenantClient, createPlatformClient, } from "./client.js";
3
+ // Token store exports
4
+ export { MemoryTokenStore, LocalStorageTokenStore } from "./lib/token-store.js";
5
+ // Constants
6
+ export { PLATFORM_TENANT_ID } from "./types.js";
7
+ // Error exports
8
+ export { StackError, AuthError, NetworkError } from "./lib/errors.js";
9
+ export { StorageError } from "./storage/index.js";
10
+ export { AnonKeyError } from "./lib/keys.js";
11
+ // Key utilities
12
+ export { fetchAnonKey, fetchAnonKeyCached, clearAnonKeyCache, buildPublicKeyUrl, } from "./lib/keys.js";
13
+ // Storage policy helpers
14
+ export { generatePolicySet } from "./storage/index.js";
15
+ // Mock exports (for testing)
16
+ export { mockState, requestCounts } from "./mocks/state.js";
17
+ export { mockStorageState, storageRequestCounts } from "./storage/index.js";
18
+ export { mockAccountsState, accountsRequestCounts } from "./accounts/index.js";
19
+ export { PostgrestClient, createDbClient, DbError, mockDbState, dbRequestCounts, resetMockDbState, } from "./db/index.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAahF,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAoBhD,gBAAgB;AAChB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAwCvB,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAsBvD,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/E,OAAO,EACL,eAAe,EACf,cAAc,EACd,OAAO,EACP,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Base error class for all stack-client errors
3
+ */
4
+ export declare class StackError extends Error {
5
+ code: string;
6
+ statusCode?: number | undefined;
7
+ constructor(message: string, code: string, statusCode?: number | undefined);
8
+ }
9
+ /**
10
+ * Authentication-related errors
11
+ */
12
+ export declare class AuthError extends StackError {
13
+ constructor(message: string, code: string, statusCode?: number);
14
+ static invalidCredentials(): AuthError;
15
+ static sessionExpired(): AuthError;
16
+ static refreshFailed(): AuthError;
17
+ static notAuthenticated(): AuthError;
18
+ static userAlreadyExists(): AuthError;
19
+ }
20
+ /**
21
+ * Network/HTTP errors
22
+ */
23
+ export declare class NetworkError extends StackError {
24
+ response?: unknown | undefined;
25
+ constructor(message: string, code: string, statusCode?: number, response?: unknown | undefined);
26
+ static timeout(): NetworkError;
27
+ static connectionFailed(): NetworkError;
28
+ }
29
+ /**
30
+ * Parse error response from GoTrue/PostgREST
31
+ */
32
+ export declare function parseErrorResponse(statusCode: number, body: unknown): StackError;
33
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;IACZ,UAAU,CAAC,EAAE,MAAM;gBAF1B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK9D,MAAM,CAAC,kBAAkB,IAAI,SAAS;IAQtC,MAAM,CAAC,cAAc,IAAI,SAAS;IAIlC,MAAM,CAAC,aAAa,IAAI,SAAS;IAIjC,MAAM,CAAC,gBAAgB,IAAI,SAAS;IAIpC,MAAM,CAAC,iBAAiB,IAAI,SAAS;CAGtC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAKjC,QAAQ,CAAC,EAAE,OAAO;gBAHzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,OAAO,YAAA;IAM3B,MAAM,CAAC,OAAO,IAAI,YAAY;IAI9B,MAAM,CAAC,gBAAgB,IAAI,YAAY;CAGxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,UAAU,CA0BZ"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Base error class for all stack-client errors
3
+ */
4
+ export class StackError extends Error {
5
+ code;
6
+ statusCode;
7
+ constructor(message, code, statusCode) {
8
+ super(message);
9
+ this.code = code;
10
+ this.statusCode = statusCode;
11
+ this.name = "StackError";
12
+ }
13
+ }
14
+ /**
15
+ * Authentication-related errors
16
+ */
17
+ export class AuthError extends StackError {
18
+ constructor(message, code, statusCode) {
19
+ super(message, code, statusCode);
20
+ this.name = "AuthError";
21
+ }
22
+ static invalidCredentials() {
23
+ return new AuthError("Invalid email or password", "invalid_credentials", 401);
24
+ }
25
+ static sessionExpired() {
26
+ return new AuthError("Session has expired", "session_expired", 401);
27
+ }
28
+ static refreshFailed() {
29
+ return new AuthError("Failed to refresh token", "refresh_failed", 401);
30
+ }
31
+ static notAuthenticated() {
32
+ return new AuthError("Not authenticated", "not_authenticated", 401);
33
+ }
34
+ static userAlreadyExists() {
35
+ return new AuthError("User already exists", "user_already_exists", 422);
36
+ }
37
+ }
38
+ /**
39
+ * Network/HTTP errors
40
+ */
41
+ export class NetworkError extends StackError {
42
+ response;
43
+ constructor(message, code, statusCode, response) {
44
+ super(message, code, statusCode);
45
+ this.response = response;
46
+ this.name = "NetworkError";
47
+ }
48
+ static timeout() {
49
+ return new NetworkError("Request timed out", "timeout");
50
+ }
51
+ static connectionFailed() {
52
+ return new NetworkError("Connection failed", "connection_failed");
53
+ }
54
+ }
55
+ /**
56
+ * Parse error response from GoTrue/PostgREST
57
+ */
58
+ export function parseErrorResponse(statusCode, body) {
59
+ // GoTrue format: { code: number, error_code: string, msg: string }
60
+ // PostgREST format: { message: string, code: string, details?: string }
61
+ if (typeof body === "object" && body !== null) {
62
+ const obj = body;
63
+ // GoTrue format: { code: 422, error_code: "user_already_exists", msg: "..." }
64
+ if (typeof obj.msg === "string") {
65
+ const code = typeof obj.error_code === "string" ? obj.error_code : "unknown";
66
+ return new AuthError(obj.msg, code, statusCode);
67
+ }
68
+ // PostgREST format: { message: "...", code: "..." }
69
+ if (typeof obj.message === "string") {
70
+ const code = typeof obj.code === "string" ? obj.code : "unknown";
71
+ return new StackError(obj.message, code, statusCode);
72
+ }
73
+ }
74
+ return new StackError(`Request failed with status ${statusCode}`, "unknown_error", statusCode);
75
+ }
76
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { TokenStore } from "./token-store.js";
2
+ /**
3
+ * HTTP client configuration
4
+ */
5
+ export interface HttpClientConfig {
6
+ baseUrl: string;
7
+ tokenStore: TokenStore;
8
+ timeout?: number;
9
+ }
10
+ /**
11
+ * Request options
12
+ */
13
+ export interface RequestOptions {
14
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
15
+ headers?: Record<string, string>;
16
+ body?: unknown;
17
+ /** Skip adding Authorization header */
18
+ noAuth?: boolean;
19
+ /** Custom timeout for this request */
20
+ timeout?: number;
21
+ }
22
+ /**
23
+ * Raw request options for non-JSON requests (file uploads, binary downloads)
24
+ */
25
+ export interface RawRequestOptions {
26
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD";
27
+ headers?: Record<string, string>;
28
+ /** Raw body (FormData, Blob, ArrayBuffer, string, etc.) */
29
+ body?: BodyInit;
30
+ /** Skip adding Authorization header */
31
+ noAuth?: boolean;
32
+ /** Custom timeout for this request */
33
+ timeout?: number;
34
+ }
35
+ /**
36
+ * HTTP client with authentication and error handling
37
+ */
38
+ export declare class HttpClient {
39
+ private baseUrl;
40
+ private tokenStore;
41
+ private defaultTimeout;
42
+ constructor(config: HttpClientConfig);
43
+ /**
44
+ * Make an HTTP request
45
+ */
46
+ request<T>(path: string, options?: RequestOptions): Promise<T>;
47
+ /**
48
+ * GET request
49
+ */
50
+ get<T>(path: string, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
51
+ /**
52
+ * POST request
53
+ */
54
+ post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
55
+ /**
56
+ * PUT request
57
+ */
58
+ put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
59
+ /**
60
+ * PATCH request
61
+ */
62
+ patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
63
+ /**
64
+ * DELETE request
65
+ */
66
+ delete<T>(path: string, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
67
+ /**
68
+ * Raw request for non-JSON operations (file uploads, binary downloads)
69
+ * Returns the raw Response object for caller to handle
70
+ */
71
+ rawRequest(path: string, options?: RawRequestOptions): Promise<Response>;
72
+ /**
73
+ * Get current access token (for manual requests)
74
+ */
75
+ getAccessToken(): string | null;
76
+ /**
77
+ * Get the base URL
78
+ */
79
+ getBaseUrl(): string;
80
+ }
81
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,gBAAgB;IAOpC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAiExE;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,MAAM,CAAC,CAAC,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;;OAGG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IA6DpB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,163 @@
1
+ import { NetworkError, parseErrorResponse } from "./errors.js";
2
+ /**
3
+ * HTTP client with authentication and error handling
4
+ */
5
+ export class HttpClient {
6
+ baseUrl;
7
+ tokenStore;
8
+ defaultTimeout;
9
+ constructor(config) {
10
+ // Remove trailing slash from baseUrl
11
+ this.baseUrl = config.baseUrl.replace(/\/$/, "");
12
+ this.tokenStore = config.tokenStore;
13
+ this.defaultTimeout = config.timeout ?? 30000;
14
+ }
15
+ /**
16
+ * Make an HTTP request
17
+ */
18
+ async request(path, options = {}) {
19
+ const { method = "GET", headers = {}, body, noAuth, timeout } = options;
20
+ const url = `${this.baseUrl}${path}`;
21
+ const requestHeaders = {
22
+ "Content-Type": "application/json",
23
+ ...headers,
24
+ };
25
+ // Add Authorization header if authenticated and not explicitly skipped
26
+ if (!noAuth) {
27
+ const accessToken = this.tokenStore.getAccessToken();
28
+ if (accessToken) {
29
+ requestHeaders["Authorization"] = `Bearer ${accessToken}`;
30
+ }
31
+ }
32
+ // Create abort controller for timeout
33
+ const controller = new AbortController();
34
+ const timeoutId = setTimeout(() => controller.abort(), timeout ?? this.defaultTimeout);
35
+ try {
36
+ const response = await fetch(url, {
37
+ method,
38
+ headers: requestHeaders,
39
+ body: body !== undefined ? JSON.stringify(body) : undefined,
40
+ signal: controller.signal,
41
+ });
42
+ clearTimeout(timeoutId);
43
+ // Parse response body
44
+ const contentType = response.headers.get("content-type");
45
+ let responseBody;
46
+ if (contentType?.includes("application/json")) {
47
+ responseBody = await response.json();
48
+ }
49
+ else {
50
+ responseBody = await response.text();
51
+ }
52
+ // Handle error responses
53
+ if (!response.ok) {
54
+ throw parseErrorResponse(response.status, responseBody);
55
+ }
56
+ return responseBody;
57
+ }
58
+ catch (error) {
59
+ clearTimeout(timeoutId);
60
+ if (error instanceof Error && error.name === "AbortError") {
61
+ throw NetworkError.timeout();
62
+ }
63
+ if (error instanceof TypeError) {
64
+ throw NetworkError.connectionFailed();
65
+ }
66
+ throw error;
67
+ }
68
+ }
69
+ /**
70
+ * GET request
71
+ */
72
+ async get(path, options) {
73
+ return this.request(path, { ...options, method: "GET" });
74
+ }
75
+ /**
76
+ * POST request
77
+ */
78
+ async post(path, body, options) {
79
+ return this.request(path, { ...options, method: "POST", body });
80
+ }
81
+ /**
82
+ * PUT request
83
+ */
84
+ async put(path, body, options) {
85
+ return this.request(path, { ...options, method: "PUT", body });
86
+ }
87
+ /**
88
+ * PATCH request
89
+ */
90
+ async patch(path, body, options) {
91
+ return this.request(path, { ...options, method: "PATCH", body });
92
+ }
93
+ /**
94
+ * DELETE request
95
+ */
96
+ async delete(path, options) {
97
+ return this.request(path, { ...options, method: "DELETE" });
98
+ }
99
+ /**
100
+ * Raw request for non-JSON operations (file uploads, binary downloads)
101
+ * Returns the raw Response object for caller to handle
102
+ */
103
+ async rawRequest(path, options = {}) {
104
+ const { method = "GET", headers = {}, body, noAuth, timeout } = options;
105
+ const url = `${this.baseUrl}${path}`;
106
+ const requestHeaders = { ...headers };
107
+ // Add Authorization header if authenticated and not explicitly skipped
108
+ if (!noAuth) {
109
+ const accessToken = this.tokenStore.getAccessToken();
110
+ if (accessToken) {
111
+ requestHeaders["Authorization"] = `Bearer ${accessToken}`;
112
+ }
113
+ }
114
+ // Create abort controller for timeout
115
+ const controller = new AbortController();
116
+ const timeoutId = setTimeout(() => controller.abort(), timeout ?? this.defaultTimeout);
117
+ try {
118
+ const response = await fetch(url, {
119
+ method,
120
+ headers: requestHeaders,
121
+ body,
122
+ signal: controller.signal,
123
+ });
124
+ clearTimeout(timeoutId);
125
+ // Handle error responses
126
+ if (!response.ok) {
127
+ const contentType = response.headers.get("content-type");
128
+ let errorBody;
129
+ if (contentType?.includes("application/json")) {
130
+ errorBody = await response.json();
131
+ }
132
+ else {
133
+ errorBody = await response.text();
134
+ }
135
+ throw parseErrorResponse(response.status, errorBody);
136
+ }
137
+ return response;
138
+ }
139
+ catch (error) {
140
+ clearTimeout(timeoutId);
141
+ if (error instanceof Error && error.name === "AbortError") {
142
+ throw NetworkError.timeout();
143
+ }
144
+ if (error instanceof TypeError) {
145
+ throw NetworkError.connectionFailed();
146
+ }
147
+ throw error;
148
+ }
149
+ }
150
+ /**
151
+ * Get current access token (for manual requests)
152
+ */
153
+ getAccessToken() {
154
+ return this.tokenStore.getAccessToken();
155
+ }
156
+ /**
157
+ * Get the base URL
158
+ */
159
+ getBaseUrl() {
160
+ return this.baseUrl;
161
+ }
162
+ }
163
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAuC/D;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,OAAO,CAAS;IAChB,UAAU,CAAa;IACvB,cAAc,CAAS;IAE/B,YAAY,MAAwB;QAClC,qCAAqC;QACrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,UAA0B,EAAE;QACzD,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAExE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,cAAc,GAA2B;YAC7C,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO;SACX,CAAC;QAEF,uEAAuE;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YACrD,IAAI,WAAW,EAAE,CAAC;gBAChB,cAAc,CAAC,eAAe,CAAC,GAAG,UAAU,WAAW,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,OAAO,IAAI,IAAI,CAAC,cAAc,CAC/B,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3D,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,sBAAsB;YACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,YAAqB,CAAC;YAE1B,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC9C,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YAED,yBAAyB;YACzB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO,YAAiB,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;YACxC,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,OAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,IAAc,EACd,OAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,IAAc,EACd,OAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,IAAc,EACd,OAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,OAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CACd,IAAY,EACZ,UAA6B,EAAE;QAE/B,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAExE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,cAAc,GAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;QAE9D,uEAAuE;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YACrD,IAAI,WAAW,EAAE,CAAC;gBAChB,cAAc,CAAC,eAAe,CAAC,GAAG,UAAU,WAAW,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,OAAO,IAAI,IAAI,CAAC,cAAc,CAC/B,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO,EAAE,cAAc;gBACvB,IAAI;gBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,yBAAyB;YACzB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzD,IAAI,SAAkB,CAAC;gBAEvB,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC9C,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpC,CAAC;gBAED,MAAM,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;YACxC,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Error thrown when fetching the anon key fails
3
+ */
4
+ export declare class AnonKeyError extends Error {
5
+ readonly statusCode?: number | undefined;
6
+ constructor(message: string, statusCode?: number | undefined);
7
+ }
8
+ /**
9
+ * Build the public key URL for a tenant
10
+ *
11
+ * @param baseUrl - Base URL of the stack (e.g., "https://stack.zenku.app")
12
+ * @param tenantId - Tenant identifier (default: "_platform")
13
+ * @returns The full URL to fetch the public key
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const url = buildPublicKeyUrl("https://stack.zenku.app", "acme");
18
+ * // => "https://stack.zenku.app/tenants/acme/public_key"
19
+ * ```
20
+ */
21
+ export declare function buildPublicKeyUrl(baseUrl: string, tenantId?: string): string;
22
+ /**
23
+ * Fetch the anon key for a tenant
24
+ *
25
+ * The anon key is a pre-signed JWT with `role = "anon"` that can be used
26
+ * for unauthenticated requests. It's designed to be public - security
27
+ * comes from RLS policies, not from the key being secret.
28
+ *
29
+ * The response is cached by the server (Cache-Control: public, max-age=3600).
30
+ *
31
+ * @param baseUrl - Base URL of the stack (e.g., "https://stack.zenku.app")
32
+ * @param tenantId - Tenant identifier (default: "_platform")
33
+ * @returns The anon key (JWT string)
34
+ * @throws AnonKeyError if the fetch fails
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { fetchAnonKey } from "@kaiz11/stack-client";
39
+ *
40
+ * // Fetch anon key for a tenant
41
+ * const anonKey = await fetchAnonKey("https://stack.zenku.app", "acme");
42
+ *
43
+ * // Use it for unauthenticated requests
44
+ * const response = await fetch("https://stack.zenku.app/rest/acme/items", {
45
+ * headers: { Authorization: `Bearer ${anonKey}` },
46
+ * });
47
+ * ```
48
+ */
49
+ export declare function fetchAnonKey(baseUrl: string, tenantId?: string): Promise<string>;
50
+ /**
51
+ * Fetch the anon key with caching
52
+ *
53
+ * Same as `fetchAnonKey` but caches the result in memory to avoid
54
+ * repeated network requests. The cache respects the server's
55
+ * Cache-Control header (1 hour).
56
+ *
57
+ * @param baseUrl - Base URL of the stack
58
+ * @param tenantId - Tenant identifier (default: "_platform")
59
+ * @param options - Cache options
60
+ * @returns The anon key (JWT string)
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // First call fetches from network
65
+ * const key1 = await fetchAnonKeyCached("https://stack.zenku.app", "acme");
66
+ *
67
+ * // Second call returns cached value
68
+ * const key2 = await fetchAnonKeyCached("https://stack.zenku.app", "acme");
69
+ *
70
+ * // Force refresh
71
+ * const key3 = await fetchAnonKeyCached("https://stack.zenku.app", "acme", {
72
+ * forceRefresh: true,
73
+ * });
74
+ * ```
75
+ */
76
+ export declare function fetchAnonKeyCached(baseUrl: string, tenantId?: string, options?: {
77
+ forceRefresh?: boolean;
78
+ ttl?: number;
79
+ }): Promise<string>;
80
+ /**
81
+ * Clear the anon key cache
82
+ *
83
+ * @param baseUrl - If provided, only clear cache for this base URL
84
+ * @param tenantId - If provided with baseUrl, only clear cache for this tenant
85
+ */
86
+ export declare function clearAnonKeyCache(baseUrl?: string, tenantId?: string): void;
87
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/lib/keys.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,UAAU,CAAC,EAAE,MAAM;gBADnC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA2B,GACpC,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA2B,GACpC,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA2B,EACrC,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAY3E"}