@motherbase/client 2.2.1 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/COMPATIBILITY.md +157 -0
  2. package/LICENSE +21 -21
  3. package/README.md +52 -4
  4. package/dist/admin/auth-admin-client.d.ts +43 -0
  5. package/dist/admin/auth-admin-client.d.ts.map +1 -0
  6. package/dist/admin/auth-admin-client.js +62 -0
  7. package/dist/admin/auth-admin-client.js.map +1 -0
  8. package/dist/admin/auth-admin-mfa-client.d.ts +22 -0
  9. package/dist/admin/auth-admin-mfa-client.d.ts.map +1 -0
  10. package/dist/admin/auth-admin-mfa-client.js +17 -0
  11. package/dist/admin/auth-admin-mfa-client.js.map +1 -0
  12. package/dist/admin/types.d.ts +85 -0
  13. package/dist/admin/types.d.ts.map +1 -0
  14. package/dist/admin/types.js +3 -0
  15. package/dist/admin/types.js.map +1 -0
  16. package/dist/auth/constants.d.ts +21 -0
  17. package/dist/auth/constants.d.ts.map +1 -0
  18. package/dist/auth/constants.js +34 -0
  19. package/dist/auth/constants.js.map +1 -0
  20. package/dist/auth/index.d.ts +5 -0
  21. package/dist/auth/index.d.ts.map +1 -0
  22. package/dist/auth/index.js +34 -0
  23. package/dist/auth/index.js.map +1 -0
  24. package/dist/auth/motherbase-plugin.d.ts +6 -0
  25. package/dist/auth/motherbase-plugin.d.ts.map +1 -0
  26. package/dist/auth/motherbase-plugin.js +80 -0
  27. package/dist/auth/motherbase-plugin.js.map +1 -0
  28. package/dist/auth/pkce.d.ts +19 -0
  29. package/dist/auth/pkce.d.ts.map +1 -0
  30. package/dist/auth/pkce.js +89 -0
  31. package/dist/auth/pkce.js.map +1 -0
  32. package/dist/auth/session-utils.d.ts +29 -0
  33. package/dist/auth/session-utils.d.ts.map +1 -0
  34. package/dist/auth/session-utils.js +123 -0
  35. package/dist/auth/session-utils.js.map +1 -0
  36. package/dist/auth/session.d.ts +51 -0
  37. package/dist/auth/session.d.ts.map +1 -0
  38. package/dist/auth/session.js +161 -0
  39. package/dist/auth/session.js.map +1 -0
  40. package/dist/auth/types.d.ts +341 -0
  41. package/dist/auth/types.d.ts.map +1 -0
  42. package/dist/auth/types.js +2 -0
  43. package/dist/auth/types.js.map +1 -0
  44. package/dist/auth/utils.d.ts +28 -0
  45. package/dist/auth/utils.d.ts.map +1 -0
  46. package/dist/auth/utils.js +70 -0
  47. package/dist/auth/utils.js.map +1 -0
  48. package/dist/auth.d.ts +3 -2
  49. package/dist/auth.d.ts.map +1 -1
  50. package/dist/auth.js +27 -11
  51. package/dist/auth.js.map +1 -1
  52. package/dist/channel.d.ts +11 -0
  53. package/dist/channel.d.ts.map +1 -1
  54. package/dist/channel.js +26 -2
  55. package/dist/channel.js.map +1 -1
  56. package/dist/cookies/cookie-storage.d.ts +12 -0
  57. package/dist/cookies/cookie-storage.d.ts.map +1 -0
  58. package/dist/cookies/cookie-storage.js +35 -0
  59. package/dist/cookies/cookie-storage.js.map +1 -0
  60. package/dist/cookies/index.d.ts +5 -0
  61. package/dist/cookies/index.d.ts.map +1 -0
  62. package/dist/cookies/index.js +5 -0
  63. package/dist/cookies/index.js.map +1 -0
  64. package/dist/cookies/server-cookie-storage.d.ts +20 -0
  65. package/dist/cookies/server-cookie-storage.d.ts.map +1 -0
  66. package/dist/cookies/server-cookie-storage.js +60 -0
  67. package/dist/cookies/server-cookie-storage.js.map +1 -0
  68. package/dist/cookies/types.d.ts +33 -0
  69. package/dist/cookies/types.d.ts.map +1 -0
  70. package/dist/cookies/types.js +8 -0
  71. package/dist/cookies/types.js.map +1 -0
  72. package/dist/cookies/utils.d.ts +23 -0
  73. package/dist/cookies/utils.d.ts.map +1 -0
  74. package/dist/cookies/utils.js +67 -0
  75. package/dist/cookies/utils.js.map +1 -0
  76. package/dist/database/database.d.ts +197 -0
  77. package/dist/database/database.d.ts.map +1 -0
  78. package/dist/database/database.js +2 -0
  79. package/dist/database/database.js.map +1 -0
  80. package/dist/database/facade.d.ts +144 -0
  81. package/dist/database/facade.d.ts.map +1 -0
  82. package/dist/database/facade.js +147 -0
  83. package/dist/database/facade.js.map +1 -0
  84. package/dist/database/query.d.ts +97 -0
  85. package/dist/database/query.d.ts.map +1 -0
  86. package/dist/database/query.js +94 -0
  87. package/dist/database/query.js.map +1 -0
  88. package/dist/database/types.d.ts +314 -0
  89. package/dist/database/types.d.ts.map +1 -0
  90. package/dist/database/types.js +2 -0
  91. package/dist/database/types.js.map +1 -0
  92. package/dist/functions/errors.d.ts +28 -0
  93. package/dist/functions/errors.d.ts.map +1 -0
  94. package/dist/functions/errors.js +37 -0
  95. package/dist/functions/errors.js.map +1 -0
  96. package/dist/functions/index.d.ts +9 -0
  97. package/dist/functions/index.d.ts.map +1 -0
  98. package/dist/functions/index.js +40 -0
  99. package/dist/functions/index.js.map +1 -0
  100. package/dist/functions/types.d.ts +25 -0
  101. package/dist/functions/types.d.ts.map +1 -0
  102. package/dist/functions/types.js +2 -0
  103. package/dist/functions/types.js.map +1 -0
  104. package/dist/http/backend-error.d.ts +17 -0
  105. package/dist/http/backend-error.d.ts.map +1 -0
  106. package/dist/http/backend-error.js +11 -0
  107. package/dist/http/backend-error.js.map +1 -0
  108. package/dist/http/index.d.ts +59 -0
  109. package/dist/http/index.d.ts.map +1 -0
  110. package/dist/http/index.js +175 -0
  111. package/dist/http/index.js.map +1 -0
  112. package/dist/http/types.d.ts +45 -0
  113. package/dist/http/types.d.ts.map +1 -0
  114. package/dist/http/types.js +2 -0
  115. package/dist/http/types.js.map +1 -0
  116. package/dist/http/utils.d.ts +14 -0
  117. package/dist/http/utils.d.ts.map +1 -0
  118. package/dist/http/utils.js +37 -0
  119. package/dist/http/utils.js.map +1 -0
  120. package/dist/http.d.ts.map +1 -1
  121. package/dist/http.js +2 -1
  122. package/dist/http.js.map +1 -1
  123. package/dist/index.d.ts +47 -77
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +58 -73
  126. package/dist/index.js.map +1 -1
  127. package/dist/pkce.js +4 -4
  128. package/dist/postgrest/index.d.ts +4 -0
  129. package/dist/postgrest/index.d.ts.map +1 -0
  130. package/dist/postgrest/index.js +4 -0
  131. package/dist/postgrest/index.js.map +1 -0
  132. package/dist/postgrest/query-builder.d.ts +224 -0
  133. package/dist/postgrest/query-builder.d.ts.map +1 -0
  134. package/dist/postgrest/query-builder.js +544 -0
  135. package/dist/postgrest/query-builder.js.map +1 -0
  136. package/dist/postgrest/rpc.d.ts +12 -0
  137. package/dist/postgrest/rpc.d.ts.map +1 -0
  138. package/dist/postgrest/rpc.js +42 -0
  139. package/dist/postgrest/rpc.js.map +1 -0
  140. package/dist/postgrest/types.d.ts +88 -0
  141. package/dist/postgrest/types.d.ts.map +1 -0
  142. package/dist/postgrest/types.js +2 -0
  143. package/dist/postgrest/types.js.map +1 -0
  144. package/dist/postgrest/utils.d.ts +23 -0
  145. package/dist/postgrest/utils.d.ts.map +1 -0
  146. package/dist/postgrest/utils.js +87 -0
  147. package/dist/postgrest/utils.js.map +1 -0
  148. package/dist/postgrest.d.ts +5 -1
  149. package/dist/postgrest.d.ts.map +1 -1
  150. package/dist/postgrest.js +17 -10
  151. package/dist/postgrest.js.map +1 -1
  152. package/dist/realtime/channel.d.ts +83 -0
  153. package/dist/realtime/channel.d.ts.map +1 -0
  154. package/dist/realtime/channel.js +240 -0
  155. package/dist/realtime/channel.js.map +1 -0
  156. package/dist/realtime/index.d.ts +94 -0
  157. package/dist/realtime/index.d.ts.map +1 -0
  158. package/dist/realtime/index.js +455 -0
  159. package/dist/realtime/index.js.map +1 -0
  160. package/dist/realtime/types.d.ts +120 -0
  161. package/dist/realtime/types.d.ts.map +1 -0
  162. package/dist/realtime/types.js +2 -0
  163. package/dist/realtime/types.js.map +1 -0
  164. package/dist/realtime.d.ts +1 -0
  165. package/dist/realtime.d.ts.map +1 -1
  166. package/dist/realtime.js +26 -1
  167. package/dist/realtime.js.map +1 -1
  168. package/dist/runtime.d.ts +13 -0
  169. package/dist/runtime.d.ts.map +1 -0
  170. package/dist/runtime.js +15 -0
  171. package/dist/runtime.js.map +1 -0
  172. package/dist/session.d.ts +2 -0
  173. package/dist/session.d.ts.map +1 -1
  174. package/dist/session.js +11 -2
  175. package/dist/session.js.map +1 -1
  176. package/dist/storage/bucket.d.ts +166 -0
  177. package/dist/storage/bucket.d.ts.map +1 -0
  178. package/dist/storage/bucket.js +294 -0
  179. package/dist/storage/bucket.js.map +1 -0
  180. package/dist/storage/index.d.ts +45 -0
  181. package/dist/storage/index.d.ts.map +1 -0
  182. package/dist/storage/index.js +55 -0
  183. package/dist/storage/index.js.map +1 -0
  184. package/dist/storage/types.d.ts +131 -0
  185. package/dist/storage/types.d.ts.map +1 -0
  186. package/dist/storage/types.js +2 -0
  187. package/dist/storage/types.js.map +1 -0
  188. package/dist/storage/utils.d.ts +27 -0
  189. package/dist/storage/utils.d.ts.map +1 -0
  190. package/dist/storage/utils.js +43 -0
  191. package/dist/storage/utils.js.map +1 -0
  192. package/dist/test.d.ts +2 -0
  193. package/dist/test.d.ts.map +1 -0
  194. package/dist/test.js +3 -0
  195. package/dist/test.js.map +1 -0
  196. package/dist/types.d.ts +14 -249
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/utils/compat.d.ts +40 -0
  199. package/dist/utils/compat.d.ts.map +1 -0
  200. package/dist/utils/compat.js +100 -0
  201. package/dist/utils/compat.js.map +1 -0
  202. package/dist/utils/runtime.d.ts +13 -0
  203. package/dist/utils/runtime.d.ts.map +1 -0
  204. package/dist/utils/runtime.js +15 -0
  205. package/dist/utils/runtime.js.map +1 -0
  206. package/dist/utils/testing.d.ts +38 -0
  207. package/dist/utils/testing.d.ts.map +1 -0
  208. package/dist/utils/testing.js +50 -0
  209. package/dist/utils/testing.js.map +1 -0
  210. package/dist/utils/warn.d.ts +2 -0
  211. package/dist/utils/warn.d.ts.map +1 -0
  212. package/dist/utils/warn.js +23 -0
  213. package/dist/utils/warn.js.map +1 -0
  214. package/package.json +13 -11
  215. package/dist/devices.d.ts +0 -13
  216. package/dist/devices.d.ts.map +0 -1
  217. package/dist/devices.js +0 -13
  218. package/dist/devices.js.map +0 -1
  219. package/dist/profile.d.ts +0 -16
  220. package/dist/profile.d.ts.map +0 -1
  221. package/dist/profile.js +0 -26
  222. package/dist/profile.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { contractPath } from "@motherbase/contracts";
