@motherbase/client 1.2.4 → 1.2.5
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 +95 -42
- package/dist/auth.d.ts +0 -5
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +0 -15
- package/dist/auth.js.map +1 -1
- package/dist/database.d.ts +169 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +2 -0
- package/dist/database.js.map +1 -0
- package/dist/http.d.ts +11 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +10 -1
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +49 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -2
- package/dist/index.js.map +1 -1
- package/dist/postgrest.d.ts +207 -32
- package/dist/postgrest.d.ts.map +1 -1
- package/dist/postgrest.js +349 -54
- package/dist/postgrest.js.map +1 -1
- package/dist/storage.d.ts +20 -14
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +56 -18
- package/dist/storage.js.map +1 -1
- package/package.json +1 -1
package/dist/postgrest.js
CHANGED
|
@@ -1,17 +1,89 @@
|
|
|
1
1
|
import { toError } from './http.js';
|
|
2
2
|
import { contractPath } from '@motherbase/contracts';
|
|
3
|
-
|
|
3
|
+
// ── value encoding ───────────────────────────────────────────────────────────
|
|
4
|
+
/**
|
|
5
|
+
* Characters that end a token in the PostgREST grammar (or in a Postgres array
|
|
6
|
+
* literal). A string value carrying any of them has to be quoted or the server
|
|
7
|
+
* reads a different filter than the caller wrote.
|
|
8
|
+
*/
|
|
9
|
+
const NEEDS_QUOTING = /[,.:()"\\{}\s]/;
|
|
10
|
+
function quoteLiteral(value) {
|
|
11
|
+
return `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
12
|
+
}
|
|
13
|
+
/** One scalar value: quoted only when it has to be. */
|
|
14
|
+
export function encodeLiteral(value) {
|
|
4
15
|
if (value === null)
|
|
5
16
|
return 'null';
|
|
6
|
-
|
|
17
|
+
if (typeof value !== 'string')
|
|
18
|
+
return String(value);
|
|
19
|
+
if (value === '' || NEEDS_QUOTING.test(value))
|
|
20
|
+
return quoteLiteral(value);
|
|
21
|
+
return value;
|
|
7
22
|
}
|
|
23
|
+
/** `in.(a,"b,c")` and the `(all)` / `(any)` modifier lists. */
|
|
8
24
|
function encodeList(values) {
|
|
9
|
-
return `(${values.map(
|
|
25
|
+
return `(${values.map(encodeLiteral).join(',')})`;
|
|
26
|
+
}
|
|
27
|
+
/** A Postgres array literal: `{a,"b,c"}`. Used by `cs`, `cd`, `ov` and the like modifiers. */
|
|
28
|
+
function encodeArrayLiteral(values) {
|
|
29
|
+
return `{${values.map(encodeLiteral).join(',')}}`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The operand of `cs` / `cd` / `ov`, which is polymorphic in PostgREST:
|
|
33
|
+
* an array column takes `{a,b}`, a range column takes its own literal
|
|
34
|
+
* (`[2000-01-01,2000-01-31]`) and a jsonb column takes JSON. A string is passed
|
|
35
|
+
* through untouched because it is already one of the last two.
|
|
36
|
+
*/
|
|
37
|
+
function encodeArrayOperand(value) {
|
|
38
|
+
if (typeof value === 'string')
|
|
39
|
+
return value;
|
|
40
|
+
if (Array.isArray(value))
|
|
41
|
+
return encodeArrayLiteral(value);
|
|
42
|
+
return JSON.stringify(value);
|
|
43
|
+
}
|
|
44
|
+
/** Values handed to `not()` / `filter()`: strings verbatim, arrays as a list. */
|
|
45
|
+
function encodeRawOperand(value) {
|
|
46
|
+
if (Array.isArray(value))
|
|
47
|
+
return encodeList(value);
|
|
48
|
+
if (value === null)
|
|
49
|
+
return 'null';
|
|
50
|
+
return String(value);
|
|
51
|
+
}
|
|
52
|
+
function isValueOf(value) {
|
|
53
|
+
if (value === null)
|
|
54
|
+
return 'null';
|
|
55
|
+
if (value === true)
|
|
56
|
+
return 'true';
|
|
57
|
+
if (value === false)
|
|
58
|
+
return 'false';
|
|
59
|
+
if (value === 'null' || value === 'true' || value === 'false' || value === 'unknown')
|
|
60
|
+
return value;
|
|
61
|
+
// Programmer misuse, not an API error: fail loudly rather than emit a filter
|
|
62
|
+
// the server will reject with an opaque 400.
|
|
63
|
+
throw new TypeError(`is() accepts null, true, false or unknown, received ${JSON.stringify(value)}`);
|
|
10
64
|
}
|
|
65
|
+
function referenced(options) {
|
|
66
|
+
return options?.referencedTable ?? options?.foreignTable ?? '';
|
|
67
|
+
}
|
|
68
|
+
function scopedKey(prefix, name) {
|
|
69
|
+
return prefix ? `${prefix}.${name}` : name;
|
|
70
|
+
}
|
|
71
|
+
/** `0-9/57` -> 57. An unknown total (a star after the slash) and a missing header both give null. */
|
|
72
|
+
function parseContentRange(header) {
|
|
73
|
+
if (!header)
|
|
74
|
+
return null;
|
|
75
|
+
const total = header.split('/')[1];
|
|
76
|
+
if (!total || total === '*')
|
|
77
|
+
return null;
|
|
78
|
+
const parsed = Number(total);
|
|
79
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
80
|
+
}
|
|
81
|
+
// ── the builder ──────────────────────────────────────────────────────────────
|
|
11
82
|
/**
|
|
12
83
|
* PostgREST-style, chainable, thenable query builder mapping onto the backend's
|
|
13
|
-
* `/rest/v1/:model` query-param dialect. Awaiting it resolves to
|
|
14
|
-
* and never rejects for expected API errors (only for
|
|
84
|
+
* `/rest/v1/:model` query-param dialect. Awaiting it resolves to
|
|
85
|
+
* `{ data, error, count }` and never rejects for expected API errors (only for
|
|
86
|
+
* programmer misuse).
|
|
15
87
|
*/
|
|
16
88
|
export class PostgrestQueryBuilder {
|
|
17
89
|
constructor(http, model) {
|
|
@@ -19,94 +91,270 @@ export class PostgrestQueryBuilder {
|
|
|
19
91
|
this.model = model;
|
|
20
92
|
this.method = 'GET';
|
|
21
93
|
this.columns = '*';
|
|
94
|
+
/**
|
|
95
|
+
* Repeated filters on one column must all survive: `?price=gt.10&price=lt.20`
|
|
96
|
+
* is two conditions ANDed together, which is why every filter is `append`ed
|
|
97
|
+
* and never `set`. Using `set` here (as this builder once did) silently
|
|
98
|
+
* dropped the first of the two.
|
|
99
|
+
*/
|
|
22
100
|
this.filters = new URLSearchParams();
|
|
23
|
-
|
|
101
|
+
/** Reserved params that are replaced rather than repeated (`columns`, `on_conflict`). */
|
|
102
|
+
this.extras = new Map();
|
|
103
|
+
/** Keyed by referenced table (`''` for the base relation). */
|
|
104
|
+
this.orderParts = new Map();
|
|
105
|
+
this.limits = new Map();
|
|
106
|
+
this.offsets = new Map();
|
|
107
|
+
this.prefer = [];
|
|
108
|
+
this.responseKind = 'json';
|
|
109
|
+
this.headOnly = false;
|
|
24
110
|
this.rowMode = 'many';
|
|
25
111
|
}
|
|
26
112
|
// --- verbs -------------------------------------------------------------
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Choose the columns, and optionally ask for a row count.
|
|
115
|
+
*
|
|
116
|
+
* After a write, `.select()` is the supabase-js way of asking for the rows
|
|
117
|
+
* back, so it also sends `Prefer: return=representation`.
|
|
118
|
+
*/
|
|
119
|
+
select(columns = '*', options = {}) {
|
|
30
120
|
this.columns = columns;
|
|
121
|
+
if (this.method !== 'GET' && this.method !== 'HEAD')
|
|
122
|
+
this.prefer.push('return=representation');
|
|
123
|
+
if (options.count)
|
|
124
|
+
this.countOption = options.count;
|
|
125
|
+
if (options.head) {
|
|
126
|
+
this.headOnly = true;
|
|
127
|
+
if (this.method === 'GET')
|
|
128
|
+
this.method = 'HEAD';
|
|
129
|
+
}
|
|
31
130
|
return this;
|
|
32
131
|
}
|
|
33
|
-
insert(values) {
|
|
132
|
+
insert(values, options = {}) {
|
|
34
133
|
this.method = 'POST';
|
|
35
134
|
this.body = values;
|
|
135
|
+
this.applyColumns(values);
|
|
136
|
+
if (options.count)
|
|
137
|
+
this.countOption = options.count;
|
|
138
|
+
if (options.defaultToNull === false)
|
|
139
|
+
this.prefer.push('missing=default');
|
|
36
140
|
return this;
|
|
37
141
|
}
|
|
38
142
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
143
|
+
* `INSERT .. ON CONFLICT DO UPDATE`. The conflict target defaults to the
|
|
144
|
+
* primary key server side; `onConflict` names another unique constraint.
|
|
41
145
|
*/
|
|
42
|
-
upsert(values) {
|
|
146
|
+
upsert(values, options = {}) {
|
|
43
147
|
this.method = 'POST';
|
|
44
148
|
this.body = values;
|
|
149
|
+
this.applyColumns(values);
|
|
150
|
+
this.prefer.push(`resolution=${options.ignoreDuplicates ? 'ignore' : 'merge'}-duplicates`);
|
|
151
|
+
if (options.onConflict !== undefined)
|
|
152
|
+
this.extras.set('on_conflict', options.onConflict);
|
|
153
|
+
if (options.count)
|
|
154
|
+
this.countOption = options.count;
|
|
155
|
+
if (options.defaultToNull === false)
|
|
156
|
+
this.prefer.push('missing=default');
|
|
45
157
|
return this;
|
|
46
158
|
}
|
|
47
|
-
update(values) {
|
|
159
|
+
update(values, options = {}) {
|
|
48
160
|
this.method = 'PATCH';
|
|
49
161
|
this.body = values;
|
|
162
|
+
if (options.count)
|
|
163
|
+
this.countOption = options.count;
|
|
50
164
|
return this;
|
|
51
165
|
}
|
|
52
|
-
delete() {
|
|
166
|
+
delete(options = {}) {
|
|
53
167
|
this.method = 'DELETE';
|
|
168
|
+
if (options.count)
|
|
169
|
+
this.countOption = options.count;
|
|
54
170
|
return this;
|
|
55
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* A bulk write states its column set explicitly, so a key missing from one
|
|
174
|
+
* row is still written (as NULL, or as the column default under
|
|
175
|
+
* `missing=default`) instead of being inferred from the first row alone.
|
|
176
|
+
*/
|
|
177
|
+
applyColumns(values) {
|
|
178
|
+
if (!Array.isArray(values))
|
|
179
|
+
return;
|
|
180
|
+
const seen = new Set();
|
|
181
|
+
for (const row of values) {
|
|
182
|
+
if (row && typeof row === 'object')
|
|
183
|
+
for (const key of Object.keys(row))
|
|
184
|
+
seen.add(key);
|
|
185
|
+
}
|
|
186
|
+
if (seen.size) {
|
|
187
|
+
this.extras.set('columns', Array.from(seen, column => `"${column}"`).join(','));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
56
190
|
// --- filters -----------------------------------------------------------
|
|
57
191
|
eq(column, value) {
|
|
58
|
-
this.
|
|
59
|
-
return this;
|
|
192
|
+
return this.push(column, `eq.${encodeLiteral(value)}`);
|
|
60
193
|
}
|
|
61
194
|
neq(column, value) {
|
|
62
|
-
this.
|
|
63
|
-
return this;
|
|
195
|
+
return this.push(column, `neq.${encodeLiteral(value)}`);
|
|
64
196
|
}
|
|
65
197
|
gt(column, value) {
|
|
66
|
-
this.
|
|
67
|
-
return this;
|
|
198
|
+
return this.push(column, `gt.${encodeLiteral(value)}`);
|
|
68
199
|
}
|
|
69
200
|
gte(column, value) {
|
|
70
|
-
this.
|
|
71
|
-
return this;
|
|
201
|
+
return this.push(column, `gte.${encodeLiteral(value)}`);
|
|
72
202
|
}
|
|
73
203
|
lt(column, value) {
|
|
74
|
-
this.
|
|
75
|
-
return this;
|
|
204
|
+
return this.push(column, `lt.${encodeLiteral(value)}`);
|
|
76
205
|
}
|
|
77
206
|
lte(column, value) {
|
|
78
|
-
this.
|
|
79
|
-
return this;
|
|
207
|
+
return this.push(column, `lte.${encodeLiteral(value)}`);
|
|
80
208
|
}
|
|
209
|
+
/** Case-sensitive LIKE. `*` is PostgREST's URL-friendly `%`. */
|
|
81
210
|
like(column, pattern) {
|
|
82
|
-
this.
|
|
83
|
-
return this;
|
|
211
|
+
return this.push(column, `like.${encodeLiteral(pattern)}`);
|
|
84
212
|
}
|
|
85
213
|
ilike(column, pattern) {
|
|
86
|
-
this.
|
|
87
|
-
|
|
214
|
+
return this.push(column, `ilike.${encodeLiteral(pattern)}`);
|
|
215
|
+
}
|
|
216
|
+
likeAllOf(column, patterns) {
|
|
217
|
+
return this.push(column, `like(all).${encodeArrayLiteral(patterns)}`);
|
|
218
|
+
}
|
|
219
|
+
likeAnyOf(column, patterns) {
|
|
220
|
+
return this.push(column, `like(any).${encodeArrayLiteral(patterns)}`);
|
|
221
|
+
}
|
|
222
|
+
ilikeAllOf(column, patterns) {
|
|
223
|
+
return this.push(column, `ilike(all).${encodeArrayLiteral(patterns)}`);
|
|
224
|
+
}
|
|
225
|
+
ilikeAnyOf(column, patterns) {
|
|
226
|
+
return this.push(column, `ilike(any).${encodeArrayLiteral(patterns)}`);
|
|
88
227
|
}
|
|
89
228
|
in(column, values) {
|
|
90
|
-
this.
|
|
91
|
-
return this;
|
|
229
|
+
return this.push(column, `in.${encodeList(values)}`);
|
|
92
230
|
}
|
|
93
231
|
is(column, value) {
|
|
94
|
-
this.
|
|
232
|
+
return this.push(column, `is.${isValueOf(value)}`);
|
|
233
|
+
}
|
|
234
|
+
/** Every key equal to its value, ANDed together. */
|
|
235
|
+
match(query) {
|
|
236
|
+
for (const [column, value] of Object.entries(query))
|
|
237
|
+
this.eq(column, value);
|
|
238
|
+
return this;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Negate any operator: `not('status', 'eq', 'live')` emits
|
|
242
|
+
* `status=not.eq.live`. The value is passed through verbatim for a string, so
|
|
243
|
+
* composite operands (`not('id', 'in', '(1,2)')`) reach the server as written.
|
|
244
|
+
*/
|
|
245
|
+
not(column, operator, value) {
|
|
246
|
+
return this.push(column, `not.${operator}.${encodeRawOperand(value)}`);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* The escape hatch: any operator, including the ones with no dedicated method
|
|
250
|
+
* (`match`, `imatch`, `isdistinct`) and the modifier forms (`like(any)`).
|
|
251
|
+
*/
|
|
252
|
+
filter(column, operator, value) {
|
|
253
|
+
return this.push(column, `${operator}.${encodeRawOperand(value)}`);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* A disjunction, written in PostgREST's own syntax and nestable:
|
|
257
|
+
* `or('status.eq.live,and(price.gt.10,price.lt.20)')`.
|
|
258
|
+
*/
|
|
259
|
+
or(filters, options = {}) {
|
|
260
|
+
return this.push(scopedKey(referenced(options), 'or'), `(${filters})`);
|
|
261
|
+
}
|
|
262
|
+
/** Full-text search. `type` picks the tsquery parser, `config` the dictionary. */
|
|
263
|
+
textSearch(column, query, options = {}) {
|
|
264
|
+
const prefix = options.type === 'plain'
|
|
265
|
+
? 'pl'
|
|
266
|
+
: options.type === 'phrase'
|
|
267
|
+
? 'ph'
|
|
268
|
+
: options.type === 'websearch'
|
|
269
|
+
? 'w'
|
|
270
|
+
: '';
|
|
271
|
+
const config = options.config === undefined ? '' : `(${options.config})`;
|
|
272
|
+
return this.push(column, `${prefix}fts${config}.${encodeLiteral(query)}`);
|
|
273
|
+
}
|
|
274
|
+
/** `@>`: the column contains the operand (array, range or jsonb). */
|
|
275
|
+
contains(column, value) {
|
|
276
|
+
return this.push(column, `cs.${encodeArrayOperand(value)}`);
|
|
277
|
+
}
|
|
278
|
+
/** `<@`: the column is contained by the operand. */
|
|
279
|
+
containedBy(column, value) {
|
|
280
|
+
return this.push(column, `cd.${encodeArrayOperand(value)}`);
|
|
281
|
+
}
|
|
282
|
+
/** `&&`: the column and the operand have an element (or a point) in common. */
|
|
283
|
+
overlaps(column, value) {
|
|
284
|
+
return this.push(column, `ov.${encodeArrayOperand(value)}`);
|
|
285
|
+
}
|
|
286
|
+
/** `>>`: strictly right of the range. */
|
|
287
|
+
rangeGt(column, range) {
|
|
288
|
+
return this.push(column, `sr.${range}`);
|
|
289
|
+
}
|
|
290
|
+
/** `&>`: does not extend to the left of the range. */
|
|
291
|
+
rangeGte(column, range) {
|
|
292
|
+
return this.push(column, `nxl.${range}`);
|
|
293
|
+
}
|
|
294
|
+
/** `<<`: strictly left of the range. */
|
|
295
|
+
rangeLt(column, range) {
|
|
296
|
+
return this.push(column, `sl.${range}`);
|
|
297
|
+
}
|
|
298
|
+
/** `&<`: does not extend to the right of the range. */
|
|
299
|
+
rangeLte(column, range) {
|
|
300
|
+
return this.push(column, `nxr.${range}`);
|
|
301
|
+
}
|
|
302
|
+
/** `-|-`: adjacent to the range. */
|
|
303
|
+
rangeAdjacent(column, range) {
|
|
304
|
+
return this.push(column, `adj.${range}`);
|
|
305
|
+
}
|
|
306
|
+
push(key, value) {
|
|
307
|
+
this.filters.append(key, value);
|
|
95
308
|
return this;
|
|
96
309
|
}
|
|
97
310
|
// --- modifiers ---------------------------------------------------------
|
|
98
311
|
order(column, options = {}) {
|
|
99
|
-
|
|
312
|
+
const direction = options.ascending === false ? 'desc' : 'asc';
|
|
313
|
+
const nulls = options.nullsFirst === undefined ? '' : options.nullsFirst ? '.nullsfirst' : '.nullslast';
|
|
314
|
+
const prefix = referenced(options);
|
|
315
|
+
const parts = this.orderParts.get(prefix) ?? [];
|
|
316
|
+
parts.push(`${column}.${direction}${nulls}`);
|
|
317
|
+
this.orderParts.set(prefix, parts);
|
|
318
|
+
return this;
|
|
319
|
+
}
|
|
320
|
+
limit(count, options = {}) {
|
|
321
|
+
this.limits.set(referenced(options), count);
|
|
322
|
+
return this;
|
|
323
|
+
}
|
|
324
|
+
/** Inclusive range -> offset/limit. `range(0, 9)` fetches 10 rows from offset 0. */
|
|
325
|
+
range(from, to, options = {}) {
|
|
326
|
+
const prefix = referenced(options);
|
|
327
|
+
this.offsets.set(prefix, from);
|
|
328
|
+
this.limits.set(prefix, to - from + 1);
|
|
100
329
|
return this;
|
|
101
330
|
}
|
|
102
|
-
|
|
103
|
-
|
|
331
|
+
/** Cancel the in-flight request when the signal aborts. */
|
|
332
|
+
abortSignal(signal) {
|
|
333
|
+
this.signal = signal;
|
|
104
334
|
return this;
|
|
105
335
|
}
|
|
106
|
-
/**
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
336
|
+
/**
|
|
337
|
+
* Re-type the rows. Purely a compile-time cast, for cases the generated
|
|
338
|
+
* `Database` cannot express (a computed column, an embedded shape).
|
|
339
|
+
*/
|
|
340
|
+
returns() {
|
|
341
|
+
return this;
|
|
342
|
+
}
|
|
343
|
+
/** Ask for `text/csv` instead of JSON. The result resolves to a string. */
|
|
344
|
+
csv() {
|
|
345
|
+
this.accept = 'text/csv';
|
|
346
|
+
this.responseKind = 'text';
|
|
347
|
+
return this;
|
|
348
|
+
}
|
|
349
|
+
/** Ask the server for the query plan. Admin-only, and off by default. */
|
|
350
|
+
explain(options = {}) {
|
|
351
|
+
const format = options.format ?? 'text';
|
|
352
|
+
const flags = ['analyze', 'verbose', 'settings', 'buffers', 'wal']
|
|
353
|
+
.filter(flag => options[flag])
|
|
354
|
+
.join('|');
|
|
355
|
+
const forMediatype = this.accept ?? 'application/json';
|
|
356
|
+
this.accept = `application/vnd.pgrst.plan+${format}; for="${forMediatype}"; options=${flags};`;
|
|
357
|
+
this.responseKind = format === 'json' ? 'text-json' : 'text';
|
|
110
358
|
return this;
|
|
111
359
|
}
|
|
112
360
|
single() {
|
|
@@ -123,22 +371,61 @@ export class PostgrestQueryBuilder {
|
|
|
123
371
|
const params = new URLSearchParams();
|
|
124
372
|
if (this.columns && this.columns !== '*')
|
|
125
373
|
params.set('select', this.columns);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
374
|
+
for (const [key, value] of this.extras)
|
|
375
|
+
params.append(key, value);
|
|
376
|
+
// `append`, never `set`: two filters on one column are two conditions.
|
|
377
|
+
this.filters.forEach((value, key) => params.append(key, value));
|
|
378
|
+
for (const [prefix, parts] of this.orderParts) {
|
|
379
|
+
if (parts.length)
|
|
380
|
+
params.append(scopedKey(prefix, 'order'), parts.join(','));
|
|
381
|
+
}
|
|
382
|
+
for (const [prefix, value] of this.limits) {
|
|
383
|
+
params.append(scopedKey(prefix, 'limit'), String(value));
|
|
384
|
+
}
|
|
385
|
+
for (const [prefix, value] of this.offsets) {
|
|
386
|
+
params.append(scopedKey(prefix, 'offset'), String(value));
|
|
387
|
+
}
|
|
133
388
|
const query = params.toString();
|
|
134
389
|
return `${contractPath.rest(this.model)}${query ? `?${query}` : ''}`;
|
|
135
390
|
}
|
|
391
|
+
/** The headers this builder sends. Exposed for tests alongside `toPath()`. */
|
|
392
|
+
toHeaders() {
|
|
393
|
+
const headers = {};
|
|
394
|
+
const prefer = [...this.prefer];
|
|
395
|
+
if (this.countOption)
|
|
396
|
+
prefer.push(`count=${this.countOption}`);
|
|
397
|
+
if (prefer.length)
|
|
398
|
+
headers['Prefer'] = prefer.join(',');
|
|
399
|
+
if (this.accept)
|
|
400
|
+
headers['Accept'] = this.accept;
|
|
401
|
+
return headers;
|
|
402
|
+
}
|
|
136
403
|
async execute() {
|
|
404
|
+
const path = this.toPath();
|
|
405
|
+
const headers = this.toHeaders();
|
|
137
406
|
try {
|
|
138
|
-
|
|
407
|
+
if (this.responseKind !== 'json') {
|
|
408
|
+
const res = await this.http.requestRaw(path, {
|
|
409
|
+
method: this.method,
|
|
410
|
+
body: this.body,
|
|
411
|
+
headers,
|
|
412
|
+
signal: this.signal,
|
|
413
|
+
});
|
|
414
|
+
const text = await res.text();
|
|
415
|
+
const data = this.responseKind === 'text-json' ? safeJson(text) : text;
|
|
416
|
+
return { data, error: null, count: parseContentRange(res.headers.get('content-range')) };
|
|
417
|
+
}
|
|
418
|
+
const result = await this.http.requestWithHeaders(path, {
|
|
139
419
|
method: this.method,
|
|
140
420
|
body: this.body,
|
|
421
|
+
headers,
|
|
422
|
+
signal: this.signal,
|
|
141
423
|
});
|
|
424
|
+
const count = parseContentRange(result.headers.get('content-range'));
|
|
425
|
+
// A HEAD request has no body by definition: the count is the whole answer.
|
|
426
|
+
if (this.headOnly)
|
|
427
|
+
return { data: null, error: null, count };
|
|
428
|
+
const rows = result.data;
|
|
142
429
|
const list = Array.isArray(rows) ? rows : rows == null ? [] : [rows];
|
|
143
430
|
if (this.rowMode === 'single') {
|
|
144
431
|
if (list.length !== 1) {
|
|
@@ -146,21 +433,29 @@ export class PostgrestQueryBuilder {
|
|
|
146
433
|
message: 'JSON object requested, multiple (or no) rows returned',
|
|
147
434
|
code: 'PGRST116',
|
|
148
435
|
};
|
|
149
|
-
return { data: null, error };
|
|
436
|
+
return { data: null, error, count };
|
|
150
437
|
}
|
|
151
|
-
return { data: list[0], error: null };
|
|
438
|
+
return { data: list[0], error: null, count };
|
|
152
439
|
}
|
|
153
440
|
if (this.rowMode === 'maybeSingle') {
|
|
154
|
-
return { data: list.length ? list[0] : null, error: null };
|
|
441
|
+
return { data: list.length ? list[0] : null, error: null, count };
|
|
155
442
|
}
|
|
156
|
-
return { data: list, error: null };
|
|
443
|
+
return { data: list, error: null, count };
|
|
157
444
|
}
|
|
158
445
|
catch (err) {
|
|
159
|
-
return { data: null, error: toError(err) };
|
|
446
|
+
return { data: null, error: toError(err), count: null };
|
|
160
447
|
}
|
|
161
448
|
}
|
|
162
449
|
then(onfulfilled, onrejected) {
|
|
163
450
|
return this.execute().then(onfulfilled, onrejected);
|
|
164
451
|
}
|
|
165
452
|
}
|
|
453
|
+
function safeJson(text) {
|
|
454
|
+
try {
|
|
455
|
+
return JSON.parse(text);
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
return text;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
166
461
|
//# sourceMappingURL=postgrest.js.map
|
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;AAKrD,SAAS,WAAW,CAAC,KAAgB;IACnC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CAAC,MAA4B;IAC9C,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD,CAAC;AAID;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAYhC,YAA6B,IAAgB,EAAmB,KAAa;QAAhD,SAAI,GAAJ,IAAI,CAAY;QAAmB,UAAK,GAAL,KAAK,CAAQ;QATrE,WAAM,GAAwC,KAAK,CAAC;QACpD,YAAO,GAAG,GAAG,CAAC;QACL,YAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,eAAU,GAAa,EAAE,CAAC;QAInC,YAAO,GAAY,MAAM,CAAC;IAE8C,CAAC;IAEjF,0EAA0E;IAE1E,MAAM,CAAC,OAAO,GAAG,GAAG;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAC1E,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAA0C;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAA0C;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAoB;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAE1E,EAAE,CAAC,MAAc,EAAE,KAAgB;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,GAAG,CAAC,MAAc,EAAE,KAAgB;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,KAAgB;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,GAAG,CAAC,MAAc,EAAE,KAAgB;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,KAAgB;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,GAAG,CAAC,MAAc,EAAE,KAAgB;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAc,EAAE,OAAe;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,MAAc,EAAE,OAAe;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,MAA4B;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,EAAE,CAAC,MAAc,EAAE,KAAqB;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAE1E,KAAK,CAAC,MAAc,EAAE,UAAmC,EAAE;QACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,IAAY,EAAE,EAAU;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,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,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACzF,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;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAQ,IAAI,CAAC,MAAM,EAAE,EAAE;gBACzD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YACH,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,CAAC;gBAC/B,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACxC,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,CAAC;YAC7D,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,CACF,WAA6F,EAC7F,UAA2E;QAE3E,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAoB,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"postgrest.js","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -8,32 +8,38 @@ export interface UploadOptions {
|
|
|
8
8
|
upsert?: boolean;
|
|
9
9
|
}
|
|
10
10
|
export interface UploadResult {
|
|
11
|
-
/**
|
|
11
|
+
/** The object key, exactly as passed to `upload`. */
|
|
12
12
|
path: string;
|
|
13
|
-
/** The
|
|
13
|
+
/** The server-issued file id. Still accepted anywhere a path is. */
|
|
14
14
|
id: string;
|
|
15
|
-
/** `bucket/
|
|
15
|
+
/** `bucket/key`. */
|
|
16
16
|
fullPath: string;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
export interface ListOptions {
|
|
19
|
+
limit?: number;
|
|
20
|
+
offset?: number;
|
|
21
|
+
search?: string;
|
|
22
|
+
sortBy?: {
|
|
23
|
+
column?: 'name' | 'created_at' | 'updated_at';
|
|
24
|
+
order?: 'asc' | 'desc';
|
|
25
|
+
};
|
|
26
|
+
}
|
|
24
27
|
export declare class StorageBucket {
|
|
25
28
|
private readonly http;
|
|
26
29
|
private readonly baseUrl;
|
|
27
30
|
private readonly bucket;
|
|
28
31
|
constructor(http: HttpClient, baseUrl: string, bucket: string);
|
|
32
|
+
/**
|
|
33
|
+
* Route for one object. A bare uuid is treated as a file id (the pre-path
|
|
34
|
+
* addressing form, which existing callers have stored); anything else is a
|
|
35
|
+
* key inside this bucket.
|
|
36
|
+
*/
|
|
37
|
+
private objectPath;
|
|
29
38
|
upload(path: string, file: UploadInput, options?: UploadOptions): Promise<MotherbaseResponse<UploadResult>>;
|
|
30
39
|
download(path: string): Promise<MotherbaseResponse<Blob>>;
|
|
31
40
|
remove(paths: string[]): Promise<MotherbaseResponse<StorageRemoveResponse[]>>;
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
* Returns an error rather than throwing, for drop-in compatibility.
|
|
35
|
-
*/
|
|
36
|
-
list(_prefix?: string): Promise<MotherbaseResponse<FileObject[]>>;
|
|
41
|
+
/** Objects under a prefix, in the Supabase response shape. */
|
|
42
|
+
list(prefix?: string, options?: ListOptions): Promise<MotherbaseResponse<FileObject[]>>;
|
|
37
43
|
/** Synchronous public URL (Supabase parity). Serves through the public bucket endpoint. */
|
|
38
44
|
getPublicUrl(path: string): {
|
|
39
45
|
data: {
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EAErB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EAErB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;CACpF;AAaD,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAGjC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQZ,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IA0BtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IASzD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAqBnF,8DAA8D;IACxD,IAAI,CAAC,MAAM,SAAK,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC;IAoB7F,2FAA2F;IAC3F,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;IAS3D,uDAAuD;IACjD,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAQtD;AAED,yEAAyE;AACzE,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAc,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAA1C,IAAI,EAAE,UAAU,EAAmB,OAAO,EAAE,MAAM;IAE/E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;CAGpC"}
|