@motherbase/client 1.3.1 → 1.4.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 +284 -265
- package/dist/auth.d.ts +143 -14
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +317 -14
- package/dist/auth.js.map +1 -1
- package/dist/channel.d.ts +15 -12
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js.map +1 -1
- package/dist/compat.d.ts +40 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +98 -0
- package/dist/compat.js.map +1 -0
- package/dist/cookie.d.ts +10 -2
- package/dist/cookie.d.ts.map +1 -1
- package/dist/cookie.js +13 -5
- package/dist/cookie.js.map +1 -1
- package/dist/database.d.ts +20 -1
- package/dist/database.d.ts.map +1 -1
- package/dist/functions.d.ts +36 -0
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +56 -5
- package/dist/functions.js.map +1 -1
- package/dist/http.d.ts +27 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +57 -9
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +72 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +163 -12
- package/dist/index.js.map +1 -1
- package/dist/postgrest.d.ts +88 -1
- package/dist/postgrest.d.ts.map +1 -1
- package/dist/postgrest.js +179 -17
- package/dist/postgrest.js.map +1 -1
- package/dist/query.d.ts +97 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +94 -0
- package/dist/query.js.map +1 -0
- package/dist/session.d.ts +12 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +49 -3
- package/dist/session.js.map +1 -1
- package/dist/storage.d.ts +172 -5
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +249 -6
- package/dist/storage.js.map +1 -1
- package/dist/testing.d.ts +38 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +50 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +257 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/warn.d.ts +4 -0
- package/dist/warn.d.ts.map +1 -0
- package/dist/warn.js +27 -0
- package/dist/warn.js.map +1 -0
- package/package.json +10 -2
package/dist/postgrest.js
CHANGED
|
@@ -92,9 +92,12 @@ function parseContentRange(header) {
|
|
|
92
92
|
* a name for it.
|
|
93
93
|
*/
|
|
94
94
|
export class PostgrestQueryBuilder {
|
|
95
|
-
constructor(http, model
|
|
95
|
+
constructor(http, model,
|
|
96
|
+
/** supabase-js semantic parity, from `createClient(..., { compat: 'supabase' })`. */
|
|
97
|
+
compat = false) {
|
|
96
98
|
this.http = http;
|
|
97
99
|
this.model = model;
|
|
100
|
+
this.compat = compat;
|
|
98
101
|
this.method = 'GET';
|
|
99
102
|
this.columns = '*';
|
|
100
103
|
/**
|
|
@@ -114,6 +117,9 @@ export class PostgrestQueryBuilder {
|
|
|
114
117
|
this.responseKind = 'json';
|
|
115
118
|
this.headOnly = false;
|
|
116
119
|
this.rowMode = 'many';
|
|
120
|
+
this.shouldThrow = false;
|
|
121
|
+
/** Set by `select()`, so a write can tell "rows asked for" from "rows always returned". */
|
|
122
|
+
this.selectCalled = false;
|
|
117
123
|
}
|
|
118
124
|
// --- verbs -------------------------------------------------------------
|
|
119
125
|
/**
|
|
@@ -124,6 +130,7 @@ export class PostgrestQueryBuilder {
|
|
|
124
130
|
*/
|
|
125
131
|
select(columns = '*', options = {}) {
|
|
126
132
|
this.columns = columns;
|
|
133
|
+
this.selectCalled = true;
|
|
127
134
|
if (this.method !== 'GET' && this.method !== 'HEAD')
|
|
128
135
|
this.prefer.push('return=representation');
|
|
129
136
|
if (options.count)
|
|
@@ -334,6 +341,64 @@ export class PostgrestQueryBuilder {
|
|
|
334
341
|
this.limits.set(prefix, to - from + 1);
|
|
335
342
|
return this;
|
|
336
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Every matching row, one page at a time.
|
|
346
|
+
*
|
|
347
|
+
* An unbounded `select()` stops at the server's `api.rest.maxRows` (1000 by
|
|
348
|
+
* default) and says nothing about it: the caller gets a full-looking array
|
|
349
|
+
* that is missing everything past the cap. This walks the result instead, so
|
|
350
|
+
* "give me all of them" is expressible without knowing the cap exists.
|
|
351
|
+
*
|
|
352
|
+
* ```ts
|
|
353
|
+
* for await (const row of client.from('events').select('*').stream()) { ... }
|
|
354
|
+
* ```
|
|
355
|
+
*
|
|
356
|
+
* The pages are separate requests, so rows inserted while the walk is running
|
|
357
|
+
* may be seen or missed depending on when they land. Order by a stable column
|
|
358
|
+
* if that matters.
|
|
359
|
+
*/
|
|
360
|
+
async *stream(options = {}) {
|
|
361
|
+
for await (const page of this.paginate(options)) {
|
|
362
|
+
for (const row of page.rows)
|
|
363
|
+
yield row;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Like `stream()`, a page at a time rather than a row at a time, with the
|
|
368
|
+
* total from `Content-Range` when the server sent one.
|
|
369
|
+
*
|
|
370
|
+
* An error ends the walk by throwing, unlike awaiting the builder, which
|
|
371
|
+
* resolves `{ data, error }`. A `for await` loop has nowhere to put an error
|
|
372
|
+
* value, and silently ending the iteration early would look exactly like
|
|
373
|
+
* reaching the last page.
|
|
374
|
+
*/
|
|
375
|
+
async *paginate(options = {}) {
|
|
376
|
+
const pageSize = options.pageSize ?? 1000;
|
|
377
|
+
if (!Number.isInteger(pageSize) || pageSize < 1) {
|
|
378
|
+
throw new Error(`pageSize must be a positive integer, received ${String(options.pageSize)}`);
|
|
379
|
+
}
|
|
380
|
+
if (this.method !== 'GET') {
|
|
381
|
+
throw new Error('stream() and paginate() read rows: call them on a select(), not on a write.');
|
|
382
|
+
}
|
|
383
|
+
if (this.rowMode !== 'many') {
|
|
384
|
+
throw new Error('stream() and paginate() walk many rows: drop single() / maybeSingle().');
|
|
385
|
+
}
|
|
386
|
+
let from = 0;
|
|
387
|
+
for (;;) {
|
|
388
|
+
this.range(from, from + pageSize - 1);
|
|
389
|
+
const result = await this.execute();
|
|
390
|
+
if (result.error)
|
|
391
|
+
throw Object.assign(new Error(result.error.message), result.error);
|
|
392
|
+
const rows = (result.data ?? []);
|
|
393
|
+
if (rows.length)
|
|
394
|
+
yield { rows, from, count: result.count };
|
|
395
|
+
// A short page is the last page. Requesting the next one would cost a
|
|
396
|
+
// round trip to learn what this one already said.
|
|
397
|
+
if (rows.length < pageSize)
|
|
398
|
+
return;
|
|
399
|
+
from += rows.length;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
337
402
|
/** Cancel the in-flight request when the signal aborts. */
|
|
338
403
|
abortSignal(signal) {
|
|
339
404
|
this.signal = signal;
|
|
@@ -346,6 +411,49 @@ export class PostgrestQueryBuilder {
|
|
|
346
411
|
returns() {
|
|
347
412
|
return this;
|
|
348
413
|
}
|
|
414
|
+
/** supabase-js's newer name for `returns()`. Also a compile-time cast only. */
|
|
415
|
+
overrideTypes() {
|
|
416
|
+
return this;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Reject the query instead of resolving `{ data: null, error }`.
|
|
420
|
+
*
|
|
421
|
+
* The `{ data, error }` envelope is the default in both SDKs because it makes
|
|
422
|
+
* a failure impossible to skip by accident. `throwOnError()` is the opt-out
|
|
423
|
+
* for code that would rather use try/catch, and ported Supabase code uses it
|
|
424
|
+
* widely enough that its absence is a `TypeError: … is not a function` on the
|
|
425
|
+
* first query.
|
|
426
|
+
*/
|
|
427
|
+
throwOnError() {
|
|
428
|
+
this.shouldThrow = true;
|
|
429
|
+
return this;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Fail the write if it would touch more than `count` rows.
|
|
433
|
+
*
|
|
434
|
+
* A guard against the missing-filter class of accident (`update()` with a
|
|
435
|
+
* typo'd `.eq()`), sent as `Prefer: max-affected`. A server that does not
|
|
436
|
+
* implement it ignores the preference, so treat this as a safety net rather
|
|
437
|
+
* than a guarantee, and keep the filter correct.
|
|
438
|
+
*/
|
|
439
|
+
maxAffected(count) {
|
|
440
|
+
this.prefer.push('handling=strict', `max-affected=${count}`);
|
|
441
|
+
return this;
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Roll the transaction back after running the query, so nothing is persisted.
|
|
445
|
+
* Useful for validating a write, or previewing what it would return.
|
|
446
|
+
*/
|
|
447
|
+
rollback() {
|
|
448
|
+
this.prefer.push('tx=rollback');
|
|
449
|
+
return this;
|
|
450
|
+
}
|
|
451
|
+
/** Ask for GeoJSON instead of rows. The result resolves to the parsed object. */
|
|
452
|
+
geojson() {
|
|
453
|
+
this.accept = 'application/geo+json';
|
|
454
|
+
this.responseKind = 'text-json';
|
|
455
|
+
return this;
|
|
456
|
+
}
|
|
349
457
|
/** Ask for `text/csv` instead of JSON. The result resolves to a string. */
|
|
350
458
|
csv() {
|
|
351
459
|
this.accept = 'text/csv';
|
|
@@ -394,12 +502,38 @@ export class PostgrestQueryBuilder {
|
|
|
394
502
|
const query = params.toString();
|
|
395
503
|
return `${contractPath.rest(this.model)}${query ? `?${query}` : ''}`;
|
|
396
504
|
}
|
|
505
|
+
/**
|
|
506
|
+
* The request this builder would send, as data.
|
|
507
|
+
*
|
|
508
|
+
* `client.transaction()` needs to describe several writes without issuing
|
|
509
|
+
* them, and the method and body are otherwise private. Exposed rather than
|
|
510
|
+
* reached into: a batch built from `(builder as any).method` would break the
|
|
511
|
+
* first time this class was refactored.
|
|
512
|
+
*/
|
|
513
|
+
toRequest() {
|
|
514
|
+
const path = this.toPath();
|
|
515
|
+
const queryString = path.includes('?') ? path.slice(path.indexOf('?') + 1) : '';
|
|
516
|
+
const query = {};
|
|
517
|
+
// Repeated keys are two conditions on one column, never one overwriting the
|
|
518
|
+
// other, so the value is always a list.
|
|
519
|
+
// `forEach` rather than iteration: this package targets a lib without the
|
|
520
|
+
// URLSearchParams iterator declaration, and forEach is in every runtime.
|
|
521
|
+
new URLSearchParams(queryString).forEach((value, key) => {
|
|
522
|
+
(query[key] ?? (query[key] = [])).push(value);
|
|
523
|
+
});
|
|
524
|
+
return { method: this.method, model: this.model, query, body: this.body };
|
|
525
|
+
}
|
|
397
526
|
/** The headers this builder sends. Exposed for tests alongside `toPath()`. */
|
|
398
527
|
toHeaders() {
|
|
399
528
|
const headers = {};
|
|
400
529
|
const prefer = [...this.prefer];
|
|
401
530
|
if (this.countOption)
|
|
402
531
|
prefer.push(`count=${this.countOption}`);
|
|
532
|
+
// supabase-js only returns written rows when `.select()` asked for them.
|
|
533
|
+
// The server defaults to `return=representation`, so parity means saying
|
|
534
|
+
// `minimal` out loud rather than dropping the rows on arrival.
|
|
535
|
+
if (this.compat && this.isWrite() && !this.selectCalled)
|
|
536
|
+
prefer.push('return=minimal');
|
|
403
537
|
if (prefer.length)
|
|
404
538
|
headers['Prefer'] = prefer.join(',');
|
|
405
539
|
if (this.accept)
|
|
@@ -431,29 +565,57 @@ export class PostgrestQueryBuilder {
|
|
|
431
565
|
// A HEAD request has no body by definition: the count is the whole answer.
|
|
432
566
|
if (this.headOnly)
|
|
433
567
|
return { data: null, error: null, count };
|
|
568
|
+
// `return=minimal` was sent: the write happened, there are no rows to
|
|
569
|
+
// report, and supabase-js resolves `{ data: null }` for exactly this case.
|
|
570
|
+
if (this.compat && this.isWrite() && !this.selectCalled) {
|
|
571
|
+
return { data: null, error: null, count };
|
|
572
|
+
}
|
|
434
573
|
const rows = result.data;
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
return
|
|
574
|
+
return this.finish(Array.isArray(rows) ? rows : rows == null ? [] : [rows], count);
|
|
575
|
+
}
|
|
576
|
+
catch (err) {
|
|
577
|
+
const error = toError(err);
|
|
578
|
+
// A filter matching nothing is a 404 here and an empty array in
|
|
579
|
+
// supabase-js. Under compat the write resolves empty, which is what
|
|
580
|
+
// ported code branches on (`if (!data.length)`), instead of a thrown or
|
|
581
|
+
// surfaced error it never had a handler for.
|
|
582
|
+
if (this.compat && error.status === 404 && (this.method === 'PATCH' || this.method === 'DELETE')) {
|
|
583
|
+
return this.finish([], 0);
|
|
445
584
|
}
|
|
446
|
-
|
|
447
|
-
|
|
585
|
+
return { data: null, error, count: null };
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
isWrite() {
|
|
589
|
+
return this.method === 'POST' || this.method === 'PATCH' || this.method === 'DELETE';
|
|
590
|
+
}
|
|
591
|
+
/** Apply `single()` / `maybeSingle()` to a row list. The one place row mode is read. */
|
|
592
|
+
finish(list, count) {
|
|
593
|
+
if (this.rowMode === 'single') {
|
|
594
|
+
if (list.length !== 1) {
|
|
595
|
+
const error = {
|
|
596
|
+
message: 'JSON object requested, multiple (or no) rows returned',
|
|
597
|
+
code: 'PGRST116',
|
|
598
|
+
};
|
|
599
|
+
return { data: null, error, count };
|
|
448
600
|
}
|
|
449
|
-
return { data: list, error: null, count };
|
|
601
|
+
return { data: list[0], error: null, count };
|
|
450
602
|
}
|
|
451
|
-
|
|
452
|
-
return { data: null, error:
|
|
603
|
+
if (this.rowMode === 'maybeSingle') {
|
|
604
|
+
return { data: list.length ? list[0] : null, error: null, count };
|
|
453
605
|
}
|
|
606
|
+
return { data: list, error: null, count };
|
|
454
607
|
}
|
|
455
608
|
then(onfulfilled, onrejected) {
|
|
456
|
-
|
|
609
|
+
// `throwOnError()` is applied here rather than inside execute() so every
|
|
610
|
+
// builder variant (single, csv, explain, geojson) inherits it: they are all
|
|
611
|
+
// the same object, cast, and `then` is the one path they share.
|
|
612
|
+
const settled = this.execute().then(result => {
|
|
613
|
+
if (this.shouldThrow && result.error) {
|
|
614
|
+
throw Object.assign(new Error(result.error.message), result.error);
|
|
615
|
+
}
|
|
616
|
+
return result;
|
|
617
|
+
});
|
|
618
|
+
return settled.then(onfulfilled, onrejected);
|
|
457
619
|
}
|
|
458
620
|
}
|
|
459
621
|
function safeJson(text) {
|
package/dist/postgrest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgrest.js","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAiIrD,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+DAA+D;AAC/D,SAAS,UAAU,CAAC,MAAqC;IACvD,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD,CAAC;AAED,8FAA8F;AAC9F,SAAS,kBAAkB,CAAC,MAAqC;IAC/D,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAA4B;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC,KAAsC,CAAC,CAAC;IAC5F,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,iFAAiF;AACjF,SAAS,gBAAgB,CAAC,KAAyD;IACjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,KAAsC,CAAC,CAAC;IACpF,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,KAAuB;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnG,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,IAAI,SAAS,CAAC,uDAAuD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,UAAU,CAAC,OAA0C;IAC5D,OAAO,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,IAAY;IAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,qGAAqG;AACrG,SAAS,iBAAiB,CAAC,MAAqB;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,qBAAqB;IA2BhC,YAA6B,IAAgB,EAAmB,KAAa;QAAhD,SAAI,GAAJ,IAAI,CAAY;QAAmB,UAAK,GAAL,KAAK,CAAQ;QAxBrE,WAAM,GAAiD,KAAK,CAAC;QAC7D,YAAO,GAAG,GAAG,CAAC;QACtB;;;;;WAKG;QACc,YAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QACjD,yFAAyF;QACxE,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpD,8DAA8D;QAC7C,eAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;QACzC,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnC,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpC,WAAM,GAAa,EAAE,CAAC;QAE/B,iBAAY,GAAiB,MAAM,CAAC;QAEpC,aAAQ,GAAG,KAAK,CAAC;QAGjB,YAAO,GAAY,MAAM,CAAC;IAE8C,CAAC;IAEjF,0EAA0E;IAE1E;;;;;OAKG;IACH,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,UAAyB,EAAE;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/F,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAA0C,EAAE,UAAyB,EAAE;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAA0C,EAAE,UAAyB,EAAE;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC;QAC3F,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAoB,EAAE,UAAyB,EAAE;QACtD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,UAAyB,EAAE;QAChC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,MAAe;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO;QACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,0EAA0E;IAE1E,EAAE,CAAC,MAAc,EAAE,KAAyB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,MAAc,EAAE,KAAyB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,KAAyB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,MAAc,EAAE,KAAyB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,KAAyB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,MAAc,EAAE,KAAyB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,gEAAgE;IAChE,IAAI,CAAC,MAAc,EAAE,OAAe;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,MAAc,EAAE,OAAe;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,SAAS,CAAC,MAAc,EAAE,QAA2B;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,SAAS,CAAC,MAAc,EAAE,QAA2B;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,UAAU,CAAC,MAAc,EAAE,QAA2B;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,UAAU,CAAC,MAAc,EAAE,QAA2B;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,MAAqC;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,KAAuB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,oDAAoD;IACpD,KAAK,CAAC,KAAyC;QAC7C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,GAAG,CACD,MAAc,EACd,QAAiD,EACjD,KAAyD;QAEzD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,MAAM,CACJ,MAAc,EACd,QAAiD,EACjD,KAAyD;QAEzD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,EAAE,CAAC,OAAe,EAAE,UAAiC,EAAE;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,kFAAkF;IAClF,UAAU,CACR,MAAc,EACd,KAAa,EACb,UAAsD,EAAE;QAExD,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,KAAK,OAAO;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBACzB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;oBAC5B,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QACzE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,MAAM,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,qEAAqE;IACrE,QAAQ,CAAC,MAAc,EAAE,KAA4B;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,oDAAoD;IACpD,WAAW,CAAC,MAAc,EAAE,KAA4B;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,+EAA+E;IAC/E,QAAQ,CAAC,MAAc,EAAE,KAA4B;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,yCAAyC;IACzC,OAAO,CAAC,MAAc,EAAE,KAAa;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,sDAAsD;IACtD,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,wCAAwC;IACxC,OAAO,CAAC,MAAc,EAAE,KAAa;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,uDAAuD;IACvD,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,oCAAoC;IACpC,aAAa,CAAC,MAAc,EAAE,KAAa;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEO,IAAI,CAAC,GAAW,EAAE,KAAa;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAE1E,KAAK,CAAC,MAAc,EAAE,UAAwB,EAAE;QAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,MAAM,KAAK,GACT,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5F,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,UAAiC,EAAE;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,IAAY,EAAE,EAAU,EAAE,UAAiC,EAAE;QACjE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,WAAW,CAAC,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAA2C,CAAC;IACrD,CAAC;IAED,2EAA2E;IAC3E,GAAG;QACD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,IAAuC,CAAC;IACjD,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,UAA0B,EAAE;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QACxC,MAAM,KAAK,GAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAW;aAC1E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,8BAA8B,MAAM,UAAU,YAAY,cAAc,KAAK,GAAG,CAAC;QAC/F,IAAI,CAAC,YAAY,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,OAAO,IAA0C,CAAC;IACpD,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAA8C,CAAC;IACxD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;QAC7B,OAAO,IAA8C,CAAC;IACxD,CAAC;IAED,0EAA0E;IAE1E,gFAAgF;IAChF,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,uEAAuE;QACvE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,8EAA8E;IAC9E,SAAS;QACP,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO;oBACP,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YAC3F,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAQ,IAAI,EAAE;gBAC7D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YAErE,2EAA2E;YAC3E,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAE7D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAErE,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,KAAK,GAAoB;wBAC7B,OAAO,EAAE,uDAAuD;wBAChE,IAAI,EAAE,UAAU;qBACjB,CAAC;oBACF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBACtC,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBACnC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACpE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,CACF,WAA4F,EAC5F,UAA2E;QAE3E,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAoB,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"postgrest.js","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"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"}
|
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Query / SWR glue: cache keys and fetchers for Motherbase queries.
|
|
3
|
+
*
|
|
4
|
+
* Every app that reaches for a data-fetching library writes the same two
|
|
5
|
+
* things, badly: a key convention, and a fetcher that remembers to throw on
|
|
6
|
+
* `{ error }` instead of caching it as data. The second one is the bug. A
|
|
7
|
+
* fetcher that returns `{ data: null, error }` resolves successfully as far as
|
|
8
|
+
* React Query is concerned, so the error is cached, `isError` stays false, and
|
|
9
|
+
* the UI renders an empty list forever.
|
|
10
|
+
*
|
|
11
|
+
* No dependency on React Query here, and none needed: the returned objects are
|
|
12
|
+
* plain `{ queryKey, queryFn }`, which is what `useQuery` takes. The same
|
|
13
|
+
* objects work with SWR by passing `queryKey` as the key and `queryFn` as the
|
|
14
|
+
* fetcher.
|
|
15
|
+
*/
|
|
16
|
+
import type { MotherbaseClient } from './index.js';
|
|
17
|
+
import type { TypedQuery } from './database.js';
|
|
18
|
+
import type { PostgrestResponse } from './postgrest.js';
|
|
19
|
+
/**
|
|
20
|
+
* The builder handed to a `build` callback: the same object `client.from()`
|
|
21
|
+
* returns, narrowed to the row type the helper was called with. Typed rather
|
|
22
|
+
* than `any`, so `.eq('athor', …)` is a compile error inside the callback and
|
|
23
|
+
* the editor completes the column names.
|
|
24
|
+
*/
|
|
25
|
+
export type QueryBuilderFor<Row extends object> = TypedQuery<Row, Partial<Row>, Partial<Row>>;
|
|
26
|
+
/**
|
|
27
|
+
* Any client, whatever `Database` it was created with.
|
|
28
|
+
*
|
|
29
|
+
* ponytail: the generic arguments are erased here because `from()`'s relation
|
|
30
|
+
* names are literal types that differ per `Database`, so no single parameter
|
|
31
|
+
* type accepts them all. The erasure stops at this boundary: everything the
|
|
32
|
+
* helpers hand back to the caller is typed through `Row`.
|
|
33
|
+
*/
|
|
34
|
+
type AnyClient = MotherbaseClient<any, any, any>;
|
|
35
|
+
/**
|
|
36
|
+
* Cache keys, hierarchical so invalidation can be coarse.
|
|
37
|
+
*
|
|
38
|
+
* `['motherbase', 'table', 'posts']` is a prefix of every key below it, so
|
|
39
|
+
* `invalidateQueries({ queryKey: keys.table('posts') })` reaches every list and
|
|
40
|
+
* every row of that table, which is what you want after a write. Anything
|
|
41
|
+
* narrower leaves a stale list on screen next to a fresh row.
|
|
42
|
+
*/
|
|
43
|
+
export declare const keys: {
|
|
44
|
+
all: readonly ["motherbase"];
|
|
45
|
+
table: (table: string) => readonly ["motherbase", "table", string];
|
|
46
|
+
list: (table: string, filters?: unknown) => readonly ["motherbase", "table", string, "list"] | readonly ["motherbase", "table", string, "list", {} | null];
|
|
47
|
+
row: (table: string, id: unknown) => readonly ["motherbase", "table", string, "row", unknown];
|
|
48
|
+
};
|
|
49
|
+
export interface QueryOptions<T> {
|
|
50
|
+
queryKey: readonly unknown[];
|
|
51
|
+
queryFn: () => Promise<T>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A list query.
|
|
55
|
+
*
|
|
56
|
+
* `build` receives the query builder so filters, ordering and column selection
|
|
57
|
+
* stay in the caller's hands; whatever it returns is awaited and unwrapped.
|
|
58
|
+
* Pass `filters` to make the key unique per filter set, or two different
|
|
59
|
+
* filtered lists of the same table will share one cache entry and overwrite
|
|
60
|
+
* each other.
|
|
61
|
+
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* useQuery(listQuery(client, 'posts', {
|
|
64
|
+
* filters: { author },
|
|
65
|
+
* build: q => q.select('*').eq('author', author).order('created_at'),
|
|
66
|
+
* }))
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function listQuery<Row extends object = Record<string, unknown>>(client: AnyClient, table: string, options?: {
|
|
70
|
+
filters?: unknown;
|
|
71
|
+
build?: (query: QueryBuilderFor<Row>) => PromiseLike<PostgrestResponse<Row[]>>;
|
|
72
|
+
}): QueryOptions<Row[]>;
|
|
73
|
+
/**
|
|
74
|
+
* One row by primary key (or by any unique column, through `column`).
|
|
75
|
+
*
|
|
76
|
+
* Resolves `null` rather than throwing when the row is not there: "not found"
|
|
77
|
+
* is an answer, and a cache library that receives it as an error retries it.
|
|
78
|
+
*/
|
|
79
|
+
export declare function rowQuery<Row extends object = Record<string, unknown>>(client: AnyClient, table: string, id: unknown, options?: {
|
|
80
|
+
column?: keyof Row & string;
|
|
81
|
+
columns?: string;
|
|
82
|
+
}): QueryOptions<Row | null>;
|
|
83
|
+
/**
|
|
84
|
+
* Every row, walked through `stream()` rather than capped at the server's
|
|
85
|
+
* `api.rest.maxRows`.
|
|
86
|
+
*
|
|
87
|
+
* Separate from `listQuery` on purpose: this issues one request per page, so it
|
|
88
|
+
* belongs to lists that are known to be small enough to hold in memory and
|
|
89
|
+
* large enough to exceed the cap. Anything unbounded wants real pagination.
|
|
90
|
+
*/
|
|
91
|
+
export declare function allRowsQuery<Row extends object = Record<string, unknown>>(client: AnyClient, table: string, options?: {
|
|
92
|
+
filters?: unknown;
|
|
93
|
+
pageSize?: number;
|
|
94
|
+
build?: (query: QueryBuilderFor<Row>) => QueryBuilderFor<Row>;
|
|
95
|
+
}): QueryOptions<Row[]>;
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,GAAG,SAAS,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9F;;;;;;;GAOG;AACH,KAAK,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAOjD;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI;;mBAEA,MAAM;kBACP,MAAM,YAAY,OAAO;iBAI1B,MAAM,MAAM,OAAO;CACjC,CAAC;AASF,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAC3E,GACL,YAAY,CAAC,GAAG,EAAE,CAAC,CASrB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,OAAO,EACX,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,CAc1B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC;CAC1D,GACL,YAAY,CAAC,GAAG,EAAE,CAAC,CAYrB"}
|
package/dist/query.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/** `from()` on an erased client, re-typed to the row the caller asked for. */
|
|
2
|
+
function queryFor(client, table) {
|
|
3
|
+
return client.from(table);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Cache keys, hierarchical so invalidation can be coarse.
|
|
7
|
+
*
|
|
8
|
+
* `['motherbase', 'table', 'posts']` is a prefix of every key below it, so
|
|
9
|
+
* `invalidateQueries({ queryKey: keys.table('posts') })` reaches every list and
|
|
10
|
+
* every row of that table, which is what you want after a write. Anything
|
|
11
|
+
* narrower leaves a stale list on screen next to a fresh row.
|
|
12
|
+
*/
|
|
13
|
+
export const keys = {
|
|
14
|
+
all: ['motherbase'],
|
|
15
|
+
table: (table) => ['motherbase', 'table', table],
|
|
16
|
+
list: (table, filters) => (filters === undefined
|
|
17
|
+
? ['motherbase', 'table', table, 'list']
|
|
18
|
+
: ['motherbase', 'table', table, 'list', filters]),
|
|
19
|
+
row: (table, id) => ['motherbase', 'table', table, 'row', id],
|
|
20
|
+
};
|
|
21
|
+
/** Unwrap a `{ data, error }` result the way a cache library needs: throw on error. */
|
|
22
|
+
async function unwrap(result) {
|
|
23
|
+
const { data, error } = await result;
|
|
24
|
+
if (error)
|
|
25
|
+
throw Object.assign(new Error(error.message), error);
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A list query.
|
|
30
|
+
*
|
|
31
|
+
* `build` receives the query builder so filters, ordering and column selection
|
|
32
|
+
* stay in the caller's hands; whatever it returns is awaited and unwrapped.
|
|
33
|
+
* Pass `filters` to make the key unique per filter set, or two different
|
|
34
|
+
* filtered lists of the same table will share one cache entry and overwrite
|
|
35
|
+
* each other.
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* useQuery(listQuery(client, 'posts', {
|
|
39
|
+
* filters: { author },
|
|
40
|
+
* build: q => q.select('*').eq('author', author).order('created_at'),
|
|
41
|
+
* }))
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function listQuery(client, table, options = {}) {
|
|
45
|
+
const { filters, build } = options;
|
|
46
|
+
return {
|
|
47
|
+
queryKey: keys.list(table, filters),
|
|
48
|
+
queryFn: () => {
|
|
49
|
+
const base = queryFor(client, table);
|
|
50
|
+
return unwrap(build ? build(base) : base.select('*'));
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* One row by primary key (or by any unique column, through `column`).
|
|
56
|
+
*
|
|
57
|
+
* Resolves `null` rather than throwing when the row is not there: "not found"
|
|
58
|
+
* is an answer, and a cache library that receives it as an error retries it.
|
|
59
|
+
*/
|
|
60
|
+
export function rowQuery(client, table, id, options = {}) {
|
|
61
|
+
const { column = 'id', columns = '*' } = options;
|
|
62
|
+
return {
|
|
63
|
+
queryKey: keys.row(table, id),
|
|
64
|
+
queryFn: () => unwrap(queryFor(client, table)
|
|
65
|
+
// `columns` is a runtime string, so it cannot be checked against the
|
|
66
|
+
// row the way a literal passed to `.select()` is.
|
|
67
|
+
.select(columns)
|
|
68
|
+
.eq(column, id)
|
|
69
|
+
.maybeSingle()),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Every row, walked through `stream()` rather than capped at the server's
|
|
74
|
+
* `api.rest.maxRows`.
|
|
75
|
+
*
|
|
76
|
+
* Separate from `listQuery` on purpose: this issues one request per page, so it
|
|
77
|
+
* belongs to lists that are known to be small enough to hold in memory and
|
|
78
|
+
* large enough to exceed the cap. Anything unbounded wants real pagination.
|
|
79
|
+
*/
|
|
80
|
+
export function allRowsQuery(client, table, options = {}) {
|
|
81
|
+
const { filters, pageSize, build } = options;
|
|
82
|
+
return {
|
|
83
|
+
queryKey: [...keys.list(table, filters), 'all'],
|
|
84
|
+
queryFn: async () => {
|
|
85
|
+
const base = queryFor(client, table);
|
|
86
|
+
const query = build ? build(base) : base.select('*');
|
|
87
|
+
const rows = [];
|
|
88
|
+
for await (const row of query.stream({ pageSize }))
|
|
89
|
+
rows.push(row);
|
|
90
|
+
return rows;
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AuthEvent, AuthListener, KeyValueStorageAdapter, Session, SessionStorageAdapter } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* The key every built-in storage adapter defaults to, for both the cookie and
|
|
4
4
|
* localStorage. Defined once: it is a contract between the browser half of an
|
|
@@ -13,6 +13,17 @@ export declare function memoryStorage(): SessionStorageAdapter;
|
|
|
13
13
|
* unavailable (SSR, private mode), so it never throws on import or use.
|
|
14
14
|
*/
|
|
15
15
|
export declare function localStorageStorage(key?: string): SessionStorageAdapter;
|
|
16
|
+
/**
|
|
17
|
+
* Wrap a supabase-js style key/value store (localStorage, React Native's
|
|
18
|
+
* AsyncStorage, a cookie shim) as a session adapter.
|
|
19
|
+
*
|
|
20
|
+
* This is what lets `createClient(url, key, { auth: { storage: AsyncStorage } })`
|
|
21
|
+
* work verbatim on a ported app. A value that will not parse is treated as no
|
|
22
|
+
* session rather than thrown: a corrupt entry must not brick every launch.
|
|
23
|
+
*/
|
|
24
|
+
export declare function keyValueStorage(store: KeyValueStorageAdapter, key?: string): SessionStorageAdapter;
|
|
25
|
+
/** Tell the two adapter shapes apart: supabase-js's is a key/value store. */
|
|
26
|
+
export declare function isKeyValueStorage(value: KeyValueStorageAdapter | SessionStorageAdapter): value is KeyValueStorageAdapter;
|
|
16
27
|
/**
|
|
17
28
|
* Holds the live session in memory, mirrors it to a storage adapter, and
|
|
18
29
|
* notifies listeners of auth changes. The in-memory copy is the source of truth
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,OAAO,EACP,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,qBAAqB,CAQrD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,SAAqB,GAAG,qBAAqB,CAkBnF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,SAAqB,GAAG,qBAAqB,CAgB9G;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAAG,qBAAqB,GACpD,KAAK,IAAI,sBAAsB,CAEjC;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAKX,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAS;gBAEI,OAAO,EAAE,qBAAqB;IAE3D,mDAAmD;IAC7C,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAoBxC,GAAG,IAAI,OAAO,GAAG,IAAI;IAIf,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE,+EAA+E;IACzE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,IAAI;IAK7C,OAAO,CAAC,IAAI;CAGb"}
|
package/dist/session.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeSession } from './compat.js';
|
|
1
2
|
/**
|
|
2
3
|
* The key every built-in storage adapter defaults to, for both the cookie and
|
|
3
4
|
* localStorage. Defined once: it is a contract between the browser half of an
|
|
@@ -43,6 +44,39 @@ export function localStorageStorage(key = SESSION_COOKIE_KEY) {
|
|
|
43
44
|
},
|
|
44
45
|
};
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Wrap a supabase-js style key/value store (localStorage, React Native's
|
|
49
|
+
* AsyncStorage, a cookie shim) as a session adapter.
|
|
50
|
+
*
|
|
51
|
+
* This is what lets `createClient(url, key, { auth: { storage: AsyncStorage } })`
|
|
52
|
+
* work verbatim on a ported app. A value that will not parse is treated as no
|
|
53
|
+
* session rather than thrown: a corrupt entry must not brick every launch.
|
|
54
|
+
*/
|
|
55
|
+
export function keyValueStorage(store, key = SESSION_COOKIE_KEY) {
|
|
56
|
+
return {
|
|
57
|
+
get: async () => {
|
|
58
|
+
const raw = await store.getItem(key);
|
|
59
|
+
if (!raw)
|
|
60
|
+
return null;
|
|
61
|
+
try {
|
|
62
|
+
return JSON.parse(raw);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
set: async (s) => {
|
|
69
|
+
if (s)
|
|
70
|
+
await store.setItem(key, JSON.stringify(s));
|
|
71
|
+
else
|
|
72
|
+
await store.removeItem(key);
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** Tell the two adapter shapes apart: supabase-js's is a key/value store. */
|
|
77
|
+
export function isKeyValueStorage(value) {
|
|
78
|
+
return typeof value.getItem === 'function';
|
|
79
|
+
}
|
|
46
80
|
/**
|
|
47
81
|
* Holds the live session in memory, mirrors it to a storage adapter, and
|
|
48
82
|
* notifies listeners of auth changes. The in-memory copy is the source of truth
|
|
@@ -59,7 +93,19 @@ export class SessionStore {
|
|
|
59
93
|
async hydrate() {
|
|
60
94
|
if (this.hydrated)
|
|
61
95
|
return this.current;
|
|
62
|
-
|
|
96
|
+
// A session read back from storage was written by an older version (or by
|
|
97
|
+
// the server half of an SSR app), so it is normalised on the way in too:
|
|
98
|
+
// the aliases must not depend on which code path produced the session.
|
|
99
|
+
const loaded = await this.storage.get();
|
|
100
|
+
// Re-check AFTER the await. `hydrate()` is started but not awaited by
|
|
101
|
+
// `onAuthStateChange`, so a `set()` can land while this one is still
|
|
102
|
+
// reading storage, and `loaded` is then a snapshot from before that write.
|
|
103
|
+
// Assigning it anyway is a lost update, and it presents as the opposite of
|
|
104
|
+
// a storage bug: `setSession()` resolves with "Invalid session" because the
|
|
105
|
+
// token it just stored was wiped out from under the request that used it.
|
|
106
|
+
if (this.hydrated)
|
|
107
|
+
return this.current;
|
|
108
|
+
this.current = normalizeSession(loaded);
|
|
63
109
|
this.hydrated = true;
|
|
64
110
|
return this.current;
|
|
65
111
|
}
|
|
@@ -67,9 +113,9 @@ export class SessionStore {
|
|
|
67
113
|
return this.current;
|
|
68
114
|
}
|
|
69
115
|
async set(session, event) {
|
|
70
|
-
this.current = session;
|
|
116
|
+
this.current = normalizeSession(session);
|
|
71
117
|
this.hydrated = true;
|
|
72
|
-
await this.storage.set(
|
|
118
|
+
await this.storage.set(this.current);
|
|
73
119
|
this.emit(event);
|
|
74
120
|
}
|
|
75
121
|
/** Replace only the tokens, keeping the existing user (used after refresh). */
|