2
+ import { BackendError, FunctionsFetchError, FunctionsHttpError } from "../index.js";
3
+ import { warnIgnoredOption } from "../utils/warn.js";
4
+ import { toError } from "../http/utils.js";
5
+ /** Supabase-compatible edge functions client: `client.functions.invoke(name, { body })`. */
6
+ export class FunctionsClient {
7
+ constructor(http) {
8
+ this.http = http;
9
+ }
10
+ async invoke(name, options = {}) {
11
+ try {
12
+ if (options.region) {
13
+ warnIgnoredOption('functions.invoke', 'region', 'A self-hosted Motherbase runs every function in one place, so the call goes there regardless.');
14
+ }
15
+ const edgeToken = options.auth?.type === 'edge-token' ? options.auth.token : undefined;
16
+ const method = options.method ?? 'POST';
17
+ const data = await this.http.request(contractPath.edge(name), {
18
+ method,
19
+ // A GET or DELETE with a JSON body is refused by some proxies and means
20
+ // nothing to the function, so the body is only sent where it can be read.
21
+ body: method === 'GET' || method === 'DELETE' ? undefined : (options.body ?? {}),
22
+ anonymous: options.auth !== undefined,
23
+ headers: {
24
+ ...options.headers,
25
+ ...(edgeToken ? { 'x-motherbase-edge-token': edgeToken } : {}),
26
+ },
27
+ });
28
+ return { data, error: null };
29
+ }
30
+ catch (err) {
31
+ const base = toError(err);
32
+ const status = err instanceof BackendError ? err.httpStatus : 0;
33
+ const error = status
34
+ ? Object.assign(new FunctionsHttpError(base.message, status), base)
35
+ : Object.assign(new FunctionsFetchError(base.message), base);
36
+ return { data: null, error };
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAyB,mBAAmB,EAAE,kBAAkB,EAAsB,MAAM,aAAa,CAAC;AAC/H,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,4FAA4F;AAC5F,MAAM,OAAO,eAAe;IACxB,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAI,CAAC;IAElD,KAAK,CAAC,MAAM,CACR,IAAY,EACZ,UAAuC,EAAE;QAEzC,IAAI,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,iBAAiB,CACb,kBAAkB,EAClB,QAAQ,EACR,+FAA+F,CAClG,CAAC;YACN,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAS,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAClE,MAAM;gBACN,wEAAwE;gBACxE,0EAA0E;gBAC1E,IAAI,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBAChF,SAAS,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS;gBACrC,OAAO,EAAE;oBACL,GAAG,OAAO,CAAC,OAAO;oBAClB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjE;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,MAAM;gBAChB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;gBACnE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,25 @@
1
+ export type FunctionInvokeAuth = {
2
+ type: 'edge-token';
3
+ token: string;
4
+ } | {
5
+ type: 'public';
6
+ };
7
+ export interface FunctionInvokeOptions<Body = unknown> {
8
+ /** JSON body passed to the edge function. */
9
+ body?: Body;
10
+ /**
11
+ * Authentication override. By default the current session bearer is used.
12
+ * Public and dedicated Edge-token invocations must be explicitly selected.
13
+ */
14
+ auth?: FunctionInvokeAuth;
15
+ /** HTTP method the function receives. Defaults to POST, as in supabase-js. */
16
+ method?: 'POST' | 'GET' | 'PUT' | 'PATCH' | 'DELETE';
17
+ /** Extra request headers, forwarded to the function. */
18
+ headers?: Record<string, string>;
19
+ /**
20
+ * Accepted for supabase-js signature parity and ignored: a self-hosted
21
+ * Motherbase runs its functions in one place, so there is no region to pick.
22
+ */
23
+ region?: string;
24
+ }
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/functions/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzB,MAAM,WAAW,qBAAqB,CAAC,IAAI,GAAG,OAAO;IACjD,6CAA6C;IAC7C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;;OAGG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/functions/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export declare class BackendError extends Error {
2
+ /** HTTP status code (0 if the request never completed). */
3
+ readonly httpStatus: number;
4
+ /** The API envelope's `status` field when present. */
5
+ readonly apiStatus?: number;
6
+ /** Backend error code, when present. */
7
+ readonly code?: string;
8
+ /**
9
+ * Correlation id for the failed request, from the `x-request-id` response
10
+ * header (the backend also puts it in the error body). Quote it in a bug
11
+ * report or log it next to your own error: it is what matches this call to
12
+ * the server-side stack trace in the project's logs.
13
+ */
14
+ readonly requestId?: string;
15
+ constructor(message: string, httpStatus: number, apiStatus?: number, code?: string, requestId?: string);
16
+ }
17
+ //# sourceMappingURL=backend-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-error.d.ts","sourceRoot":"","sources":["../../src/http/backend-error.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAQzG"}
@@ -0,0 +1,11 @@
1
+ export class BackendError extends Error {
2
+ constructor(message, httpStatus, apiStatus, code, requestId) {
3
+ super(message);
4
+ this.name = 'BackendError';
5
+ this.httpStatus = httpStatus;
6
+ this.apiStatus = apiStatus;
7
+ this.code = code;
8
+ this.requestId = requestId;
9
+ }
10
+ }
11
+ //# sourceMappingURL=backend-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-error.js","sourceRoot":"","sources":["../../src/http/backend-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAenC,YAAY,OAAe,EAAE,UAAkB,EAAE,SAAkB,EAAE,IAAa,EAAE,SAAkB;QAClG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CACJ"}
@@ -0,0 +1,59 @@
1
+ import { SessionStore } from "../auth/session.js";
2
+ import { RequestObserver, RequestOptions } from "./types.js";
3
+ export declare class HttpClient {
4
+ private readonly baseUrl;
5
+ private readonly store;
6
+ private readonly opts;
7
+ /** Performs the refresh; returns true on success. Injected to avoid a cycle. */
8
+ private readonly doRefresh;
9
+ private refreshPromise;
10
+ constructor(baseUrl: string, store: SessionStore, opts: {
11
+ autoRefresh: boolean;
12
+ fetch: typeof fetch;
13
+ headers?: Record<string, string>;
14
+ /** Called once per HTTP round trip, including the retry after a refresh. */
15
+ onRequest?: RequestObserver;
16
+ },
17
+ /** Performs the refresh; returns true on success. Injected to avoid a cycle. */
18
+ doRefresh: () => Promise<boolean>);
19
+ /**
20
+ * Install (or clear) the request observer.
21
+ *
22
+ * Set rather than constructed, so `client.on('request', ...)` can be called
23
+ * after the client exists, and cleared again when the last listener goes: the
24
+ * timing path is skipped entirely while nobody is watching.
25
+ */
26
+ setRequestObserver(observer: RequestObserver | undefined): void;
27
+ request<T>(path: string, options?: RequestOptions): Promise<T>;
28
+ /**
29
+ * Like `request`, but keeps the response headers. PostgREST puts the row count
30
+ * in `Content-Range`, which is unreachable from the parsed body alone.
31
+ */
32
+ requestWithHeaders<T>(path: string, options?: RequestOptions): Promise<{
33
+ data: T;
34
+ headers: Headers;
35
+ status: number;
36
+ }>;
37
+ /** Like `request`, but returns the raw Response (for binary downloads). */
38
+ requestRaw(path: string, options?: RequestOptions): Promise<Response>;
39
+ private sendWithRefresh;
40
+ /** Shared single-flight refresh: concurrent callers await the same promise. */
41
+ private refreshOnce;
42
+ private send;
43
+ /**
44
+ * `fetchImpl`, reporting each round trip to the request observer. The auth
45
+ * client sends through Better Auth's own fetch, which is handed this. It
46
+ * passes a `URL`; the app's fetch gets a string, as from every other call.
47
+ */
48
+ observedFetch(fetchImpl: typeof fetch): typeof fetch;
49
+ private observe;
50
+ /** An observer that throws must not fail the request it was watching. */
51
+ private emit;
52
+ private parse;
53
+ /** Parse a plain-JSON (non-envelope) response, mapping failures to BackendError. */
54
+ private parseRaw;
55
+ /** Absolute URL for a path. Public so callers can navigate to an endpoint
56
+ * rather than fetch it (see the `signIn.social` redirect in auth.ts). */
57
+ url(path: string): string;
58
+ }
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAgB,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM3E,qBAAa,UAAU;IAIf,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAOrB,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS;IAb9B,OAAO,CAAC,cAAc,CAAiC;gBAGlC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,4EAA4E;QAC5E,SAAS,CAAC,EAAE,eAAe,CAAC;KAC/B;IACD,gFAAgF;IAC/D,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC;IAGtD;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAIzD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE;;;OAGG;IACG,kBAAkB,CAAC,CAAC,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAMzD,2EAA2E;IACrE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;YAQjE,eAAe;IAW7B,+EAA+E;IAC/E,OAAO,CAAC,WAAW;YASL,IAAI;IAqClB;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,OAAO,KAAK,GAAG,OAAO,KAAK;YAStC,OAAO;IAgBrB,yEAAyE;IACzE,OAAO,CAAC,IAAI;YAQE,KAAK;IAiBnB,oFAAoF;YACtE,QAAQ;IAetB;8EAC0E;IAC1E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAG5B"}
@@ -0,0 +1,175 @@
1
+ import { HTTP_ROUTES } from "@motherbase/contracts";
2
+ import { isBrowser } from "../utils/runtime.js";
3
+ import { requestIdOf, withoutTrailingSlash } from "./utils.js";
4
+ import { BackendError } from "./backend-error.js";
5
+ export class HttpClient {
6
+ constructor(baseUrl, store, opts,
7
+ /** Performs the refresh; returns true on success. Injected to avoid a cycle. */
8
+ doRefresh) {
9
+ this.baseUrl = baseUrl;
10
+ this.store = store;
11
+ this.opts = opts;
12
+ this.doRefresh = doRefresh;
13
+ this.refreshPromise = null;
14
+ }
15
+ /**
16
+ * Install (or clear) the request observer.
17
+ *
18
+ * Set rather than constructed, so `client.on('request', ...)` can be called
19
+ * after the client exists, and cleared again when the last listener goes: the
20
+ * timing path is skipped entirely while nobody is watching.
21
+ */
22
+ setRequestObserver(observer) {
23
+ this.opts.onRequest = observer;
24
+ }
25
+ async request(path, options = {}) {
26
+ return (await this.requestWithHeaders(path, options)).data;
27
+ }
28
+ /**
29
+ * Like `request`, but keeps the response headers. PostgREST puts the row count
30
+ * in `Content-Range`, which is unreachable from the parsed body alone.
31
+ */
32
+ async requestWithHeaders(path, options = {}) {
33
+ const res = await this.sendWithRefresh(path, options);
34
+ const data = options.raw ? await this.parseRaw(res) : await this.parse(res);
35
+ return { data, headers: res.headers, status: res.status };
36
+ }
37
+ /** Like `request`, but returns the raw Response (for binary downloads). */
38
+ async requestRaw(path, options = {}) {
39
+ const res = await this.sendWithRefresh(path, options);
40
+ if (!res.ok) {
41
+ await this.parseRaw(res);
42
+ }
43
+ return res;
44
+ }
45
+ async sendWithRefresh(path, options) {
46
+ const res = await this.send(path, options);
47
+ if (res.status === 401 && this.opts.autoRefresh && !options.anonymous && !options._retry) {
48
+ const refreshed = await this.refreshOnce();
49
+ if (refreshed) {
50
+ return this.send(path, { ...options, _retry: true });
51
+ }
52
+ }
53
+ return res;
54
+ }
55
+ /** Shared single-flight refresh: concurrent callers await the same promise. */
56
+ refreshOnce() {
57
+ if (!this.refreshPromise) {
58
+ this.refreshPromise = this.doRefresh().finally(() => {
59
+ this.refreshPromise = null;
60
+ });
61
+ }
62
+ return this.refreshPromise;
63
+ }
64
+ async send(path, options) {
65
+ await this.store.hydrate();
66
+ const headers = { ...this.opts.headers, ...options.headers };
67
+ const session = this.store.get();
68
+ if (!options.anonymous && session?.accessToken) {
69
+ headers['Authorization'] = `Bearer ${session.accessToken}`;
70
+ }
71
+ let body;
72
+ if (options.form) {
73
+ // A JSON default must not replace the multipart boundary generated by fetch.
74
+ for (const name of Object.keys(headers)) {
75
+ if (name.toLowerCase() === 'content-type')
76
+ delete headers[name];
77
+ }
78
+ body = options.form; // browser/runtime sets the multipart boundary
79
+ }
80
+ else if (options.body !== undefined) {
81
+ headers['Content-Type'] = 'application/json';
82
+ body = JSON.stringify(options.body);
83
+ }
84
+ const method = options.method ?? 'GET';
85
+ if (!isBrowser() && !['GET', 'HEAD', 'OPTIONS'].includes(method.toUpperCase())
86
+ && path.startsWith(`${HTTP_ROUTES.auth}/`)
87
+ && !Object.keys(headers).some(name => name.toLowerCase() === 'origin')) {
88
+ // Node does not supply Origin. Better Auth may require it for mutations,
89
+ // including requests carrying cookies. Keep its CSRF checks enabled.
90
+ headers.Origin = new URL(this.baseUrl).origin;
91
+ }
92
+ return this.observe(method, path, () => this.opts.fetch(this.url(path), {
93
+ method,
94
+ headers,
95
+ body,
96
+ signal: options.signal,
97
+ ...(options.credentials ? { credentials: options.credentials } : {}),
98
+ }));
99
+ }
100
+ /**
101
+ * `fetchImpl`, reporting each round trip to the request observer. The auth
102
+ * client sends through Better Auth's own fetch, which is handed this. It
103
+ * passes a `URL`; the app's fetch gets a string, as from every other call.
104
+ */
105
+ observedFetch(fetchImpl) {
106
+ return (input, init) => {
107
+ const href = input instanceof Request ? input.url : String(input);
108
+ const url = new URL(href);
109
+ return this.observe(init?.method ?? 'GET', `${url.pathname}${url.search}`, () => fetchImpl(input instanceof Request ? input : href, init));
110
+ };
111
+ }
112
+ async observe(method, path, send) {
113
+ // Timed only when someone is listening: reading the clock twice per request
114
+ // for an observer nobody registered is a cost every app pays for a feature
115
+ // most do not use.
116
+ if (!this.opts.onRequest)
117
+ return send();
118
+ const startedAt = Date.now();
119
+ try {
120
+ const res = await send();
121
+ this.emit({ method, path, status: res.status, durationMs: Date.now() - startedAt, requestId: requestIdOf(res) });
122
+ return res;
123
+ }
124
+ catch (error) {
125
+ this.emit({ method, path, status: 0, durationMs: Date.now() - startedAt, error });
126
+ throw error;
127
+ }
128
+ }
129
+ /** An observer that throws must not fail the request it was watching. */
130
+ emit(event) {
131
+ try {
132
+ this.opts.onRequest?.(event);
133
+ }
134
+ catch {
135
+ // an observer is a spectator
136
+ }
137
+ }
138
+ async parse(res) {
139
+ let envelope;
140
+ try {
141
+ envelope = (await res.json());
142
+ }
143
+ catch {
144
+ // non-JSON response
145
+ }
146
+ if (!res.ok || (envelope && envelope.status === 0)) {
147
+ const message = envelope?.message ?? `Request failed with status ${res.status}`;
148
+ throw new BackendError(message, res.status, envelope?.status, envelope?.code, requestIdOf(res) ?? envelope?.requestId);
149
+ }
150
+ // `in`, not `??`: a legitimate `data: null` must come back as null, not as the envelope.
151
+ return (envelope && typeof envelope === 'object' && 'data' in envelope ? envelope.data : envelope);
152
+ }
153
+ /** Parse a plain-JSON (non-envelope) response, mapping failures to BackendError. */
154
+ async parseRaw(res) {
155
+ let body;
156
+ try {
157
+ body = await res.json();
158
+ }
159
+ catch {
160
+ body = undefined;
161
+ }
162
+ if (!res.ok) {
163
+ const failure = (body ?? {});
164
+ const message = failure.message ?? `Request failed with status ${res.status}`;
165
+ throw new BackendError(message, res.status, undefined, failure.code, requestIdOf(res) ?? failure.requestId);
166
+ }
167
+ return body;
168
+ }
169
+ /** Absolute URL for a path. Public so callers can navigate to an endpoint
170
+ * rather than fetch it (see the `signIn.social` redirect in auth.ts). */
171
+ url(path) {
172
+ return `${withoutTrailingSlash(this.baseUrl)}${path}`;
173
+ }
174
+ }
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export interface RequestOptions {
2
+ method?: string;
3
+ /** Headers scoped to this request. Override client-level headers. */
4
+ headers?: Record<string, string>;
5
+ /** JSON body. Mutually exclusive with `form`. */
6
+ body?: unknown;
7
+ /** Multipart body. Mutually exclusive with `body`. */
8
+ form?: FormData;
9
+ /** Skip attaching the Authorization header (used by auth endpoints). */
10
+ anonymous?: boolean;
11
+ /** Abort the request when this signal fires (`.abortSignal(signal)`). */
12
+ signal?: AbortSignal;
13
+ /**
14
+ * Parse the response body as-is instead of unwrapping the app's
15
+ * `{ status, data }` envelope. Better Auth's native /api/auth/* endpoints
16
+ * return plain JSON, so the auth client sets this.
17
+ */
18
+ raw?: boolean;
19
+ /**
20
+ * Cookie mode for this request. Defaults to fetch's own `same-origin`.
21
+ * OAuth start endpoints need `'include'`: better-auth sets a signed state
22
+ * cookie on that response and verifies it on the provider callback, and a
23
+ * cross-origin response's cookie is discarded without it (the callback then
24
+ * fails with `state_mismatch`).
25
+ */
26
+ credentials?: RequestCredentials;
27
+ /** Internal: prevents infinite refresh recursion. */
28
+ _retry?: boolean;
29
+ }
30
+ /** What every request reports to `client.on('request', ...)`. */
31
+ export interface RequestEvent {
32
+ method: string;
33
+ /** Path with query string, as sent. */
34
+ path: string;
35
+ /** HTTP status, or 0 when the request never completed (network, abort). */
36
+ status: number;
37
+ /** Wall time from send to response headers, in milliseconds. */
38
+ durationMs: number;
39
+ /** `x-request-id`, the id to quote when reporting a server-side failure. */
40
+ requestId?: string;
41
+ /** Set when the request failed outright rather than answering. */
42
+ error?: unknown;
43
+ }
44
+ export type RequestObserver = (event: RequestEvent) => void;
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/http/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/http/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { MotherbaseError, MotherbaseResponse } from "../types.js";
2
+ /** Convert a thrown BackendError (or any error) into a Supabase-shaped error object. */
3
+ export declare function toError(err: unknown): MotherbaseError;
4
+ /**
5
+ * Run a call and fold whatever it throws into the `{ data, error }` result the
6
+ * public SDK promises. A thunk rather than a promise, so a synchronous throw
7
+ * while building the request (a bad argument) is caught too.
8
+ */
9
+ export declare function settle<T>(call: () => Promise<T>): Promise<MotherbaseResponse<T>>;
10
+ /** `https://x.dev/` -> `https://x.dev`, so a path can be appended to any project URL. */
11
+ export declare function withoutTrailingSlash(url: string): string;
12
+ /** The backend sets `x-request-id` on every response; older ones may not. */
13
+ export declare function requestIdOf(res: Response): string | undefined;
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/http/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGvE,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAWrD;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAMtF;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE7D"}
@@ -0,0 +1,37 @@
1
+ import { BackendError } from "./backend-error.js";
2
+ /** Convert a thrown BackendError (or any error) into a Supabase-shaped error object. */
3
+ export function toError(err) {
4
+ if (err instanceof BackendError) {
5
+ return {
6
+ message: err.message,
7
+ status: err.httpStatus || undefined,
8
+ code: err.code,
9
+ requestId: err.requestId,
10
+ };
11
+ }
12
+ if (err instanceof Error)
13
+ return { message: err.message };
14
+ return { message: String(err) };
15
+ }
16
+ /**
17
+ * Run a call and fold whatever it throws into the `{ data, error }` result the
18
+ * public SDK promises. A thunk rather than a promise, so a synchronous throw
19
+ * while building the request (a bad argument) is caught too.
20
+ */
21
+ export async function settle(call) {
22
+ try {
23
+ return { data: await call(), error: null };
24
+ }
25
+ catch (err) {
26
+ return { data: null, error: toError(err) };
27
+ }
28
+ }
29
+ /** `https://x.dev/` -> `https://x.dev`, so a path can be appended to any project URL. */
30
+ export function withoutTrailingSlash(url) {
31
+ return url.replace(/\/$/, '');
32
+ }
33
+ /** The backend sets `x-request-id` on every response; older ones may not. */
34
+ export function requestIdOf(res) {
35
+ return res.headers?.get('x-request-id') ?? undefined;
36
+ }
37
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,wFAAwF;AACxF,MAAM,UAAU,OAAO,CAAC,GAAY;IAChC,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAC9B,OAAO;YACH,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACnC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;SAC3B,CAAC;IACN,CAAC;IACD,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAI,IAAsB;IAClD,IAAI,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,GAAa;IACrC,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;AACzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/http.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { HTTP_ROUTES } from '@motherbase/contracts';
2
+ import { isBrowser } from './runtime.js';
2
3
  /**
3
4
  * Error thrown internally for any non-successful API response. Callers of the
4
5
  * public SDK never see this: module boundaries catch it and return a
@@ -102,7 +103,7 @@ export class HttpClient {
102
103
  body = JSON.stringify(options.body);
103
104
  }
104
105
  const method = options.method ?? 'GET';
105
- if (typeof window === 'undefined' && !['GET', 'HEAD', 'OPTIONS'].includes(method.toUpperCase())
106
+ if (!isBrowser() && !['GET', 'HEAD', 'OPTIONS'].includes(method.toUpperCase())
106
107
  && path.startsWith(`${HTTP_ROUTES.auth}/`)
107
108
  && !Object.keys(headers).some(name => name.toLowerCase() === 'origin')) {
108
109
  // Node does not supply Origin. Better Auth may require it for mutations,
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}