@supabase/supabase-js 2.87.4-canary.2 → 2.87.4-canary.4

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 (93) hide show
  1. package/dist/index.cjs +452 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +362 -0
  4. package/dist/index.d.cts.map +1 -0
  5. package/dist/index.d.mts +362 -0
  6. package/dist/index.d.mts.map +1 -0
  7. package/dist/index.mjs +405 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/umd/supabase.js +23 -1
  10. package/package.json +21 -22
  11. package/src/lib/types.ts +19 -1
  12. package/src/lib/version.ts +1 -1
  13. package/dist/esm/wrapper.mjs +0 -94
  14. package/dist/main/SupabaseClient.d.ts +0 -139
  15. package/dist/main/SupabaseClient.d.ts.map +0 -1
  16. package/dist/main/SupabaseClient.js +0 -235
  17. package/dist/main/SupabaseClient.js.map +0 -1
  18. package/dist/main/index.d.ts +0 -24
  19. package/dist/main/index.d.ts.map +0 -1
  20. package/dist/main/index.js +0 -76
  21. package/dist/main/index.js.map +0 -1
  22. package/dist/main/lib/SupabaseAuthClient.d.ts +0 -6
  23. package/dist/main/lib/SupabaseAuthClient.d.ts.map +0 -1
  24. package/dist/main/lib/SupabaseAuthClient.js +0 -11
  25. package/dist/main/lib/SupabaseAuthClient.js.map +0 -1
  26. package/dist/main/lib/constants.d.ts +0 -16
  27. package/dist/main/lib/constants.d.ts.map +0 -1
  28. package/dist/main/lib/constants.js +0 -33
  29. package/dist/main/lib/constants.js.map +0 -1
  30. package/dist/main/lib/fetch.d.ts +0 -9
  31. package/dist/main/lib/fetch.d.ts.map +0 -1
  32. package/dist/main/lib/fetch.js +0 -32
  33. package/dist/main/lib/fetch.js.map +0 -1
  34. package/dist/main/lib/helpers.d.ts +0 -14
  35. package/dist/main/lib/helpers.d.ts.map +0 -1
  36. package/dist/main/lib/helpers.js +0 -62
  37. package/dist/main/lib/helpers.js.map +0 -1
  38. package/dist/main/lib/rest/types/common/common.d.ts +0 -55
  39. package/dist/main/lib/rest/types/common/common.d.ts.map +0 -1
  40. package/dist/main/lib/rest/types/common/common.js +0 -12
  41. package/dist/main/lib/rest/types/common/common.js.map +0 -1
  42. package/dist/main/lib/rest/types/common/rpc.d.ts +0 -49
  43. package/dist/main/lib/rest/types/common/rpc.d.ts.map +0 -1
  44. package/dist/main/lib/rest/types/common/rpc.js +0 -12
  45. package/dist/main/lib/rest/types/common/rpc.js.map +0 -1
  46. package/dist/main/lib/types.d.ts +0 -102
  47. package/dist/main/lib/types.d.ts.map +0 -1
  48. package/dist/main/lib/types.js +0 -3
  49. package/dist/main/lib/types.js.map +0 -1
  50. package/dist/main/lib/version.d.ts +0 -2
  51. package/dist/main/lib/version.d.ts.map +0 -1
  52. package/dist/main/lib/version.js +0 -11
  53. package/dist/main/lib/version.js.map +0 -1
  54. package/dist/module/SupabaseClient.d.ts +0 -139
  55. package/dist/module/SupabaseClient.d.ts.map +0 -1
  56. package/dist/module/SupabaseClient.js +0 -232
  57. package/dist/module/SupabaseClient.js.map +0 -1
  58. package/dist/module/index.d.ts +0 -24
  59. package/dist/module/index.d.ts.map +0 -1
  60. package/dist/module/index.js +0 -48
  61. package/dist/module/index.js.map +0 -1
  62. package/dist/module/lib/SupabaseAuthClient.d.ts +0 -6
  63. package/dist/module/lib/SupabaseAuthClient.d.ts.map +0 -1
  64. package/dist/module/lib/SupabaseAuthClient.js +0 -7
  65. package/dist/module/lib/SupabaseAuthClient.js.map +0 -1
  66. package/dist/module/lib/constants.d.ts +0 -16
  67. package/dist/module/lib/constants.d.ts.map +0 -1
  68. package/dist/module/lib/constants.js +0 -30
  69. package/dist/module/lib/constants.js.map +0 -1
  70. package/dist/module/lib/fetch.d.ts +0 -9
  71. package/dist/module/lib/fetch.d.ts.map +0 -1
  72. package/dist/module/lib/fetch.js +0 -26
  73. package/dist/module/lib/fetch.js.map +0 -1
  74. package/dist/module/lib/helpers.d.ts +0 -14
  75. package/dist/module/lib/helpers.d.ts.map +0 -1
  76. package/dist/module/lib/helpers.js +0 -54
  77. package/dist/module/lib/helpers.js.map +0 -1
  78. package/dist/module/lib/rest/types/common/common.d.ts +0 -55
  79. package/dist/module/lib/rest/types/common/common.d.ts.map +0 -1
  80. package/dist/module/lib/rest/types/common/common.js +0 -11
  81. package/dist/module/lib/rest/types/common/common.js.map +0 -1
  82. package/dist/module/lib/rest/types/common/rpc.d.ts +0 -49
  83. package/dist/module/lib/rest/types/common/rpc.d.ts.map +0 -1
  84. package/dist/module/lib/rest/types/common/rpc.js +0 -11
  85. package/dist/module/lib/rest/types/common/rpc.js.map +0 -1
  86. package/dist/module/lib/types.d.ts +0 -102
  87. package/dist/module/lib/types.d.ts.map +0 -1
  88. package/dist/module/lib/types.js +0 -2
  89. package/dist/module/lib/types.js.map +0 -1
  90. package/dist/module/lib/version.d.ts +0 -2
  91. package/dist/module/lib/version.d.ts.map +0 -1
  92. package/dist/module/lib/version.js +0 -8
  93. package/dist/module/lib/version.js.map +0 -1
