@supabase/supabase-js 1.28.3 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/main/SupabaseClient.d.ts +10 -0
- package/dist/main/SupabaseClient.d.ts.map +1 -1
- package/dist/main/SupabaseClient.js +75 -5
- package/dist/main/SupabaseClient.js.map +1 -1
- package/dist/main/lib/SupabaseQueryBuilder.d.ts +4 -1
- package/dist/main/lib/SupabaseQueryBuilder.d.ts.map +1 -1
- package/dist/main/lib/SupabaseQueryBuilder.js +8 -2
- package/dist/main/lib/SupabaseQueryBuilder.js.map +1 -1
- package/dist/main/lib/SupabaseRealtimeClient.d.ts.map +1 -1
- package/dist/main/lib/SupabaseRealtimeClient.js +1 -0
- package/dist/main/lib/SupabaseRealtimeClient.js.map +1 -1
- package/dist/main/lib/constants.d.ts +1 -0
- package/dist/main/lib/constants.d.ts.map +1 -1
- package/dist/main/lib/constants.js +2 -1
- package/dist/main/lib/constants.js.map +1 -1
- package/dist/main/lib/helpers.d.ts +1 -0
- package/dist/main/lib/helpers.d.ts.map +1 -1
- package/dist/main/lib/helpers.js +3 -1
- package/dist/main/lib/helpers.js.map +1 -1
- package/dist/main/lib/types.d.ts +1 -0
- package/dist/main/lib/types.d.ts.map +1 -1
- package/dist/main/lib/version.d.ts +1 -1
- package/dist/main/lib/version.js +1 -1
- package/dist/module/SupabaseClient.d.ts +10 -0
- package/dist/module/SupabaseClient.d.ts.map +1 -1
- package/dist/module/SupabaseClient.js +76 -6
- package/dist/module/SupabaseClient.js.map +1 -1
- package/dist/module/lib/SupabaseQueryBuilder.d.ts +4 -1
- package/dist/module/lib/SupabaseQueryBuilder.d.ts.map +1 -1
- package/dist/module/lib/SupabaseQueryBuilder.js +8 -2
- package/dist/module/lib/SupabaseQueryBuilder.js.map +1 -1
- package/dist/module/lib/SupabaseRealtimeClient.d.ts.map +1 -1
- package/dist/module/lib/SupabaseRealtimeClient.js +1 -0
- package/dist/module/lib/SupabaseRealtimeClient.js.map +1 -1
- package/dist/module/lib/constants.d.ts +1 -0
- package/dist/module/lib/constants.d.ts.map +1 -1
- package/dist/module/lib/constants.js +1 -0
- package/dist/module/lib/constants.js.map +1 -1
- package/dist/module/lib/helpers.d.ts +1 -0
- package/dist/module/lib/helpers.d.ts.map +1 -1
- package/dist/module/lib/helpers.js +1 -0
- package/dist/module/lib/helpers.js.map +1 -1
- package/dist/module/lib/types.d.ts +1 -0
- package/dist/module/lib/types.d.ts.map +1 -1
- package/dist/module/lib/version.d.ts +1 -1
- package/dist/module/lib/version.js +1 -1
- package/dist/umd/supabase.js +1 -1
- package/package.json +4 -3
- package/src/SupabaseClient.ts +86 -6
- package/src/lib/SupabaseQueryBuilder.ts +16 -3
- package/src/lib/SupabaseRealtimeClient.ts +1 -0
- package/src/lib/constants.ts +1 -0
- package/src/lib/helpers.ts +2 -0
- package/src/lib/types.ts +1 -0
- package/src/lib/version.ts +1 -1
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ You can now use plain `<script>`s to import supabase-js from CDNs, like:
|
|
|
28
28
|
```html
|
|
29
29
|
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js"></script>
|
|
30
30
|
```
|
|
31
|
+
|
|
31
32
|
or even:
|
|
32
33
|
|
|
33
34
|
```html
|
|
@@ -41,7 +42,7 @@ Then you can use it from a global `supabase` variable:
|
|
|
41
42
|
const { createClient } = supabase
|
|
42
43
|
const _supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')
|
|
43
44
|
|
|
44
|
-
console.log('Supabase Instance: ', _supabase)
|
|
45
|
+
console.log('Supabase Instance: ', _supabase)
|
|
45
46
|
// ...
|
|
46
47
|
</script>
|
|
47
48
|
```
|
|
@@ -54,7 +55,9 @@ Then you can use it from a global `supabase` variable:
|
|
|
54
55
|
import { createClient } from '@supabase/supabase-js'
|
|
55
56
|
|
|
56
57
|
// Provide a custom `fetch` implementation as an option
|
|
57
|
-
const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', {
|
|
58
|
+
const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', {
|
|
59
|
+
fetch: (...args) => fetch(...args),
|
|
60
|
+
})
|
|
58
61
|
```
|
|
59
62
|
|
|
60
63
|
## Sponsors
|
|
@@ -21,7 +21,9 @@ export default class SupabaseClient {
|
|
|
21
21
|
protected authUrl: string;
|
|
22
22
|
protected storageUrl: string;
|
|
23
23
|
protected realtime: RealtimeClient;
|
|
24
|
+
protected multiTab: boolean;
|
|
24
25
|
protected fetch?: Fetch;
|
|
26
|
+
protected changedAccessToken: string | undefined;
|
|
25
27
|
protected headers: {
|
|
26
28
|
[key: string]: string;
|
|
27
29
|
};
|
|
@@ -35,6 +37,7 @@ export default class SupabaseClient {
|
|
|
35
37
|
* @param options.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user.
|
|
36
38
|
* @param options.headers Any additional headers to send with each network request.
|
|
37
39
|
* @param options.realtime Options passed along to realtime-js constructor.
|
|
40
|
+
* @param options.multiTab Set to "false" if you want to disable multi-tab/window events.
|
|
38
41
|
* @param options.fetch A custom fetch implementation.
|
|
39
42
|
*/
|
|
40
43
|
constructor(supabaseUrl: string, supabaseKey: string, options?: SupabaseClientOptions);
|
|
@@ -61,6 +64,10 @@ export default class SupabaseClient {
|
|
|
61
64
|
head?: boolean;
|
|
62
65
|
count?: null | 'exact' | 'planned' | 'estimated';
|
|
63
66
|
}): import("@supabase/postgrest-js").PostgrestFilterBuilder<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Remove all subscriptions.
|
|
69
|
+
*/
|
|
70
|
+
removeAllSubscriptions(): Promise<PromiseSettledResult<unknown>[]>;
|
|
64
71
|
/**
|
|
65
72
|
* Removes an active subscription and returns the number of open connections.
|
|
66
73
|
*
|
|
@@ -77,5 +84,8 @@ export default class SupabaseClient {
|
|
|
77
84
|
private _initPostgRESTClient;
|
|
78
85
|
private _getAuthHeaders;
|
|
79
86
|
private _closeChannel;
|
|
87
|
+
private _listenForMultiTabEvents;
|
|
88
|
+
private _listenForAuthEvents;
|
|
89
|
+
private _handleTokenChanged;
|
|
80
90
|
}
|
|
81
91
|
//# sourceMappingURL=SupabaseClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseClient.d.ts","sourceRoot":"","sources":["../../src/SupabaseClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"SupabaseClient.d.ts","sourceRoot":"","sources":["../../src/SupabaseClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAyB,MAAM,uBAAuB,CAAA;AAWnG;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAiC/B,SAAS,CAAC,WAAW,EAAE,MAAM;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM;IAjC/B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAA;IAExB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAA;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAA;IAClC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC3B,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACvB,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;IAChD,SAAS,CAAC,OAAO,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KACtB,CAAA;IAED;;;;;;;;;;;;OAYG;gBAES,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE,qBAAqB;IA6BjC;;OAEG;IACH,IAAI,OAAO,0BAEV;IAED;;;;OAIG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC;IAWrD;;;;;;;;OAQG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EACT,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,MAAM,EACf,EACE,IAAY,EACZ,KAAY,GACb,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;KAAO;IAM9E;;OAEG;IACG,sBAAsB;IAK5B;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,oBAAoB;YAmBvC,kBAAkB;IAWhC;;OAEG;IACH,gBAAgB,IAAI,oBAAoB,EAAE;IAI1C,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;CAsB5B"}
|
|
@@ -21,6 +21,7 @@ const DEFAULT_OPTIONS = {
|
|
|
21
21
|
autoRefreshToken: true,
|
|
22
22
|
persistSession: true,
|
|
23
23
|
detectSessionInUrl: true,
|
|
24
|
+
multiTab: true,
|
|
24
25
|
headers: constants_1.DEFAULT_HEADERS,
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
@@ -39,6 +40,7 @@ class SupabaseClient {
|
|
|
39
40
|
* @param options.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user.
|
|
40
41
|
* @param options.headers Any additional headers to send with each network request.
|
|
41
42
|
* @param options.realtime Options passed along to realtime-js constructor.
|
|
43
|
+
* @param options.multiTab Set to "false" if you want to disable multi-tab/window events.
|
|
42
44
|
* @param options.fetch A custom fetch implementation.
|
|
43
45
|
*/
|
|
44
46
|
constructor(supabaseUrl, supabaseKey, options) {
|
|
@@ -48,17 +50,20 @@ class SupabaseClient {
|
|
|
48
50
|
throw new Error('supabaseUrl is required.');
|
|
49
51
|
if (!supabaseKey)
|
|
50
52
|
throw new Error('supabaseKey is required.');
|
|
51
|
-
supabaseUrl = helpers_1.stripTrailingSlash(supabaseUrl);
|
|
53
|
+
supabaseUrl = (0, helpers_1.stripTrailingSlash)(supabaseUrl);
|
|
52
54
|
const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);
|
|
53
55
|
this.restUrl = `${supabaseUrl}/rest/v1`;
|
|
54
56
|
this.realtimeUrl = `${supabaseUrl}/realtime/v1`.replace('http', 'ws');
|
|
55
57
|
this.authUrl = `${supabaseUrl}/auth/v1`;
|
|
56
58
|
this.storageUrl = `${supabaseUrl}/storage/v1`;
|
|
57
59
|
this.schema = settings.schema;
|
|
60
|
+
this.multiTab = settings.multiTab;
|
|
58
61
|
this.fetch = settings.fetch;
|
|
59
62
|
this.headers = Object.assign(Object.assign({}, constants_1.DEFAULT_HEADERS), options === null || options === void 0 ? void 0 : options.headers);
|
|
60
63
|
this.auth = this._initSupabaseAuthClient(settings);
|
|
61
64
|
this.realtime = this._initRealtimeClient(Object.assign({ headers: this.headers }, settings.realtime));
|
|
65
|
+
this._listenForAuthEvents();
|
|
66
|
+
this._listenForMultiTabEvents();
|
|
62
67
|
// In the future we might allow the user to pass in a logger to receive these events.
|
|
63
68
|
// this.realtime.onOpen(() => console.log('OPEN'))
|
|
64
69
|
// this.realtime.onClose(() => console.log('CLOSED'))
|
|
@@ -98,6 +103,15 @@ class SupabaseClient {
|
|
|
98
103
|
const rest = this._initPostgRESTClient();
|
|
99
104
|
return rest.rpc(fn, params, { head, count });
|
|
100
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Remove all subscriptions.
|
|
108
|
+
*/
|
|
109
|
+
removeAllSubscriptions() {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const subscriptions = this.realtime.channels.slice();
|
|
112
|
+
return yield Promise.allSettled(subscriptions.map((sub) => this.removeSubscription(sub)));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
101
115
|
/**
|
|
102
116
|
* Removes an active subscription and returns the number of open connections.
|
|
103
117
|
*
|
|
@@ -107,13 +121,14 @@ class SupabaseClient {
|
|
|
107
121
|
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
108
122
|
try {
|
|
109
123
|
yield this._closeSubscription(subscription);
|
|
110
|
-
const
|
|
111
|
-
|
|
124
|
+
const allSubscriptions = this.getSubscriptions();
|
|
125
|
+
const openSubscriptionsCount = allSubscriptions.filter((chan) => chan.isJoined()).length;
|
|
126
|
+
if (!allSubscriptions.length) {
|
|
112
127
|
const { error } = yield this.realtime.disconnect();
|
|
113
128
|
if (error)
|
|
114
129
|
return resolve({ error });
|
|
115
130
|
}
|
|
116
|
-
return resolve({ error: null, data: { openSubscriptions } });
|
|
131
|
+
return resolve({ error: null, data: { openSubscriptions: openSubscriptionsCount } });
|
|
117
132
|
}
|
|
118
133
|
catch (error) {
|
|
119
134
|
return resolve({ error });
|
|
@@ -125,6 +140,10 @@ class SupabaseClient {
|
|
|
125
140
|
if (!subscription.isClosed()) {
|
|
126
141
|
yield this._closeChannel(subscription);
|
|
127
142
|
}
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
this.realtime.remove(subscription);
|
|
145
|
+
return resolve(true);
|
|
146
|
+
});
|
|
128
147
|
});
|
|
129
148
|
}
|
|
130
149
|
/**
|
|
@@ -171,12 +190,63 @@ class SupabaseClient {
|
|
|
171
190
|
subscription
|
|
172
191
|
.unsubscribe()
|
|
173
192
|
.receive('ok', () => {
|
|
174
|
-
this.realtime.remove(subscription);
|
|
175
193
|
return resolve(true);
|
|
176
194
|
})
|
|
177
195
|
.receive('error', (e) => reject(e));
|
|
178
196
|
});
|
|
179
197
|
}
|
|
198
|
+
_listenForMultiTabEvents() {
|
|
199
|
+
if (!this.multiTab || !(0, helpers_1.isBrowser)() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
return window === null || window === void 0 ? void 0 : window.addEventListener('storage', (e) => {
|
|
204
|
+
var _a, _b, _c;
|
|
205
|
+
if (e.key === constants_1.STORAGE_KEY) {
|
|
206
|
+
const newSession = JSON.parse(String(e.newValue));
|
|
207
|
+
const accessToken = (_b = (_a = newSession === null || newSession === void 0 ? void 0 : newSession.currentSession) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : undefined;
|
|
208
|
+
const previousAccessToken = (_c = this.auth.session()) === null || _c === void 0 ? void 0 : _c.access_token;
|
|
209
|
+
if (!accessToken) {
|
|
210
|
+
this._handleTokenChanged('SIGNED_OUT', accessToken, 'STORAGE');
|
|
211
|
+
}
|
|
212
|
+
else if (!previousAccessToken && accessToken) {
|
|
213
|
+
this._handleTokenChanged('SIGNED_IN', accessToken, 'STORAGE');
|
|
214
|
+
}
|
|
215
|
+
else if (previousAccessToken !== accessToken) {
|
|
216
|
+
this._handleTokenChanged('TOKEN_REFRESHED', accessToken, 'STORAGE');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
console.error('_listenForMultiTabEvents', error);
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
_listenForAuthEvents() {
|
|
227
|
+
let { data } = this.auth.onAuthStateChange((event, session) => {
|
|
228
|
+
this._handleTokenChanged(event, session === null || session === void 0 ? void 0 : session.access_token, 'CLIENT');
|
|
229
|
+
});
|
|
230
|
+
return data;
|
|
231
|
+
}
|
|
232
|
+
_handleTokenChanged(event, token, source) {
|
|
233
|
+
if ((event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') &&
|
|
234
|
+
this.changedAccessToken !== token) {
|
|
235
|
+
// Token has changed
|
|
236
|
+
this.realtime.setAuth(token);
|
|
237
|
+
// Ideally we should call this.auth.recoverSession() - need to make public
|
|
238
|
+
// to trigger a "SIGNED_IN" event on this client.
|
|
239
|
+
if (source == 'STORAGE')
|
|
240
|
+
this.auth.setAuth(token);
|
|
241
|
+
this.changedAccessToken = token;
|
|
242
|
+
}
|
|
243
|
+
else if (event === 'SIGNED_OUT' || event === 'USER_DELETED') {
|
|
244
|
+
// Token is removed
|
|
245
|
+
this.removeAllSubscriptions();
|
|
246
|
+
if (source == 'STORAGE')
|
|
247
|
+
this.auth.signOut();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
180
250
|
}
|
|
181
251
|
exports.default = SupabaseClient;
|
|
182
252
|
//# sourceMappingURL=SupabaseClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseClient.js","sourceRoot":"","sources":["../../src/SupabaseClient.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"SupabaseClient.js","sourceRoot":"","sources":["../../src/SupabaseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,9 @@ import { Fetch, SupabaseEventTypes, SupabaseRealtimePayload } from './types';
|
|
|
5
5
|
export declare class SupabaseQueryBuilder<T> extends PostgrestQueryBuilder<T> {
|
|
6
6
|
private _subscription;
|
|
7
7
|
private _realtime;
|
|
8
|
+
private _headers;
|
|
9
|
+
private _schema;
|
|
10
|
+
private _table;
|
|
8
11
|
constructor(url: string, { headers, schema, realtime, table, fetch, }: {
|
|
9
12
|
headers?: {
|
|
10
13
|
[key: string]: string;
|
|
@@ -15,7 +18,7 @@ export declare class SupabaseQueryBuilder<T> extends PostgrestQueryBuilder<T> {
|
|
|
15
18
|
fetch?: Fetch;
|
|
16
19
|
});
|
|
17
20
|
/**
|
|
18
|
-
* Subscribe to realtime changes in your
|
|
21
|
+
* Subscribe to realtime changes in your database.
|
|
19
22
|
* @param event The database event which you would like to receive updates for, or you can use the special wildcard `*` to listen to all changes.
|
|
20
23
|
* @param callback A callback that will handle the payload that is sent whenever your database changes.
|
|
21
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseQueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/SupabaseQueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAE5E,qBAAa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"SupabaseQueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/SupabaseQueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAE5E,qBAAa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAQ;gBAGpB,GAAG,EAAE,MAAM,EACX,EACE,OAAY,EACZ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,GACN,EAAE;QACD,OAAO,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QACnC,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,cAAc,CAAA;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,KAAK,CAAA;KACd;IAUH;;;;OAIG;IACH,EAAE,CACA,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,GACtD,sBAAsB;CAc1B"}
|
|
@@ -6,11 +6,14 @@ const SupabaseRealtimeClient_1 = require("./SupabaseRealtimeClient");
|
|
|
6
6
|
class SupabaseQueryBuilder extends postgrest_js_1.PostgrestQueryBuilder {
|
|
7
7
|
constructor(url, { headers = {}, schema, realtime, table, fetch, }) {
|
|
8
8
|
super(url, { headers, schema, fetch });
|
|
9
|
-
this._subscription =
|
|
9
|
+
this._subscription = null;
|
|
10
10
|
this._realtime = realtime;
|
|
11
|
+
this._headers = headers;
|
|
12
|
+
this._schema = schema;
|
|
13
|
+
this._table = table;
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
13
|
-
* Subscribe to realtime changes in your
|
|
16
|
+
* Subscribe to realtime changes in your database.
|
|
14
17
|
* @param event The database event which you would like to receive updates for, or you can use the special wildcard `*` to listen to all changes.
|
|
15
18
|
* @param callback A callback that will handle the payload that is sent whenever your database changes.
|
|
16
19
|
*/
|
|
@@ -18,6 +21,9 @@ class SupabaseQueryBuilder extends postgrest_js_1.PostgrestQueryBuilder {
|
|
|
18
21
|
if (!this._realtime.isConnected()) {
|
|
19
22
|
this._realtime.connect();
|
|
20
23
|
}
|
|
24
|
+
if (!this._subscription) {
|
|
25
|
+
this._subscription = new SupabaseRealtimeClient_1.SupabaseRealtimeClient(this._realtime, this._headers, this._schema, this._table);
|
|
26
|
+
}
|
|
21
27
|
return this._subscription.on(event, callback);
|
|
22
28
|
}
|
|
23
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseQueryBuilder.js","sourceRoot":"","sources":["../../../src/lib/SupabaseQueryBuilder.ts"],"names":[],"mappings":";;;AAAA,yDAA8D;AAC9D,qEAAiE;AAIjE,MAAa,oBAAwB,SAAQ,oCAAwB;
|
|
1
|
+
{"version":3,"file":"SupabaseQueryBuilder.js","sourceRoot":"","sources":["../../../src/lib/SupabaseQueryBuilder.ts"],"names":[],"mappings":";;;AAAA,yDAA8D;AAC9D,qEAAiE;AAIjE,MAAa,oBAAwB,SAAQ,oCAAwB;IAOnE,YACE,GAAW,EACX,EACE,OAAO,GAAG,EAAE,EACZ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,GAON;QAED,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAtBhC,kBAAa,GAAkC,IAAI,CAAA;QAwBzD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAED;;;;OAIG;IACH,EAAE,CACA,KAAyB,EACzB,QAAuD;QAEvD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;SACzB;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,+CAAsB,CAC7C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,CACZ,CAAA;SACF;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;CACF;AArDD,oDAqDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseRealtimeClient.d.ts","sourceRoot":"","sources":["../../../src/lib/SupabaseRealtimeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAgB,MAAM,uBAAuB,CAAA;AAC1F,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAErE,qBAAa,sBAAsB;IACjC,YAAY,EAAE,oBAAoB,CAAA;gBAGhC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM;IAanB,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"SupabaseRealtimeClient.d.ts","sourceRoot":"","sources":["../../../src/lib/SupabaseRealtimeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAgB,MAAM,uBAAuB,CAAA;AAC1F,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAErE,qBAAa,sBAAsB;IACjC,YAAY,EAAE,oBAAoB,CAAA;gBAGhC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM;IAanB,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,IAAI;IAmBvF;;OAEG;IACH,SAAS,CAAC,QAAQ,GAAE,QAAmB;CAUxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseRealtimeClient.js","sourceRoot":"","sources":["../../../src/lib/SupabaseRealtimeClient.ts"],"names":[],"mappings":";;;AAAA,uDAA0F;AAG1F,MAAa,sBAAsB;IAGjC,YACE,MAAsB,EACtB,OAAkC,EAClC,MAAc,EACd,SAAiB;QAEjB,MAAM,UAAU,GAA8B,EAAE,CAAA;QAChD,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,SAAS,EAAE,CAAA;QAC1F,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAExD,IAAI,SAAS,EAAE;YACb,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;SACrC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACvD,CAAC;IAEO,iBAAiB,CAAC,OAAY;QACpC,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;SACR,CAAA;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAC,GAAG,GAAG,0BAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;SAC9E;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAC,GAAG,GAAG,0BAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;SAClF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;OAKG;IACH,EAAE,CAAC,KAAyB,EAAE,QAAyD;QACrF,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,OAAY,EAAE,EAAE;YAC3C,IAAI,eAAe,GAAiC;gBAClD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,SAAS,EAAE,OAAO,CAAC,IAAI;gBACvB,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"SupabaseRealtimeClient.js","sourceRoot":"","sources":["../../../src/lib/SupabaseRealtimeClient.ts"],"names":[],"mappings":";;;AAAA,uDAA0F;AAG1F,MAAa,sBAAsB;IAGjC,YACE,MAAsB,EACtB,OAAkC,EAClC,MAAc,EACd,SAAiB;QAEjB,MAAM,UAAU,GAA8B,EAAE,CAAA;QAChD,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,SAAS,EAAE,CAAA;QAC1F,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAExD,IAAI,SAAS,EAAE;YACb,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;SACrC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACvD,CAAC;IAEO,iBAAiB,CAAC,OAAY;QACpC,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;SACR,CAAA;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAC,GAAG,GAAG,0BAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;SAC9E;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAC,GAAG,GAAG,0BAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;SAClF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;OAKG;IACH,EAAE,CAAC,KAAyB,EAAE,QAAyD;QACrF,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,OAAY,EAAE,EAAE;YAC3C,IAAI,eAAe,GAAiC;gBAClD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,SAAS,EAAE,OAAO,CAAC,IAAI;gBACvB,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAA;YAED,eAAe,mCAAQ,eAAe,GAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAE,CAAA;YAE5E,QAAQ,CAAC,eAAe,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,WAAqB,GAAG,EAAE,GAAE,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC,YAAY;aACd,SAAS,EAAE;aACX,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aAC3C,OAAO,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;aACjE,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;CACF;AA3ED,wDA2EC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;CAAgD,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;CAAgD,CAAA;AAC5E,eAAO,MAAM,WAAW,wBAAwB,CAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_HEADERS = void 0;
|
|
3
|
+
exports.STORAGE_KEY = exports.DEFAULT_HEADERS = void 0;
|
|
4
4
|
// constants.ts
|
|
5
5
|
const version_1 = require("./version");
|
|
6
6
|
exports.DEFAULT_HEADERS = { 'X-Client-Info': `supabase-js/${version_1.version}` };
|
|
7
|
+
exports.STORAGE_KEY = 'supabase.auth.token';
|
|
7
8
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACf,uCAAmC;AACtB,QAAA,eAAe,GAAG,EAAE,eAAe,EAAE,eAAe,iBAAO,EAAE,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACf,uCAAmC;AACtB,QAAA,eAAe,GAAG,EAAE,eAAe,EAAE,eAAe,iBAAO,EAAE,EAAE,CAAA;AAC/D,QAAA,WAAW,GAAG,qBAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,IAAI,WAMnB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAE7C"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,IAAI,WAMnB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAE7C;AAED,eAAO,MAAM,SAAS,eAAsC,CAAA"}
|
package/dist/main/lib/helpers.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// helpers.ts
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.stripTrailingSlash = exports.uuid = void 0;
|
|
4
|
+
exports.isBrowser = exports.stripTrailingSlash = exports.uuid = void 0;
|
|
5
5
|
function uuid() {
|
|
6
6
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
7
7
|
var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
|
|
@@ -13,4 +13,6 @@ function stripTrailingSlash(url) {
|
|
|
13
13
|
return url.replace(/\/$/, '');
|
|
14
14
|
}
|
|
15
15
|
exports.stripTrailingSlash = stripTrailingSlash;
|
|
16
|
+
const isBrowser = () => typeof window !== 'undefined';
|
|
17
|
+
exports.isBrowser = isBrowser;
|
|
16
18
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":";AAAA,aAAa;;;AAEb,SAAgB,IAAI;IAClB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAC9B,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACpC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,oBAMC;AAED,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC/B,CAAC;AAFD,gDAEC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":";AAAA,aAAa;;;AAEb,SAAgB,IAAI;IAClB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAC9B,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACpC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,oBAMC;AAED,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC/B,CAAC;AAFD,gDAEC;AAEM,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,CAAA;AAA/C,QAAA,SAAS,aAAsC"}
|
package/dist/main/lib/types.d.ts
CHANGED
|
@@ -49,6 +49,7 @@ export declare type SupabaseRealtimePayload<T> = {
|
|
|
49
49
|
new: T;
|
|
50
50
|
/** The previous record. Present for 'UPDATE' and 'DELETE' events. */
|
|
51
51
|
old: T;
|
|
52
|
+
errors: string[] | null;
|
|
52
53
|
};
|
|
53
54
|
export declare type SupabaseEventTypes = 'INSERT' | 'UPDATE' | 'DELETE' | '*';
|
|
54
55
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,oBAAY,KAAK,GAAG,OAAO,KAAK,CAAA;AAEhC,aAAK,mBAAmB,GAAG,qBAAqB,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAExE,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;CAAG;AAEzE,oBAAY,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACnC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAA;IAExD;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,oBAAY,uBAAuB,CAAC,CAAC,IAAI;IACvC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,GAAG,EAAE,CAAC,CAAA;IACN,qEAAqE;IACrE,GAAG,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,oBAAY,KAAK,GAAG,OAAO,KAAK,CAAA;AAEhC,aAAK,mBAAmB,GAAG,qBAAqB,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAExE,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;CAAG;AAEzE,oBAAY,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACnC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAA;IAExD;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,oBAAY,uBAAuB,CAAC,CAAC,IAAI;IACvC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,GAAG,EAAE,CAAC,CAAA;IACN,qEAAqE;IACrE,GAAG,EAAE,CAAC,CAAA;IACN,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACxB,CAAA;AAED,oBAAY,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.
|
|
1
|
+
export declare const version = "1.29.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/main/lib/version.js
CHANGED
|
@@ -21,7 +21,9 @@ export default class SupabaseClient {
|
|
|
21
21
|
protected authUrl: string;
|
|
22
22
|
protected storageUrl: string;
|
|
23
23
|
protected realtime: RealtimeClient;
|
|
24
|
+
protected multiTab: boolean;
|
|
24
25
|
protected fetch?: Fetch;
|
|
26
|
+
protected changedAccessToken: string | undefined;
|
|
25
27
|
protected headers: {
|
|
26
28
|
[key: string]: string;
|
|
27
29
|
};
|
|
@@ -35,6 +37,7 @@ export default class SupabaseClient {
|
|
|
35
37
|
* @param options.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user.
|
|
36
38
|
* @param options.headers Any additional headers to send with each network request.
|
|
37
39
|
* @param options.realtime Options passed along to realtime-js constructor.
|
|
40
|
+
* @param options.multiTab Set to "false" if you want to disable multi-tab/window events.
|
|
38
41
|
* @param options.fetch A custom fetch implementation.
|
|
39
42
|
*/
|
|
40
43
|
constructor(supabaseUrl: string, supabaseKey: string, options?: SupabaseClientOptions);
|
|
@@ -61,6 +64,10 @@ export default class SupabaseClient {
|
|
|
61
64
|
head?: boolean;
|
|
62
65
|
count?: null | 'exact' | 'planned' | 'estimated';
|
|
63
66
|
}): import("@supabase/postgrest-js").PostgrestFilterBuilder<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Remove all subscriptions.
|
|
69
|
+
*/
|
|
70
|
+
removeAllSubscriptions(): Promise<PromiseSettledResult<unknown>[]>;
|
|
64
71
|
/**
|
|
65
72
|
* Removes an active subscription and returns the number of open connections.
|
|
66
73
|
*
|
|
@@ -77,5 +84,8 @@ export default class SupabaseClient {
|
|
|
77
84
|
private _initPostgRESTClient;
|
|
78
85
|
private _getAuthHeaders;
|
|
79
86
|
private _closeChannel;
|
|
87
|
+
private _listenForMultiTabEvents;
|
|
88
|
+
private _listenForAuthEvents;
|
|
89
|
+
private _handleTokenChanged;
|
|
80
90
|
}
|
|
81
91
|
//# sourceMappingURL=SupabaseClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseClient.d.ts","sourceRoot":"","sources":["../../src/SupabaseClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"SupabaseClient.d.ts","sourceRoot":"","sources":["../../src/SupabaseClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAyB,MAAM,uBAAuB,CAAA;AAWnG;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAiC/B,SAAS,CAAC,WAAW,EAAE,MAAM;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM;IAjC/B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAA;IAExB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAA;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAA;IAClC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC3B,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACvB,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;IAChD,SAAS,CAAC,OAAO,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KACtB,CAAA;IAED;;;;;;;;;;;;OAYG;gBAES,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE,qBAAqB;IA6BjC;;OAEG;IACH,IAAI,OAAO,0BAEV;IAED;;;;OAIG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC;IAWrD;;;;;;;;OAQG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EACT,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,MAAM,EACf,EACE,IAAY,EACZ,KAAY,GACb,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;KAAO;IAM9E;;OAEG;IACG,sBAAsB;IAK5B;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,oBAAoB;YAmBvC,kBAAkB;IAWhC;;OAEG;IACH,gBAAgB,IAAI,oBAAoB,EAAE;IAI1C,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;CAsB5B"}
|
|
@@ -7,8 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { DEFAULT_HEADERS } from './lib/constants';
|
|
11
|
-
import { stripTrailingSlash } from './lib/helpers';
|
|
10
|
+
import { DEFAULT_HEADERS, STORAGE_KEY } from './lib/constants';
|
|
11
|
+
import { stripTrailingSlash, isBrowser } from './lib/helpers';
|
|
12
12
|
import { SupabaseAuthClient } from './lib/SupabaseAuthClient';
|
|
13
13
|
import { SupabaseQueryBuilder } from './lib/SupabaseQueryBuilder';
|
|
14
14
|
import { SupabaseStorageClient } from '@supabase/storage-js';
|
|
@@ -19,6 +19,7 @@ const DEFAULT_OPTIONS = {
|
|
|
19
19
|
autoRefreshToken: true,
|
|
20
20
|
persistSession: true,
|
|
21
21
|
detectSessionInUrl: true,
|
|
22
|
+
multiTab: true,
|
|
22
23
|
headers: DEFAULT_HEADERS,
|
|
23
24
|
};
|
|
24
25
|
/**
|
|
@@ -37,6 +38,7 @@ export default class SupabaseClient {
|
|
|
37
38
|
* @param options.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user.
|
|
38
39
|
* @param options.headers Any additional headers to send with each network request.
|
|
39
40
|
* @param options.realtime Options passed along to realtime-js constructor.
|
|
41
|
+
* @param options.multiTab Set to "false" if you want to disable multi-tab/window events.
|
|
40
42
|
* @param options.fetch A custom fetch implementation.
|
|
41
43
|
*/
|
|
42
44
|
constructor(supabaseUrl, supabaseKey, options) {
|
|
@@ -53,10 +55,13 @@ export default class SupabaseClient {
|
|
|
53
55
|
this.authUrl = `${supabaseUrl}/auth/v1`;
|
|
54
56
|
this.storageUrl = `${supabaseUrl}/storage/v1`;
|
|
55
57
|
this.schema = settings.schema;
|
|
58
|
+
this.multiTab = settings.multiTab;
|
|
56
59
|
this.fetch = settings.fetch;
|
|
57
60
|
this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), options === null || options === void 0 ? void 0 : options.headers);
|
|
58
61
|
this.auth = this._initSupabaseAuthClient(settings);
|
|
59
62
|
this.realtime = this._initRealtimeClient(Object.assign({ headers: this.headers }, settings.realtime));
|
|
63
|
+
this._listenForAuthEvents();
|
|
64
|
+
this._listenForMultiTabEvents();
|
|
60
65
|
// In the future we might allow the user to pass in a logger to receive these events.
|
|
61
66
|
// this.realtime.onOpen(() => console.log('OPEN'))
|
|
62
67
|
// this.realtime.onClose(() => console.log('CLOSED'))
|
|
@@ -96,6 +101,15 @@ export default class SupabaseClient {
|
|
|
96
101
|
const rest = this._initPostgRESTClient();
|
|
97
102
|
return rest.rpc(fn, params, { head, count });
|
|
98
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Remove all subscriptions.
|
|
106
|
+
*/
|
|
107
|
+
removeAllSubscriptions() {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const subscriptions = this.realtime.channels.slice();
|
|
110
|
+
return yield Promise.allSettled(subscriptions.map((sub) => this.removeSubscription(sub)));
|
|
111
|
+
});
|
|
112
|
+
}
|
|
99
113
|
/**
|
|
100
114
|
* Removes an active subscription and returns the number of open connections.
|
|
101
115
|
*
|
|
@@ -105,13 +119,14 @@ export default class SupabaseClient {
|
|
|
105
119
|
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
106
120
|
try {
|
|
107
121
|
yield this._closeSubscription(subscription);
|
|
108
|
-
const
|
|
109
|
-
|
|
122
|
+
const allSubscriptions = this.getSubscriptions();
|
|
123
|
+
const openSubscriptionsCount = allSubscriptions.filter((chan) => chan.isJoined()).length;
|
|
124
|
+
if (!allSubscriptions.length) {
|
|
110
125
|
const { error } = yield this.realtime.disconnect();
|
|
111
126
|
if (error)
|
|
112
127
|
return resolve({ error });
|
|
113
128
|
}
|
|
114
|
-
return resolve({ error: null, data: { openSubscriptions } });
|
|
129
|
+
return resolve({ error: null, data: { openSubscriptions: openSubscriptionsCount } });
|
|
115
130
|
}
|
|
116
131
|
catch (error) {
|
|
117
132
|
return resolve({ error });
|
|
@@ -123,6 +138,10 @@ export default class SupabaseClient {
|
|
|
123
138
|
if (!subscription.isClosed()) {
|
|
124
139
|
yield this._closeChannel(subscription);
|
|
125
140
|
}
|
|
141
|
+
return new Promise((resolve) => {
|
|
142
|
+
this.realtime.remove(subscription);
|
|
143
|
+
return resolve(true);
|
|
144
|
+
});
|
|
126
145
|
});
|
|
127
146
|
}
|
|
128
147
|
/**
|
|
@@ -169,11 +188,62 @@ export default class SupabaseClient {
|
|
|
169
188
|
subscription
|
|
170
189
|
.unsubscribe()
|
|
171
190
|
.receive('ok', () => {
|
|
172
|
-
this.realtime.remove(subscription);
|
|
173
191
|
return resolve(true);
|
|
174
192
|
})
|
|
175
193
|
.receive('error', (e) => reject(e));
|
|
176
194
|
});
|
|
177
195
|
}
|
|
196
|
+
_listenForMultiTabEvents() {
|
|
197
|
+
if (!this.multiTab || !isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
return window === null || window === void 0 ? void 0 : window.addEventListener('storage', (e) => {
|
|
202
|
+
var _a, _b, _c;
|
|
203
|
+
if (e.key === STORAGE_KEY) {
|
|
204
|
+
const newSession = JSON.parse(String(e.newValue));
|
|
205
|
+
const accessToken = (_b = (_a = newSession === null || newSession === void 0 ? void 0 : newSession.currentSession) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : undefined;
|
|
206
|
+
const previousAccessToken = (_c = this.auth.session()) === null || _c === void 0 ? void 0 : _c.access_token;
|
|
207
|
+
if (!accessToken) {
|
|
208
|
+
this._handleTokenChanged('SIGNED_OUT', accessToken, 'STORAGE');
|
|
209
|
+
}
|
|
210
|
+
else if (!previousAccessToken && accessToken) {
|
|
211
|
+
this._handleTokenChanged('SIGNED_IN', accessToken, 'STORAGE');
|
|
212
|
+
}
|
|
213
|
+
else if (previousAccessToken !== accessToken) {
|
|
214
|
+
this._handleTokenChanged('TOKEN_REFRESHED', accessToken, 'STORAGE');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
console.error('_listenForMultiTabEvents', error);
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
_listenForAuthEvents() {
|
|
225
|
+
let { data } = this.auth.onAuthStateChange((event, session) => {
|
|
226
|
+
this._handleTokenChanged(event, session === null || session === void 0 ? void 0 : session.access_token, 'CLIENT');
|
|
227
|
+
});
|
|
228
|
+
return data;
|
|
229
|
+
}
|
|
230
|
+
_handleTokenChanged(event, token, source) {
|
|
231
|
+
if ((event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') &&
|
|
232
|
+
this.changedAccessToken !== token) {
|
|
233
|
+
// Token has changed
|
|
234
|
+
this.realtime.setAuth(token);
|
|
235
|
+
// Ideally we should call this.auth.recoverSession() - need to make public
|
|
236
|
+
// to trigger a "SIGNED_IN" event on this client.
|
|
237
|
+
if (source == 'STORAGE')
|
|
238
|
+
this.auth.setAuth(token);
|
|
239
|
+
this.changedAccessToken = token;
|
|
240
|
+
}
|
|
241
|
+
else if (event === 'SIGNED_OUT' || event === 'USER_DELETED') {
|
|
242
|
+
// Token is removed
|
|
243
|
+
this.removeAllSubscriptions();
|
|
244
|
+
if (source == 'STORAGE')
|
|
245
|
+
this.auth.signOut();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
178
248
|
}
|
|
179
249
|
//# sourceMappingURL=SupabaseClient.js.map
|