package/dist/index.cjs ADDED
@@ -0,0 +1,452 @@
1
+ let __supabase_functions_js = require("@supabase/functions-js");
2
+ let __supabase_postgrest_js = require("@supabase/postgrest-js");
3
+ let __supabase_realtime_js = require("@supabase/realtime-js");
4
+ let __supabase_storage_js = require("@supabase/storage-js");
5
+ let __supabase_auth_js = require("@supabase/auth-js");
6
+
7
+ //#region src/lib/version.ts
8
+ const version = "2.87.4-canary.4";
9
+
10
+ //#endregion
11
+ //#region src/lib/constants.ts
12
+ let JS_ENV = "";
13
+ if (typeof Deno !== "undefined") JS_ENV = "deno";
14
+ else if (typeof document !== "undefined") JS_ENV = "web";
15
+ else if (typeof navigator !== "undefined" && navigator.product === "ReactNative") JS_ENV = "react-native";
16
+ else JS_ENV = "node";
17
+ const DEFAULT_HEADERS = { "X-Client-Info": `supabase-js-${JS_ENV}/${version}` };
18
+ const DEFAULT_GLOBAL_OPTIONS = { headers: DEFAULT_HEADERS };
19
+ const DEFAULT_DB_OPTIONS = { schema: "public" };
20
+ const DEFAULT_AUTH_OPTIONS = {
21
+ autoRefreshToken: true,
22
+ persistSession: true,
23
+ detectSessionInUrl: true,
24
+ flowType: "implicit"
25
+ };
26
+ const DEFAULT_REALTIME_OPTIONS = {};
27
+
28
+ //#endregion
29
+ //#region \0@oxc-project+runtime@0.101.0/helpers/typeof.js
30
+ function _typeof(o) {
31
+ "@babel/helpers - typeof";
32
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) {
33
+ return typeof o$1;
34
+ } : function(o$1) {
35
+ return o$1 && "function" == typeof Symbol && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? "symbol" : typeof o$1;
36
+ }, _typeof(o);
37
+ }
38
+
39
+ //#endregion
40
+ //#region \0@oxc-project+runtime@0.101.0/helpers/toPrimitive.js
41
+ function toPrimitive(t, r) {
42
+ if ("object" != _typeof(t) || !t) return t;
43
+ var e = t[Symbol.toPrimitive];
44
+ if (void 0 !== e) {
45
+ var i = e.call(t, r || "default");
46
+ if ("object" != _typeof(i)) return i;
47
+ throw new TypeError("@@toPrimitive must return a primitive value.");
48
+ }
49
+ return ("string" === r ? String : Number)(t);
50
+ }
51
+
52
+ //#endregion
53
+ //#region \0@oxc-project+runtime@0.101.0/helpers/toPropertyKey.js
54
+ function toPropertyKey(t) {
55
+ var i = toPrimitive(t, "string");
56
+ return "symbol" == _typeof(i) ? i : i + "";
57
+ }
58
+
59
+ //#endregion
60
+ //#region \0@oxc-project+runtime@0.101.0/helpers/defineProperty.js
61
+ function _defineProperty(e, r, t) {
62
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
63
+ value: t,
64
+ enumerable: !0,
65
+ configurable: !0,
66
+ writable: !0
67
+ }) : e[r] = t, e;
68
+ }
69
+
70
+ //#endregion
71
+ //#region \0@oxc-project+runtime@0.101.0/helpers/objectSpread2.js
72
+ function ownKeys(e, r) {
73
+ var t = Object.keys(e);
74
+ if (Object.getOwnPropertySymbols) {
75
+ var o = Object.getOwnPropertySymbols(e);
76
+ r && (o = o.filter(function(r$1) {
77
+ return Object.getOwnPropertyDescriptor(e, r$1).enumerable;
78
+ })), t.push.apply(t, o);
79
+ }
80
+ return t;
81
+ }
82
+ function _objectSpread2(e) {
83
+ for (var r = 1; r < arguments.length; r++) {
84
+ var t = null != arguments[r] ? arguments[r] : {};
85
+ r % 2 ? ownKeys(Object(t), !0).forEach(function(r$1) {
86
+ _defineProperty(e, r$1, t[r$1]);
87
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) {
88
+ Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1));
89
+ });
90
+ }
91
+ return e;
92
+ }
93
+
94
+ //#endregion
95
+ //#region src/lib/fetch.ts
96
+ const resolveFetch = (customFetch) => {
97
+ if (customFetch) return (...args) => customFetch(...args);
98
+ return (...args) => fetch(...args);
99
+ };
100
+ const resolveHeadersConstructor = () => {
101
+ return Headers;
102
+ };
103
+ const fetchWithAuth = (supabaseKey, getAccessToken, customFetch) => {
104
+ const fetch$1 = resolveFetch(customFetch);
105
+ const HeadersConstructor = resolveHeadersConstructor();
106
+ return async (input, init) => {
107
+ var _await$getAccessToken;
108
+ const accessToken = (_await$getAccessToken = await getAccessToken()) !== null && _await$getAccessToken !== void 0 ? _await$getAccessToken : supabaseKey;
109
+ let headers = new HeadersConstructor(init === null || init === void 0 ? void 0 : init.headers);
110
+ if (!headers.has("apikey")) headers.set("apikey", supabaseKey);
111
+ if (!headers.has("Authorization")) headers.set("Authorization", `Bearer ${accessToken}`);
112
+ return fetch$1(input, _objectSpread2(_objectSpread2({}, init), {}, { headers }));
113
+ };
114
+ };
115
+
116
+ //#endregion
117
+ //#region src/lib/helpers.ts
118
+ function ensureTrailingSlash(url) {
119
+ return url.endsWith("/") ? url : url + "/";
120
+ }
121
+ function applySettingDefaults(options, defaults) {
122
+ var _DEFAULT_GLOBAL_OPTIO, _globalOptions$header;
123
+ const { db: dbOptions, auth: authOptions, realtime: realtimeOptions, global: globalOptions } = options;
124
+ const { db: DEFAULT_DB_OPTIONS$1, auth: DEFAULT_AUTH_OPTIONS$1, realtime: DEFAULT_REALTIME_OPTIONS$1, global: DEFAULT_GLOBAL_OPTIONS$1 } = defaults;
125
+ const result = {
126
+ db: _objectSpread2(_objectSpread2({}, DEFAULT_DB_OPTIONS$1), dbOptions),
127
+ auth: _objectSpread2(_objectSpread2({}, DEFAULT_AUTH_OPTIONS$1), authOptions),
128
+ realtime: _objectSpread2(_objectSpread2({}, DEFAULT_REALTIME_OPTIONS$1), realtimeOptions),
129
+ storage: {},
130
+ global: _objectSpread2(_objectSpread2(_objectSpread2({}, DEFAULT_GLOBAL_OPTIONS$1), globalOptions), {}, { headers: _objectSpread2(_objectSpread2({}, (_DEFAULT_GLOBAL_OPTIO = DEFAULT_GLOBAL_OPTIONS$1 === null || DEFAULT_GLOBAL_OPTIONS$1 === void 0 ? void 0 : DEFAULT_GLOBAL_OPTIONS$1.headers) !== null && _DEFAULT_GLOBAL_OPTIO !== void 0 ? _DEFAULT_GLOBAL_OPTIO : {}), (_globalOptions$header = globalOptions === null || globalOptions === void 0 ? void 0 : globalOptions.headers) !== null && _globalOptions$header !== void 0 ? _globalOptions$header : {}) }),
131
+ accessToken: async () => ""
132
+ };
133
+ if (options.accessToken) result.accessToken = options.accessToken;
134
+ else delete result.accessToken;
135
+ return result;
136
+ }
137
+ /**
138
+ * Validates a Supabase client URL
139
+ *
140
+ * @param {string} supabaseUrl - The Supabase client URL string.
141
+ * @returns {URL} - The validated base URL.
142
+ * @throws {Error}
143
+ */
144
+ function validateSupabaseUrl(supabaseUrl) {
145
+ const trimmedUrl = supabaseUrl === null || supabaseUrl === void 0 ? void 0 : supabaseUrl.trim();
146
+ if (!trimmedUrl) throw new Error("supabaseUrl is required.");
147
+ if (!trimmedUrl.match(/^https?:\/\//i)) throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");
148
+ try {
149
+ return new URL(ensureTrailingSlash(trimmedUrl));
150
+ } catch (_unused) {
151
+ throw Error("Invalid supabaseUrl: Provided URL is malformed.");
152
+ }
153
+ }
154
+
155
+ //#endregion
156
+ //#region src/lib/SupabaseAuthClient.ts
157
+ var SupabaseAuthClient = class extends __supabase_auth_js.AuthClient {
158
+ constructor(options) {
159
+ super(options);
160
+ }
161
+ };
162
+
163
+ //#endregion
164
+ //#region src/SupabaseClient.ts
165
+ /**
166
+ * Supabase Client.
167
+ *
168
+ * An isomorphic Javascript client for interacting with Postgres.
169
+ */
170
+ var SupabaseClient = class {
171
+ /**
172
+ * Create a new client for use in the browser.
173
+ * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard.
174
+ * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard.
175
+ * @param options.db.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase.
176
+ * @param options.auth.autoRefreshToken Set to "true" if you want to automatically refresh the token before expiring.
177
+ * @param options.auth.persistSession Set to "true" if you want to automatically save the user session into local storage.
178
+ * @param options.auth.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user.
179
+ * @param options.realtime Options passed along to realtime-js constructor.
180
+ * @param options.storage Options passed along to the storage-js constructor.
181
+ * @param options.global.fetch A custom fetch implementation.
182
+ * @param options.global.headers Any additional headers to send with each network request.
183
+ * @example
184
+ * ```ts
185
+ * import { createClient } from '@supabase/supabase-js'
186
+ *
187
+ * const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')
188
+ * const { data } = await supabase.from('profiles').select('*')
189
+ * ```
190
+ */
191
+ constructor(supabaseUrl, supabaseKey, options) {
192
+ var _settings$auth$storag, _settings$global$head;
193
+ this.supabaseUrl = supabaseUrl;
194
+ this.supabaseKey = supabaseKey;
195
+ const baseUrl = validateSupabaseUrl(supabaseUrl);
196
+ if (!supabaseKey) throw new Error("supabaseKey is required.");
197
+ this.realtimeUrl = new URL("realtime/v1", baseUrl);
198
+ this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace("http", "ws");
199
+ this.authUrl = new URL("auth/v1", baseUrl);
200
+ this.storageUrl = new URL("storage/v1", baseUrl);
201
+ this.functionsUrl = new URL("functions/v1", baseUrl);
202
+ const defaultStorageKey = `sb-${baseUrl.hostname.split(".")[0]}-auth-token`;
203
+ const DEFAULTS = {
204
+ db: DEFAULT_DB_OPTIONS,
205
+ realtime: DEFAULT_REALTIME_OPTIONS,
206
+ auth: _objectSpread2(_objectSpread2({}, DEFAULT_AUTH_OPTIONS), {}, { storageKey: defaultStorageKey }),
207
+ global: DEFAULT_GLOBAL_OPTIONS
208
+ };
209
+ const settings = applySettingDefaults(options !== null && options !== void 0 ? options : {}, DEFAULTS);
210
+ this.storageKey = (_settings$auth$storag = settings.auth.storageKey) !== null && _settings$auth$storag !== void 0 ? _settings$auth$storag : "";
211
+ this.headers = (_settings$global$head = settings.global.headers) !== null && _settings$global$head !== void 0 ? _settings$global$head : {};
212
+ if (!settings.accessToken) {
213
+ var _settings$auth;
214
+ this.auth = this._initSupabaseAuthClient((_settings$auth = settings.auth) !== null && _settings$auth !== void 0 ? _settings$auth : {}, this.headers, settings.global.fetch);
215
+ } else {
216
+ this.accessToken = settings.accessToken;
217
+ this.auth = new Proxy({}, { get: (_, prop) => {
218
+ throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(prop)} is not possible`);
219
+ } });
220
+ }
221
+ this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch);
222
+ this.realtime = this._initRealtimeClient(_objectSpread2({
223
+ headers: this.headers,
224
+ accessToken: this._getAccessToken.bind(this)
225
+ }, settings.realtime));
226
+ if (this.accessToken) this.accessToken().then((token) => this.realtime.setAuth(token)).catch((e) => console.warn("Failed to set initial Realtime auth token:", e));
227
+ this.rest = new __supabase_postgrest_js.PostgrestClient(new URL("rest/v1", baseUrl).href, {
228
+ headers: this.headers,
229
+ schema: settings.db.schema,
230
+ fetch: this.fetch
231
+ });
232
+ this.storage = new __supabase_storage_js.StorageClient(this.storageUrl.href, this.headers, this.fetch, options === null || options === void 0 ? void 0 : options.storage);
233
+ if (!settings.accessToken) this._listenForAuthEvents();
234
+ }
235
+ /**
236
+ * Supabase Functions allows you to deploy and invoke edge functions.
237
+ */
238
+ get functions() {
239
+ return new __supabase_functions_js.FunctionsClient(this.functionsUrl.href, {
240
+ headers: this.headers,
241
+ customFetch: this.fetch
242
+ });
243
+ }
244
+ /**
245
+ * Perform a query on a table or a view.
246
+ *
247
+ * @param relation - The table or view name to query
248
+ */
249
+ from(relation) {
250
+ return this.rest.from(relation);
251
+ }
252
+ /**
253
+ * Select a schema to query or perform an function (rpc) call.
254
+ *
255
+ * The schema needs to be on the list of exposed schemas inside Supabase.
256
+ *
257
+ * @param schema - The schema to query
258
+ */
259
+ schema(schema) {
260
+ return this.rest.schema(schema);
261
+ }
262
+ /**
263
+ * Perform a function call.
264
+ *
265
+ * @param fn - The function name to call
266
+ * @param args - The arguments to pass to the function call
267
+ * @param options - Named parameters
268
+ * @param options.head - When set to `true`, `data` will not be returned.
269
+ * Useful if you only need the count.
270
+ * @param options.get - When set to `true`, the function will be called with
271
+ * read-only access mode.
272
+ * @param options.count - Count algorithm to use to count rows returned by the
273
+ * function. Only applicable for [set-returning
274
+ * functions](https://www.postgresql.org/docs/current/functions-srf.html).
275
+ *
276
+ * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the
277
+ * hood.
278
+ *
279
+ * `"planned"`: Approximated but fast count algorithm. Uses the Postgres
280
+ * statistics under the hood.
281
+ *
282
+ * `"estimated"`: Uses exact count for low numbers and planned count for high
283
+ * numbers.
284
+ */
285
+ rpc(fn, args = {}, options = {
286
+ head: false,
287
+ get: false,
288
+ count: void 0
289
+ }) {
290
+ return this.rest.rpc(fn, args, options);
291
+ }
292
+ /**
293
+ * Creates a Realtime channel with Broadcast, Presence, and Postgres Changes.
294
+ *
295
+ * @param {string} name - The name of the Realtime channel.
296
+ * @param {Object} opts - The options to pass to the Realtime channel.
297
+ *
298
+ */
299
+ channel(name, opts = { config: {} }) {
300
+ return this.realtime.channel(name, opts);
301
+ }
302
+ /**
303
+ * Returns all Realtime channels.
304
+ */
305
+ getChannels() {
306
+ return this.realtime.getChannels();
307
+ }
308
+ /**
309
+ * Unsubscribes and removes Realtime channel from Realtime client.
310
+ *
311
+ * @param {RealtimeChannel} channel - The name of the Realtime channel.
312
+ *
313
+ */
314
+ removeChannel(channel) {
315
+ return this.realtime.removeChannel(channel);
316
+ }
317
+ /**
318
+ * Unsubscribes and removes all Realtime channels from Realtime client.
319
+ */
320
+ removeAllChannels() {
321
+ return this.realtime.removeAllChannels();
322
+ }
323
+ async _getAccessToken() {
324
+ var _this = this;
325
+ var _data$session$access_, _data$session;
326
+ if (_this.accessToken) return await _this.accessToken();
327
+ const { data } = await _this.auth.getSession();
328
+ return (_data$session$access_ = (_data$session = data.session) === null || _data$session === void 0 ? void 0 : _data$session.access_token) !== null && _data$session$access_ !== void 0 ? _data$session$access_ : _this.supabaseKey;
329
+ }
330
+ _initSupabaseAuthClient({ autoRefreshToken, persistSession, detectSessionInUrl, storage, userStorage, storageKey, flowType, lock, debug, throwOnError }, headers, fetch$1) {
331
+ const authHeaders = {
332
+ Authorization: `Bearer ${this.supabaseKey}`,
333
+ apikey: `${this.supabaseKey}`
334
+ };
335
+ return new SupabaseAuthClient({
336
+ url: this.authUrl.href,
337
+ headers: _objectSpread2(_objectSpread2({}, authHeaders), headers),
338
+ storageKey,
339
+ autoRefreshToken,
340
+ persistSession,
341
+ detectSessionInUrl,
342
+ storage,
343
+ userStorage,
344
+ flowType,
345
+ lock,
346
+ debug,
347
+ throwOnError,
348
+ fetch: fetch$1,
349
+ hasCustomAuthorizationHeader: Object.keys(this.headers).some((key) => key.toLowerCase() === "authorization")
350
+ });
351
+ }
352
+ _initRealtimeClient(options) {
353
+ return new __supabase_realtime_js.RealtimeClient(this.realtimeUrl.href, _objectSpread2(_objectSpread2({}, options), {}, { params: _objectSpread2(_objectSpread2({}, { apikey: this.supabaseKey }), options === null || options === void 0 ? void 0 : options.params) }));
354
+ }
355
+ _listenForAuthEvents() {
356
+ return this.auth.onAuthStateChange((event, session) => {
357
+ this._handleTokenChanged(event, "CLIENT", session === null || session === void 0 ? void 0 : session.access_token);
358
+ });
359
+ }
360
+ _handleTokenChanged(event, source, token) {
361
+ if ((event === "TOKEN_REFRESHED" || event === "SIGNED_IN") && this.changedAccessToken !== token) {
362
+ this.changedAccessToken = token;
363
+ this.realtime.setAuth(token);
364
+ } else if (event === "SIGNED_OUT") {
365
+ this.realtime.setAuth();
366
+ if (source == "STORAGE") this.auth.signOut();
367
+ this.changedAccessToken = void 0;
368
+ }
369
+ }
370
+ };
371
+
372
+ //#endregion
373
+ //#region src/index.ts
374
+ /**
375
+ * Creates a new Supabase Client.
376
+ *
377
+ * @example
378
+ * ```ts
379
+ * import { createClient } from '@supabase/supabase-js'
380
+ *
381
+ * const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')
382
+ * const { data, error } = await supabase.from('profiles').select('*')
383
+ * ```
384
+ */
385
+ const createClient = (supabaseUrl, supabaseKey, options) => {
386
+ return new SupabaseClient(supabaseUrl, supabaseKey, options);
387
+ };
388
+ function shouldShowDeprecationWarning() {
389
+ if (typeof window !== "undefined") return false;
390
+ if (typeof process === "undefined") return false;
391
+ const processVersion = process["version"];
392
+ if (processVersion === void 0 || processVersion === null) return false;
393
+ const versionMatch = processVersion.match(/^v(\d+)\./);
394
+ if (!versionMatch) return false;
395
+ return parseInt(versionMatch[1], 10) <= 18;
396
+ }
397
+ if (shouldShowDeprecationWarning()) console.warn("⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");
398
+
399
+ //#endregion
400
+ Object.defineProperty(exports, 'FunctionRegion', {
401
+ enumerable: true,
402
+ get: function () {
403
+ return __supabase_functions_js.FunctionRegion;
404
+ }
405
+ });
406
+ Object.defineProperty(exports, 'FunctionsError', {
407
+ enumerable: true,
408
+ get: function () {
409
+ return __supabase_functions_js.FunctionsError;
410
+ }
411
+ });
412
+ Object.defineProperty(exports, 'FunctionsFetchError', {
413
+ enumerable: true,
414
+ get: function () {
415
+ return __supabase_functions_js.FunctionsFetchError;
416
+ }
417
+ });
418
+ Object.defineProperty(exports, 'FunctionsHttpError', {
419
+ enumerable: true,
420
+ get: function () {
421
+ return __supabase_functions_js.FunctionsHttpError;
422
+ }
423
+ });
424
+ Object.defineProperty(exports, 'FunctionsRelayError', {
425
+ enumerable: true,
426
+ get: function () {
427
+ return __supabase_functions_js.FunctionsRelayError;
428
+ }
429
+ });
430
+ Object.defineProperty(exports, 'PostgrestError', {
431
+ enumerable: true,
432
+ get: function () {
433
+ return __supabase_postgrest_js.PostgrestError;
434
+ }
435
+ });
436
+ exports.SupabaseClient = SupabaseClient;
437
+ exports.createClient = createClient;
438
+ Object.keys(__supabase_auth_js).forEach(function (k) {
439
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
440
+ enumerable: true,
441
+ get: function () { return __supabase_auth_js[k]; }
442
+ });
443
+ });
444
+
445
+ Object.keys(__supabase_realtime_js).forEach(function (k) {
446
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
447
+ enumerable: true,
448
+ get: function () { return __supabase_realtime_js[k]; }
449
+ });
450
+ });
451
+
452
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["DEFAULT_AUTH_OPTIONS: SupabaseAuthClientOptions","DEFAULT_REALTIME_OPTIONS: RealtimeClientOptions","fetch","DEFAULT_DB_OPTIONS","DEFAULT_AUTH_OPTIONS","DEFAULT_REALTIME_OPTIONS","DEFAULT_GLOBAL_OPTIONS","result: Required<SupabaseClientOptions<SchemaName>>","AuthClient","supabaseUrl: string","supabaseKey: string","PostgrestClient","SupabaseStorageClient","FunctionsClient","this","RealtimeClient"],"sources":["../src/lib/version.ts","../src/lib/constants.ts","../src/lib/fetch.ts","../src/lib/helpers.ts","../src/lib/SupabaseAuthClient.ts","../src/SupabaseClient.ts","../src/index.ts"],"sourcesContent":["// Generated automatically during releases by scripts/update-version-files.ts\n// This file provides runtime access to the package version for:\n// - HTTP request headers (e.g., X-Client-Info header for API requests)\n// - Debugging and support (identifying which version is running)\n// - Telemetry and logging (version reporting in errors/analytics)\n// - Ensuring build artifacts match the published package version\nexport const version = '2.87.4-canary.4'\n","// constants.ts\nimport { RealtimeClientOptions } from '@supabase/realtime-js'\nimport { SupabaseAuthClientOptions } from './types'\nimport { version } from './version'\n\nlet JS_ENV = ''\n// @ts-ignore\nif (typeof Deno !== 'undefined') {\n JS_ENV = 'deno'\n} else if (typeof document !== 'undefined') {\n JS_ENV = 'web'\n} else if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n JS_ENV = 'react-native'\n} else {\n JS_ENV = 'node'\n}\n\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `supabase-js-${JS_ENV}/${version}` }\n\nexport const DEFAULT_GLOBAL_OPTIONS = {\n headers: DEFAULT_HEADERS,\n}\n\nexport const DEFAULT_DB_OPTIONS = {\n schema: 'public',\n}\n\nexport const DEFAULT_AUTH_OPTIONS: SupabaseAuthClientOptions = {\n autoRefreshToken: true,\n persistSession: true,\n detectSessionInUrl: true,\n flowType: 'implicit',\n}\n\nexport const DEFAULT_REALTIME_OPTIONS: RealtimeClientOptions = {}\n","type Fetch = typeof fetch\n\nexport const resolveFetch = (customFetch?: Fetch): Fetch => {\n if (customFetch) {\n return (...args: Parameters<Fetch>) => customFetch(...args)\n }\n return (...args: Parameters<Fetch>) => fetch(...args)\n}\n\nexport const resolveHeadersConstructor = () => {\n return Headers\n}\n\nexport const fetchWithAuth = (\n supabaseKey: string,\n getAccessToken: () => Promise<string | null>,\n customFetch?: Fetch\n): Fetch => {\n const fetch = resolveFetch(customFetch)\n const HeadersConstructor = resolveHeadersConstructor()\n\n return async (input, init) => {\n const accessToken = (await getAccessToken()) ?? supabaseKey\n let headers = new HeadersConstructor(init?.headers)\n\n if (!headers.has('apikey')) {\n headers.set('apikey', supabaseKey)\n }\n\n if (!headers.has('Authorization')) {\n headers.set('Authorization', `Bearer ${accessToken}`)\n }\n\n return fetch(input, { ...init, headers })\n }\n}\n","// helpers.ts\nimport { SupabaseClientOptions } from './types'\n\nexport function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\nexport function ensureTrailingSlash(url: string): string {\n return url.endsWith('/') ? url : url + '/'\n}\n\nexport const isBrowser = () => typeof window !== 'undefined'\n\nexport function applySettingDefaults<\n Database = any,\n SchemaName extends string & keyof Database = 'public' extends keyof Database\n ? 'public'\n : string & keyof Database,\n>(\n options: SupabaseClientOptions<SchemaName>,\n defaults: SupabaseClientOptions<any>\n): Required<SupabaseClientOptions<SchemaName>> {\n const {\n db: dbOptions,\n auth: authOptions,\n realtime: realtimeOptions,\n global: globalOptions,\n } = options\n const {\n db: DEFAULT_DB_OPTIONS,\n auth: DEFAULT_AUTH_OPTIONS,\n realtime: DEFAULT_REALTIME_OPTIONS,\n global: DEFAULT_GLOBAL_OPTIONS,\n } = defaults\n\n const result: Required<SupabaseClientOptions<SchemaName>> = {\n db: {\n ...DEFAULT_DB_OPTIONS,\n ...dbOptions,\n },\n auth: {\n ...DEFAULT_AUTH_OPTIONS,\n ...authOptions,\n },\n realtime: {\n ...DEFAULT_REALTIME_OPTIONS,\n ...realtimeOptions,\n },\n storage: {},\n global: {\n ...DEFAULT_GLOBAL_OPTIONS,\n ...globalOptions,\n headers: {\n ...(DEFAULT_GLOBAL_OPTIONS?.headers ?? {}),\n ...(globalOptions?.headers ?? {}),\n },\n },\n accessToken: async () => '',\n }\n\n if (options.accessToken) {\n result.accessToken = options.accessToken\n } else {\n // hack around Required<>\n delete (result as any).accessToken\n }\n\n return result\n}\n\n/**\n * Validates a Supabase client URL\n *\n * @param {string} supabaseUrl - The Supabase client URL string.\n * @returns {URL} - The validated base URL.\n * @throws {Error}\n */\nexport function validateSupabaseUrl(supabaseUrl: string): URL {\n const trimmedUrl = supabaseUrl?.trim()\n\n if (!trimmedUrl) {\n throw new Error('supabaseUrl is required.')\n }\n\n if (!trimmedUrl.match(/^https?:\\/\\//i)) {\n throw new Error('Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.')\n }\n\n try {\n return new URL(ensureTrailingSlash(trimmedUrl))\n } catch {\n throw Error('Invalid supabaseUrl: Provided URL is malformed.')\n }\n}\n","import { AuthClient } from '@supabase/auth-js'\nimport { SupabaseAuthClientOptions } from './types'\n\nexport class SupabaseAuthClient extends AuthClient {\n constructor(options: SupabaseAuthClientOptions) {\n super(options)\n }\n}\n","import type { AuthChangeEvent } from '@supabase/auth-js'\nimport { FunctionsClient } from '@supabase/functions-js'\nimport {\n PostgrestClient,\n type PostgrestFilterBuilder,\n type PostgrestQueryBuilder,\n} from '@supabase/postgrest-js'\nimport {\n type RealtimeChannel,\n type RealtimeChannelOptions,\n RealtimeClient,\n type RealtimeClientOptions,\n} from '@supabase/realtime-js'\nimport { StorageClient as SupabaseStorageClient } from '@supabase/storage-js'\nimport {\n DEFAULT_AUTH_OPTIONS,\n DEFAULT_DB_OPTIONS,\n DEFAULT_GLOBAL_OPTIONS,\n DEFAULT_REALTIME_OPTIONS,\n} from './lib/constants'\nimport { fetchWithAuth } from './lib/fetch'\nimport { applySettingDefaults, validateSupabaseUrl } from './lib/helpers'\nimport { SupabaseAuthClient } from './lib/SupabaseAuthClient'\nimport type {\n Fetch,\n GenericSchema,\n SupabaseAuthClientOptions,\n SupabaseClientOptions,\n} from './lib/types'\nimport { GetRpcFunctionFilterBuilderByArgs } from './lib/rest/types/common/rpc'\n\n/**\n * Supabase Client.\n *\n * An isomorphic Javascript client for interacting with Postgres.\n */\nexport default class SupabaseClient<\n Database = any,\n // The second type parameter is also used for specifying db_schema, so we\n // support both cases.\n // TODO: Allow setting db_schema from ClientOptions.\n SchemaNameOrClientOptions extends\n | (string & keyof Omit<Database, '__InternalSupabase'>)\n | { PostgrestVersion: string } = 'public' extends keyof Omit<Database, '__InternalSupabase'>\n ? 'public'\n : string & keyof Omit<Database, '__InternalSupabase'>,\n SchemaName extends string &\n keyof Omit<Database, '__InternalSupabase'> = SchemaNameOrClientOptions extends string &\n keyof Omit<Database, '__InternalSupabase'>\n ? SchemaNameOrClientOptions\n : 'public' extends keyof Omit<Database, '__InternalSupabase'>\n ? 'public'\n : string & keyof Omit<Omit<Database, '__InternalSupabase'>, '__InternalSupabase'>,\n Schema extends Omit<Database, '__InternalSupabase'>[SchemaName] extends GenericSchema\n ? Omit<Database, '__InternalSupabase'>[SchemaName]\n : never = Omit<Database, '__InternalSupabase'>[SchemaName] extends GenericSchema\n ? Omit<Database, '__InternalSupabase'>[SchemaName]\n : never,\n ClientOptions extends { PostgrestVersion: string } = SchemaNameOrClientOptions extends string &\n keyof Omit<Database, '__InternalSupabase'>\n ? // If the version isn't explicitly set, look for it in the __InternalSupabase object to infer the right version\n Database extends { __InternalSupabase: { PostgrestVersion: string } }\n ? Database['__InternalSupabase']\n : // otherwise default to 12\n { PostgrestVersion: '12' }\n : SchemaNameOrClientOptions extends { PostgrestVersion: string }\n ? SchemaNameOrClientOptions\n : never,\n> {\n /**\n * Supabase Auth allows you to create and manage user sessions for access to data that is secured by access policies.\n */\n auth: SupabaseAuthClient\n realtime: RealtimeClient\n /**\n * Supabase Storage allows you to manage user-generated content, such as photos or videos.\n */\n storage: SupabaseStorageClient\n\n protected realtimeUrl: URL\n protected authUrl: URL\n protected storageUrl: URL\n protected functionsUrl: URL\n protected rest: PostgrestClient<Database, ClientOptions, SchemaName>\n protected storageKey: string\n protected fetch?: Fetch\n protected changedAccessToken?: string\n protected accessToken?: () => Promise<string | null>\n\n protected headers: Record<string, string>\n\n /**\n * Create a new client for use in the browser.\n * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard.\n * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard.\n * @param options.db.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase.\n * @param options.auth.autoRefreshToken Set to \"true\" if you want to automatically refresh the token before expiring.\n * @param options.auth.persistSession Set to \"true\" if you want to automatically save the user session into local storage.\n * @param options.auth.detectSessionInUrl Set to \"true\" if you want to automatically detects OAuth grants in the URL and signs in the user.\n * @param options.realtime Options passed along to realtime-js constructor.\n * @param options.storage Options passed along to the storage-js constructor.\n * @param options.global.fetch A custom fetch implementation.\n * @param options.global.headers Any additional headers to send with each network request.\n * @example\n * ```ts\n * import { createClient } from '@supabase/supabase-js'\n *\n * const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')\n * const { data } = await supabase.from('profiles').select('*')\n * ```\n */\n constructor(\n protected supabaseUrl: string,\n protected supabaseKey: string,\n options?: SupabaseClientOptions<SchemaName>\n ) {\n const baseUrl = validateSupabaseUrl(supabaseUrl)\n if (!supabaseKey) throw new Error('supabaseKey is required.')\n\n this.realtimeUrl = new URL('realtime/v1', baseUrl)\n this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace('http', 'ws')\n this.authUrl = new URL('auth/v1', baseUrl)\n this.storageUrl = new URL('storage/v1', baseUrl)\n this.functionsUrl = new URL('functions/v1', baseUrl)\n\n // default storage key uses the supabase project ref as a namespace\n const defaultStorageKey = `sb-${baseUrl.hostname.split('.')[0]}-auth-token`\n const DEFAULTS = {\n db: DEFAULT_DB_OPTIONS,\n realtime: DEFAULT_REALTIME_OPTIONS,\n auth: { ...DEFAULT_AUTH_OPTIONS, storageKey: defaultStorageKey },\n global: DEFAULT_GLOBAL_OPTIONS,\n }\n\n const settings = applySettingDefaults(options ?? {}, DEFAULTS)\n\n this.storageKey = settings.auth.storageKey ?? ''\n this.headers = settings.global.headers ?? {}\n\n if (!settings.accessToken) {\n this.auth = this._initSupabaseAuthClient(\n settings.auth ?? {},\n this.headers,\n settings.global.fetch\n )\n } else {\n this.accessToken = settings.accessToken\n\n this.auth = new Proxy<SupabaseAuthClient>({} as any, {\n get: (_, prop) => {\n throw new Error(\n `@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(\n prop\n )} is not possible`\n )\n },\n })\n }\n\n this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch)\n this.realtime = this._initRealtimeClient({\n headers: this.headers,\n accessToken: this._getAccessToken.bind(this),\n ...settings.realtime,\n })\n if (this.accessToken) {\n // Start auth immediately to avoid race condition with channel subscriptions\n this.accessToken()\n .then((token) => this.realtime.setAuth(token))\n .catch((e) => console.warn('Failed to set initial Realtime auth token:', e))\n }\n\n this.rest = new PostgrestClient(new URL('rest/v1', baseUrl).href, {\n headers: this.headers,\n schema: settings.db.schema,\n fetch: this.fetch,\n })\n\n this.storage = new SupabaseStorageClient(\n this.storageUrl.href,\n this.headers,\n this.fetch,\n options?.storage\n )\n\n if (!settings.accessToken) {\n this._listenForAuthEvents()\n }\n }\n\n /**\n * Supabase Functions allows you to deploy and invoke edge functions.\n */\n get functions(): FunctionsClient {\n return new FunctionsClient(this.functionsUrl.href, {\n headers: this.headers,\n customFetch: this.fetch,\n })\n }\n\n // NOTE: signatures must be kept in sync with PostgrestClient.from\n from<\n TableName extends string & keyof Schema['Tables'],\n Table extends Schema['Tables'][TableName],\n >(relation: TableName): PostgrestQueryBuilder<ClientOptions, Schema, Table, TableName>\n from<ViewName extends string & keyof Schema['Views'], View extends Schema['Views'][ViewName]>(\n relation: ViewName\n ): PostgrestQueryBuilder<ClientOptions, Schema, View, ViewName>\n /**\n * Perform a query on a table or a view.\n *\n * @param relation - The table or view name to query\n */\n from(relation: string): PostgrestQueryBuilder<ClientOptions, Schema, any> {\n return this.rest.from(relation)\n }\n\n // NOTE: signatures must be kept in sync with PostgrestClient.schema\n /**\n * Select a schema to query or perform an function (rpc) call.\n *\n * The schema needs to be on the list of exposed schemas inside Supabase.\n *\n * @param schema - The schema to query\n */\n schema<DynamicSchema extends string & keyof Omit<Database, '__InternalSupabase'>>(\n schema: DynamicSchema\n ): PostgrestClient<\n Database,\n ClientOptions,\n DynamicSchema,\n Database[DynamicSchema] extends GenericSchema ? Database[DynamicSchema] : any\n > {\n return this.rest.schema<DynamicSchema>(schema)\n }\n\n // NOTE: signatures must be kept in sync with PostgrestClient.rpc\n /**\n * Perform a function call.\n *\n * @param fn - The function name to call\n * @param args - The arguments to pass to the function call\n * @param options - Named parameters\n * @param options.head - When set to `true`, `data` will not be returned.\n * Useful if you only need the count.\n * @param options.get - When set to `true`, the function will be called with\n * read-only access mode.\n * @param options.count - Count algorithm to use to count rows returned by the\n * function. Only applicable for [set-returning\n * functions](https://www.postgresql.org/docs/current/functions-srf.html).\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n */\n rpc<\n FnName extends string & keyof Schema['Functions'],\n Args extends Schema['Functions'][FnName]['Args'] = never,\n FilterBuilder extends GetRpcFunctionFilterBuilderByArgs<\n Schema,\n FnName,\n Args\n > = GetRpcFunctionFilterBuilderByArgs<Schema, FnName, Args>,\n >(\n fn: FnName,\n args: Args = {} as Args,\n options: {\n head?: boolean\n get?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n } = {\n head: false,\n get: false,\n count: undefined,\n }\n ): PostgrestFilterBuilder<\n ClientOptions,\n Schema,\n FilterBuilder['Row'],\n FilterBuilder['Result'],\n FilterBuilder['RelationName'],\n FilterBuilder['Relationships'],\n 'RPC'\n > {\n return this.rest.rpc(fn, args, options) as unknown as PostgrestFilterBuilder<\n ClientOptions,\n Schema,\n FilterBuilder['Row'],\n FilterBuilder['Result'],\n FilterBuilder['RelationName'],\n FilterBuilder['Relationships'],\n 'RPC'\n >\n }\n\n /**\n * Creates a Realtime channel with Broadcast, Presence, and Postgres Changes.\n *\n * @param {string} name - The name of the Realtime channel.\n * @param {Object} opts - The options to pass to the Realtime channel.\n *\n */\n channel(name: string, opts: RealtimeChannelOptions = { config: {} }): RealtimeChannel {\n return this.realtime.channel(name, opts)\n }\n\n /**\n * Returns all Realtime channels.\n */\n getChannels(): RealtimeChannel[] {\n return this.realtime.getChannels()\n }\n\n /**\n * Unsubscribes and removes Realtime channel from Realtime client.\n *\n * @param {RealtimeChannel} channel - The name of the Realtime channel.\n *\n */\n removeChannel(channel: RealtimeChannel): Promise<'ok' | 'timed out' | 'error'> {\n return this.realtime.removeChannel(channel)\n }\n\n /**\n * Unsubscribes and removes all Realtime channels from Realtime client.\n */\n removeAllChannels(): Promise<('ok' | 'timed out' | 'error')[]> {\n return this.realtime.removeAllChannels()\n }\n\n private async _getAccessToken() {\n if (this.accessToken) {\n return await this.accessToken()\n }\n\n const { data } = await this.auth.getSession()\n\n return data.session?.access_token ?? this.supabaseKey\n }\n\n private _initSupabaseAuthClient(\n {\n autoRefreshToken,\n persistSession,\n detectSessionInUrl,\n storage,\n userStorage,\n storageKey,\n flowType,\n lock,\n debug,\n throwOnError,\n }: SupabaseAuthClientOptions,\n headers?: Record<string, string>,\n fetch?: Fetch\n ) {\n const authHeaders = {\n Authorization: `Bearer ${this.supabaseKey}`,\n apikey: `${this.supabaseKey}`,\n }\n return new SupabaseAuthClient({\n url: this.authUrl.href,\n headers: { ...authHeaders, ...headers },\n storageKey: storageKey,\n autoRefreshToken,\n persistSession,\n detectSessionInUrl,\n storage,\n userStorage,\n flowType,\n lock,\n debug,\n throwOnError,\n fetch,\n // auth checks if there is a custom authorizaiton header using this flag\n // so it knows whether to return an error when getUser is called with no session\n hasCustomAuthorizationHeader: Object.keys(this.headers).some(\n (key) => key.toLowerCase() === 'authorization'\n ),\n })\n }\n\n private _initRealtimeClient(options: RealtimeClientOptions) {\n return new RealtimeClient(this.realtimeUrl.href, {\n ...options,\n params: { ...{ apikey: this.supabaseKey }, ...options?.params },\n })\n }\n\n private _listenForAuthEvents() {\n const data = this.auth.onAuthStateChange((event, session) => {\n this._handleTokenChanged(event, 'CLIENT', session?.access_token)\n })\n return data\n }\n\n private _handleTokenChanged(\n event: AuthChangeEvent,\n source: 'CLIENT' | 'STORAGE',\n token?: string\n ) {\n if (\n (event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') &&\n this.changedAccessToken !== token\n ) {\n this.changedAccessToken = token\n this.realtime.setAuth(token)\n } else if (event === 'SIGNED_OUT') {\n this.realtime.setAuth()\n if (source == 'STORAGE') this.auth.signOut()\n this.changedAccessToken = undefined\n }\n }\n}\n","import SupabaseClient from './SupabaseClient'\nimport type { SupabaseClientOptions } from './lib/types'\n\nexport * from '@supabase/auth-js'\nexport type { User as AuthUser, Session as AuthSession } from '@supabase/auth-js'\nexport {\n type PostgrestResponse,\n type PostgrestSingleResponse,\n type PostgrestMaybeSingleResponse,\n PostgrestError,\n} from '@supabase/postgrest-js'\nexport {\n FunctionsHttpError,\n FunctionsFetchError,\n FunctionsRelayError,\n FunctionsError,\n type FunctionInvokeOptions,\n FunctionRegion,\n} from '@supabase/functions-js'\nexport * from '@supabase/realtime-js'\nexport { default as SupabaseClient } from './SupabaseClient'\nexport type { SupabaseClientOptions, QueryResult, QueryData, QueryError } from './lib/types'\n\n/**\n * Creates a new Supabase Client.\n *\n * @example\n * ```ts\n * import { createClient } from '@supabase/supabase-js'\n *\n * const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')\n * const { data, error } = await supabase.from('profiles').select('*')\n * ```\n */\nexport const createClient = <\n Database = any,\n SchemaNameOrClientOptions extends\n | (string & keyof Omit<Database, '__InternalSupabase'>)\n | { PostgrestVersion: string } = 'public' extends keyof Omit<Database, '__InternalSupabase'>\n ? 'public'\n : string & keyof Omit<Database, '__InternalSupabase'>,\n SchemaName extends string &\n keyof Omit<Database, '__InternalSupabase'> = SchemaNameOrClientOptions extends string &\n keyof Omit<Database, '__InternalSupabase'>\n ? SchemaNameOrClientOptions\n : 'public' extends keyof Omit<Database, '__InternalSupabase'>\n ? 'public'\n : string & keyof Omit<Omit<Database, '__InternalSupabase'>, '__InternalSupabase'>,\n>(\n supabaseUrl: string,\n supabaseKey: string,\n options?: SupabaseClientOptions<SchemaName>\n): SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName> => {\n return new SupabaseClient<Database, SchemaNameOrClientOptions, SchemaName>(\n supabaseUrl,\n supabaseKey,\n options\n )\n}\n\n// Check for Node.js <= 18 deprecation\nfunction shouldShowDeprecationWarning(): boolean {\n // Skip in browser environments\n if (typeof window !== 'undefined') {\n return false\n }\n\n // Skip if process is not available (e.g., Edge Runtime)\n if (typeof process === 'undefined') {\n return false\n }\n\n // Use dynamic property access to avoid Next.js Edge Runtime static analysis warnings\n const processVersion = (process as any)['version']\n if (processVersion === undefined || processVersion === null) {\n return false\n }\n\n const versionMatch = processVersion.match(/^v(\\d+)\\./)\n if (!versionMatch) {\n return false\n }\n\n const majorVersion = parseInt(versionMatch[1], 10)\n return majorVersion <= 18\n}\n\nif (shouldShowDeprecationWarning()) {\n console.warn(\n `⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. ` +\n `Please upgrade to Node.js 20 or later. ` +\n `For more information, visit: https://github.com/orgs/supabase/discussions/37217`\n )\n}\n"],"mappings":"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"}