@motherbase/client 1.0.1 → 1.0.2
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 +155 -121
- package/dist/auth.d.ts +50 -45
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +96 -91
- package/dist/auth.js.map +1 -1
- package/dist/channel.d.ts +40 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +74 -0
- package/dist/channel.js.map +1 -0
- package/dist/functions.d.ts +13 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js +21 -0
- package/dist/functions.js.map +1 -0
- package/dist/http.d.ts +27 -2
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +58 -5
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +52 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -20
- package/dist/index.js.map +1 -1
- package/dist/postgrest.d.ts +58 -0
- package/dist/postgrest.d.ts.map +1 -0
- package/dist/postgrest.js +165 -0
- package/dist/postgrest.js.map +1 -0
- package/dist/realtime.d.ts +63 -2
- package/dist/realtime.d.ts.map +1 -1
- package/dist/realtime.js +192 -9
- package/dist/realtime.js.map +1 -1
- package/dist/storage.d.ts +48 -22
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +89 -26
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +44 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { RealtimeModule } from './realtime.js';
|
|
2
|
+
export type PostgresChangeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*';
|
|
3
|
+
export interface PostgresChangeFilter {
|
|
4
|
+
event: PostgresChangeEvent;
|
|
5
|
+
schema?: string;
|
|
6
|
+
table: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PostgresChangePayload<T = Record<string, unknown>> {
|
|
9
|
+
schema: string;
|
|
10
|
+
table: string;
|
|
11
|
+
eventType: 'INSERT' | 'UPDATE' | 'DELETE';
|
|
12
|
+
new: T | Record<string, never>;
|
|
13
|
+
old: T | Record<string, never>;
|
|
14
|
+
commit_timestamp: string;
|
|
15
|
+
}
|
|
16
|
+
export type ChannelStatus = 'SUBSCRIBED' | 'CLOSED' | 'CHANNEL_ERROR';
|
|
17
|
+
/**
|
|
18
|
+
* Supabase-compatible realtime channel. Maps `postgres_changes` subscriptions
|
|
19
|
+
* onto the backend's socket.io table watch, translating the watch event shape
|
|
20
|
+
* into Supabase's `{ eventType, new, old, table, schema }` payload.
|
|
21
|
+
*/
|
|
22
|
+
export declare class RealtimeChannel {
|
|
23
|
+
readonly topic: string;
|
|
24
|
+
private readonly realtime;
|
|
25
|
+
private readonly bindings;
|
|
26
|
+
private readonly unsubscribers;
|
|
27
|
+
private subscribed;
|
|
28
|
+
constructor(topic: string, realtime: RealtimeModule);
|
|
29
|
+
/** Register a `postgres_changes` listener. Chainable, like supabase-js. */
|
|
30
|
+
on(type: 'postgres_changes', filter: PostgresChangeFilter, callback: (payload: PostgresChangePayload) => void): this;
|
|
31
|
+
/**
|
|
32
|
+
* Connect (if needed) and start delivering events. Optionally reports status.
|
|
33
|
+
* Returns the channel for chaining, matching supabase-js.
|
|
34
|
+
*/
|
|
35
|
+
subscribe(onStatus?: (status: ChannelStatus, err?: Error) => void): this;
|
|
36
|
+
/** Tear down all watchers for this channel. */
|
|
37
|
+
unsubscribe(): Promise<'ok'>;
|
|
38
|
+
private attach;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC;AAatE;;;;GAIG;AACH,qBAAa,eAAe;IAMxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,UAAU,CAAS;gBAGhB,KAAK,EAAE,MAAM,EACL,QAAQ,EAAE,cAAc;IAG3C,2EAA2E;IAC3E,EAAE,CACA,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GACjD,IAAI;IAQP;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAcxE,+CAA+C;IACzC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,OAAO,CAAC,MAAM;CAsBf"}
|
package/dist/channel.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const WATCH_TO_EVENT = {
|
|
2
|
+
created: 'INSERT',
|
|
3
|
+
updated: 'UPDATE',
|
|
4
|
+
deleted: 'DELETE',
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Supabase-compatible realtime channel. Maps `postgres_changes` subscriptions
|
|
8
|
+
* onto the backend's socket.io table watch, translating the watch event shape
|
|
9
|
+
* into Supabase's `{ eventType, new, old, table, schema }` payload.
|
|
10
|
+
*/
|
|
11
|
+
export class RealtimeChannel {
|
|
12
|
+
constructor(topic, realtime) {
|
|
13
|
+
this.topic = topic;
|
|
14
|
+
this.realtime = realtime;
|
|
15
|
+
this.bindings = [];
|
|
16
|
+
this.unsubscribers = [];
|
|
17
|
+
this.subscribed = false;
|
|
18
|
+
}
|
|
19
|
+
/** Register a `postgres_changes` listener. Chainable, like supabase-js. */
|
|
20
|
+
on(type, filter, callback) {
|
|
21
|
+
if (type !== 'postgres_changes') {
|
|
22
|
+
throw new Error(`Unsupported channel event type "${type}". Only "postgres_changes" is supported.`);
|
|
23
|
+
}
|
|
24
|
+
this.bindings.push({ filter, callback });
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Connect (if needed) and start delivering events. Optionally reports status.
|
|
29
|
+
* Returns the channel for chaining, matching supabase-js.
|
|
30
|
+
*/
|
|
31
|
+
subscribe(onStatus) {
|
|
32
|
+
void (async () => {
|
|
33
|
+
try {
|
|
34
|
+
await this.realtime.connect({ fallbackPolling: false });
|
|
35
|
+
for (const binding of this.bindings)
|
|
36
|
+
this.attach(binding);
|
|
37
|
+
this.subscribed = true;
|
|
38
|
+
onStatus?.('SUBSCRIBED');
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
onStatus?.('CHANNEL_ERROR', err instanceof Error ? err : new Error(String(err)));
|
|
42
|
+
}
|
|
43
|
+
})();
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
/** Tear down all watchers for this channel. */
|
|
47
|
+
async unsubscribe() {
|
|
48
|
+
for (const off of this.unsubscribers.splice(0))
|
|
49
|
+
off();
|
|
50
|
+
this.subscribed = false;
|
|
51
|
+
return 'ok';
|
|
52
|
+
}
|
|
53
|
+
attach(binding) {
|
|
54
|
+
const { schema = 'public', table, event } = binding.filter;
|
|
55
|
+
const off = this.realtime.watchTable(table, (watchEvent) => {
|
|
56
|
+
if (watchEvent.source !== 'socket')
|
|
57
|
+
return; // channels are push-only
|
|
58
|
+
const eventType = WATCH_TO_EVENT[watchEvent.type];
|
|
59
|
+
if (event !== '*' && event !== eventType)
|
|
60
|
+
return;
|
|
61
|
+
const row = watchEvent.payload;
|
|
62
|
+
binding.callback({
|
|
63
|
+
schema,
|
|
64
|
+
table,
|
|
65
|
+
eventType,
|
|
66
|
+
new: eventType === 'DELETE' ? {} : row,
|
|
67
|
+
old: eventType === 'DELETE' ? row : {},
|
|
68
|
+
commit_timestamp: new Date().toISOString(),
|
|
69
|
+
});
|
|
70
|
+
}, { polling: false });
|
|
71
|
+
this.unsubscribers.push(off);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HttpClient } from './http.js';
|
|
2
|
+
import type { MotherbaseResponse } from './types.js';
|
|
3
|
+
export interface FunctionInvokeOptions<Body = unknown> {
|
|
4
|
+
/** JSON body passed to the edge function. */
|
|
5
|
+
body?: Body;
|
|
6
|
+
}
|
|
7
|
+
/** Supabase-compatible edge functions client: `client.functions.invoke(name, { body })`. */
|
|
8
|
+
export declare class FunctionsClient {
|
|
9
|
+
private readonly http;
|
|
10
|
+
constructor(http: HttpClient);
|
|
11
|
+
invoke<Result = unknown, Body = Record<string, unknown>>(name: string, options?: FunctionInvokeOptions<Body>): Promise<MotherbaseResponse<Result>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,qBAAqB,CAAC,IAAI,GAAG,OAAO;IACnD,6CAA6C;IAC7C,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,4FAA4F;AAC5F,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,CAAC,IAAI,CAAM,GACxC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAYvC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { toError } from './http.js';
|
|
2
|
+
/** Supabase-compatible edge functions client: `client.functions.invoke(name, { body })`. */
|
|
3
|
+
export class FunctionsClient {
|
|
4
|
+
constructor(http) {
|
|
5
|
+
this.http = http;
|
|
6
|
+
}
|
|
7
|
+
async invoke(name, options = {}) {
|
|
8
|
+
try {
|
|
9
|
+
const data = await this.http.request(`/api/edge/${encodeURIComponent(name)}`, {
|
|
10
|
+
method: 'POST',
|
|
11
|
+
body: options.body ?? {},
|
|
12
|
+
anonymous: true,
|
|
13
|
+
});
|
|
14
|
+
return { data, error: null };
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
return { data: null, error: toError(err) };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,4FAA4F;AAC5F,MAAM,OAAO,eAAe;IAC1B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,UAAuC,EAAE;QAEzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAS,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;gBACpF,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC/B,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;CACF"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { SessionStore } from './session.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Error thrown internally for any non-successful API response. Callers of the
|
|
4
|
+
* public SDK never see this: module boundaries catch it and return a
|
|
5
|
+
* `{ data, error }` result instead. Reserved for programmer misuse leaks only.
|
|
6
|
+
*/
|
|
3
7
|
export declare class BackendError extends Error {
|
|
4
8
|
/** HTTP status code (0 if the request never completed). */
|
|
5
9
|
readonly httpStatus: number;
|
|
6
10
|
/** The API envelope's `status` field when present. */
|
|
7
11
|
readonly apiStatus?: number;
|
|
8
|
-
|
|
12
|
+
/** Backend error code, when present. */
|
|
13
|
+
readonly code?: string;
|
|
14
|
+
constructor(message: string, httpStatus: number, apiStatus?: number, code?: string);
|
|
9
15
|
}
|
|
10
16
|
export interface RequestOptions {
|
|
11
17
|
method?: string;
|
|
@@ -15,6 +21,12 @@ export interface RequestOptions {
|
|
|
15
21
|
form?: FormData;
|
|
16
22
|
/** Skip attaching the Authorization header (used by auth endpoints). */
|
|
17
23
|
anonymous?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Parse the response body as-is instead of unwrapping the app's
|
|
26
|
+
* `{ status, data }` envelope. Better Auth's native /api/auth/* endpoints
|
|
27
|
+
* return plain JSON, so the auth client sets this.
|
|
28
|
+
*/
|
|
29
|
+
raw?: boolean;
|
|
18
30
|
/** Internal: prevents infinite refresh recursion. */
|
|
19
31
|
_retry?: boolean;
|
|
20
32
|
}
|
|
@@ -32,14 +44,27 @@ export declare class HttpClient {
|
|
|
32
44
|
constructor(baseUrl: string, store: SessionStore, opts: {
|
|
33
45
|
autoRefresh: boolean;
|
|
34
46
|
fetch: typeof fetch;
|
|
47
|
+
headers?: Record<string, string>;
|
|
35
48
|
},
|
|
36
49
|
/** Performs the refresh; returns true on success. Injected to avoid a cycle. */
|
|
37
50
|
doRefresh: () => Promise<boolean>);
|
|
38
51
|
request<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
52
|
+
/** Like `request`, but returns the raw Response (for binary downloads). */
|
|
53
|
+
requestRaw(path: string, options?: RequestOptions): Promise<Response>;
|
|
54
|
+
private sendWithRefresh;
|
|
39
55
|
/** Shared single-flight refresh: concurrent callers await the same promise. */
|
|
40
56
|
private refreshOnce;
|
|
41
57
|
private send;
|
|
42
58
|
private parse;
|
|
59
|
+
/** Parse a plain-JSON (non-envelope) response, mapping failures to BackendError. */
|
|
60
|
+
private parseRaw;
|
|
61
|
+
private errorMessage;
|
|
43
62
|
private url;
|
|
44
63
|
}
|
|
64
|
+
/** Convert a thrown BackendError (or any error) into a Supabase-shaped error object. */
|
|
65
|
+
export declare function toError(err: unknown): {
|
|
66
|
+
message: string;
|
|
67
|
+
status?: number;
|
|
68
|
+
code?: string;
|
|
69
|
+
};
|
|
45
70
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAOnF;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,cAAc,CAAiC;gBAGpC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IACtG,gFAAgF;IAC/D,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC;IAG9C,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKxE,2EAA2E;IACrE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;YASjE,eAAe;IAW7B,+EAA+E;IAC/E,OAAO,CAAC,WAAW;YASL,IAAI;YAsBJ,KAAK;IAgBnB,oFAAoF;YACtE,QAAQ;YAcR,YAAY;IAU1B,OAAO,CAAC,GAAG;CAGZ;AAED,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAMzF"}
|
package/dist/http.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown internally for any non-successful API response. Callers of the
|
|
3
|
+
* public SDK never see this: module boundaries catch it and return a
|
|
4
|
+
* `{ data, error }` result instead. Reserved for programmer misuse leaks only.
|
|
5
|
+
*/
|
|
2
6
|
export class BackendError extends Error {
|
|
3
|
-
constructor(message, httpStatus, apiStatus) {
|
|
7
|
+
constructor(message, httpStatus, apiStatus, code) {
|
|
4
8
|
super(message);
|
|
5
9
|
this.name = 'BackendError';
|
|
6
10
|
this.httpStatus = httpStatus;
|
|
7
11
|
this.apiStatus = apiStatus;
|
|
12
|
+
this.code = code;
|
|
8
13
|
}
|
|
9
14
|
}
|
|
10
15
|
/**
|
|
@@ -22,14 +27,27 @@ export class HttpClient {
|
|
|
22
27
|
this.refreshPromise = null;
|
|
23
28
|
}
|
|
24
29
|
async request(path, options = {}) {
|
|
30
|
+
const res = await this.sendWithRefresh(path, options);
|
|
31
|
+
return options.raw ? this.parseRaw(res) : this.parse(res);
|
|
32
|
+
}
|
|
33
|
+
/** Like `request`, but returns the raw Response (for binary downloads). */
|
|
34
|
+
async requestRaw(path, options = {}) {
|
|
35
|
+
const res = await this.sendWithRefresh(path, options);
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
const message = await this.errorMessage(res);
|
|
38
|
+
throw new BackendError(message, res.status);
|
|
39
|
+
}
|
|
40
|
+
return res;
|
|
41
|
+
}
|
|
42
|
+
async sendWithRefresh(path, options) {
|
|
25
43
|
const res = await this.send(path, options);
|
|
26
44
|
if (res.status === 401 && this.opts.autoRefresh && !options.anonymous && !options._retry) {
|
|
27
45
|
const refreshed = await this.refreshOnce();
|
|
28
46
|
if (refreshed) {
|
|
29
|
-
return this.
|
|
47
|
+
return this.send(path, { ...options, _retry: true });
|
|
30
48
|
}
|
|
31
49
|
}
|
|
32
|
-
return
|
|
50
|
+
return res;
|
|
33
51
|
}
|
|
34
52
|
/** Shared single-flight refresh: concurrent callers await the same promise. */
|
|
35
53
|
refreshOnce() {
|
|
@@ -41,7 +59,7 @@ export class HttpClient {
|
|
|
41
59
|
return this.refreshPromise;
|
|
42
60
|
}
|
|
43
61
|
async send(path, options) {
|
|
44
|
-
const headers = {};
|
|
62
|
+
const headers = { ...this.opts.headers };
|
|
45
63
|
const session = this.store.get();
|
|
46
64
|
if (!options.anonymous && session?.accessToken) {
|
|
47
65
|
headers['Authorization'] = `Bearer ${session.accessToken}`;
|
|
@@ -74,8 +92,43 @@ export class HttpClient {
|
|
|
74
92
|
}
|
|
75
93
|
return (envelope?.data ?? envelope);
|
|
76
94
|
}
|
|
95
|
+
/** Parse a plain-JSON (non-envelope) response, mapping failures to BackendError. */
|
|
96
|
+
async parseRaw(res) {
|
|
97
|
+
let body;
|
|
98
|
+
try {
|
|
99
|
+
body = await res.json();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
body = undefined;
|
|
103
|
+
}
|
|
104
|
+
if (!res.ok) {
|
|
105
|
+
const message = body?.message ?? `Request failed with status ${res.status}`;
|
|
106
|
+
throw new BackendError(message, res.status, undefined, body?.code);
|
|
107
|
+
}
|
|
108
|
+
return body;
|
|
109
|
+
}
|
|
110
|
+
async errorMessage(res) {
|
|
111
|
+
try {
|
|
112
|
+
const body = (await res.json());
|
|
113
|
+
if (body?.message)
|
|
114
|
+
return body.message;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// ignore
|
|
118
|
+
}
|
|
119
|
+
return `Request failed with status ${res.status}`;
|
|
120
|
+
}
|
|
77
121
|
url(path) {
|
|
78
122
|
return `${this.baseUrl.replace(/\/$/, '')}${path}`;
|
|
79
123
|
}
|
|
80
124
|
}
|
|
125
|
+
/** Convert a thrown BackendError (or any error) into a Supabase-shaped error object. */
|
|
126
|
+
export function toError(err) {
|
|
127
|
+
if (err instanceof BackendError) {
|
|
128
|
+
return { message: err.message, status: err.httpStatus || undefined, code: err.code };
|
|
129
|
+
}
|
|
130
|
+
if (err instanceof Error)
|
|
131
|
+
return { message: err.message };
|
|
132
|
+
return { message: String(err) };
|
|
133
|
+
}
|
|
81
134
|
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,65 @@
|
|
|
1
1
|
import { memoryStorage, localStorageStorage } from './session.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { DevicesModule } from './devices.js';
|
|
2
|
+
import { AuthClient } from './auth.js';
|
|
3
|
+
import { StorageClient } from './storage.js';
|
|
4
|
+
import { FunctionsClient } from './functions.js';
|
|
6
5
|
import { RealtimeModule } from './realtime.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { RealtimeChannel } from './channel.js';
|
|
7
|
+
import { PostgrestQueryBuilder } from './postgrest.js';
|
|
9
8
|
import type { ClientOptions } from './types.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Supabase-js-compatible client for a Motherbase backend.
|
|
11
|
+
*
|
|
12
|
+
* Drop-in shaped: `client.from(table).select()…`, `client.auth.signInWithPassword()`,
|
|
13
|
+
* `client.storage.from(bucket)`, `client.channel(name)`, `client.functions.invoke()`.
|
|
14
|
+
*/
|
|
15
|
+
export declare class MotherbaseClient {
|
|
16
|
+
private readonly url;
|
|
17
|
+
/** Accepted for supabase-js signature parity; sent as an `apikey` header when set. */
|
|
18
|
+
readonly key?: string | undefined;
|
|
19
|
+
readonly auth: AuthClient;
|
|
20
|
+
readonly storage: StorageClient;
|
|
21
|
+
readonly functions: FunctionsClient;
|
|
22
|
+
/** Low-level realtime transport. Prefer `channel()` for the Supabase surface. */
|
|
15
23
|
readonly realtime: RealtimeModule;
|
|
16
|
-
readonly
|
|
17
|
-
readonly edge: EdgeModule;
|
|
24
|
+
private readonly http;
|
|
18
25
|
private readonly store;
|
|
19
|
-
|
|
26
|
+
private readonly channels;
|
|
27
|
+
constructor(url: string,
|
|
28
|
+
/** Accepted for supabase-js signature parity; sent as an `apikey` header when set. */
|
|
29
|
+
key?: string | undefined, options?: ClientOptions);
|
|
30
|
+
/** Start a PostgREST-style query against a table. */
|
|
31
|
+
from<Row extends object = Record<string, unknown>>(table: string): PostgrestQueryBuilder<Row>;
|
|
32
|
+
/** Create (or reuse) a realtime channel. */
|
|
33
|
+
channel(name: string): RealtimeChannel;
|
|
34
|
+
/** Unsubscribe and drop a channel. */
|
|
35
|
+
removeChannel(channel: RealtimeChannel): Promise<'ok'>;
|
|
36
|
+
/** Unsubscribe and drop every channel. */
|
|
37
|
+
removeAllChannels(): Promise<'ok'>;
|
|
20
38
|
/** Load any persisted session before first use. Optional but recommended. */
|
|
21
39
|
hydrate(): Promise<unknown>;
|
|
22
40
|
}
|
|
23
|
-
/**
|
|
24
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Create a Supabase-compatible Motherbase client.
|
|
43
|
+
*
|
|
44
|
+
* @param url Backend API base URL.
|
|
45
|
+
* @param key Anon/publishable key (optional). Sent as an `apikey` header.
|
|
46
|
+
* @param options Session storage, fetch override, extra headers.
|
|
47
|
+
*/
|
|
48
|
+
export declare function createClient(url: string, key?: string, options?: ClientOptions): MotherbaseClient;
|
|
25
49
|
export { BackendError } from './http.js';
|
|
26
50
|
export { memoryStorage, localStorageStorage };
|
|
27
51
|
export { cookieStorage, serverCookieStorage } from './cookie.js';
|
|
52
|
+
export { PostgrestQueryBuilder } from './postgrest.js';
|
|
53
|
+
export type { PostgrestSingleBuilder } from './postgrest.js';
|
|
54
|
+
export { AuthClient } from './auth.js';
|
|
55
|
+
export type { SignUpCredentials, SignInWithPasswordCredentials, Subscription } from './auth.js';
|
|
56
|
+
export { StorageClient, StorageBucket } from './storage.js';
|
|
57
|
+
export type { UploadOptions, UploadResult } from './storage.js';
|
|
58
|
+
export { FunctionsClient } from './functions.js';
|
|
59
|
+
export type { FunctionInvokeOptions } from './functions.js';
|
|
60
|
+
export { RealtimeChannel } from './channel.js';
|
|
61
|
+
export type { PostgresChangeEvent, PostgresChangeFilter, PostgresChangePayload, ChannelStatus, } from './channel.js';
|
|
28
62
|
export type { CookieAdapter, CookieOptions } from './cookie.js';
|
|
29
|
-
export type { ApiEnvelope, User, Tokens, Session, FileObject, FileVisibility,
|
|
30
|
-
export type {
|
|
63
|
+
export type { ApiEnvelope, User, Tokens, Session, FileObject, FileVisibility, UploadInput, SessionStorageAdapter, ClientOptions, MotherbaseResponse, MotherbaseError, AuthChangeEvent, AuthChangeListener, } from './types.js';
|
|
64
|
+
export type { RealtimeConnectOptions, RealtimeStatus, RealtimeStatusListener, RealtimeWatchEvent, RealtimeWatchOptions, IoFactory, SocketLike, } from './realtime.js';
|
|
31
65
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,43 +1,89 @@
|
|
|
1
1
|
import { HttpClient } from './http.js';
|
|
2
2
|
import { SessionStore, memoryStorage, localStorageStorage } from './session.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { DevicesModule } from './devices.js';
|
|
3
|
+
import { AuthClient } from './auth.js';
|
|
4
|
+
import { StorageClient } from './storage.js';
|
|
5
|
+
import { FunctionsClient } from './functions.js';
|
|
7
6
|
import { RealtimeModule } from './realtime.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
import { RealtimeChannel } from './channel.js';
|
|
8
|
+
import { PostgrestQueryBuilder } from './postgrest.js';
|
|
9
|
+
/**
|
|
10
|
+
* Supabase-js-compatible client for a Motherbase backend.
|
|
11
|
+
*
|
|
12
|
+
* Drop-in shaped: `client.from(table).select()…`, `client.auth.signInWithPassword()`,
|
|
13
|
+
* `client.storage.from(bucket)`, `client.channel(name)`, `client.functions.invoke()`.
|
|
14
|
+
*/
|
|
15
|
+
export class MotherbaseClient {
|
|
16
|
+
constructor(url,
|
|
17
|
+
/** Accepted for supabase-js signature parity; sent as an `apikey` header when set. */
|
|
18
|
+
key, options = {}) {
|
|
19
|
+
this.url = url;
|
|
20
|
+
this.key = key;
|
|
21
|
+
this.channels = new Map();
|
|
12
22
|
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
13
23
|
if (!fetchImpl) {
|
|
14
24
|
throw new Error('No fetch implementation found. Pass `fetch` in options for this runtime.');
|
|
15
25
|
}
|
|
16
26
|
const autoRefresh = options.autoRefresh ?? true;
|
|
27
|
+
const headers = { ...options.headers };
|
|
28
|
+
if (key)
|
|
29
|
+
headers['apikey'] = key;
|
|
17
30
|
this.store = new SessionStore(options.storage ?? memoryStorage());
|
|
18
|
-
// auth needs the http client, and http needs auth.
|
|
31
|
+
// auth needs the http client, and http needs auth._refresh for the 401 path,
|
|
19
32
|
// so wire them in two steps with a late-bound refresh callback.
|
|
20
33
|
let auth;
|
|
21
|
-
|
|
22
|
-
auth = new
|
|
34
|
+
this.http = new HttpClient(url, this.store, { autoRefresh, fetch: fetchImpl, headers }, () => auth._refresh());
|
|
35
|
+
auth = new AuthClient(this.http, this.store);
|
|
23
36
|
this.auth = auth;
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
this.storage = new StorageClient(this.http, url);
|
|
38
|
+
this.functions = new FunctionsClient(this.http);
|
|
39
|
+
this.realtime = new RealtimeModule(url, this.store, fetchImpl, options.realtimeIoFactory);
|
|
40
|
+
}
|
|
41
|
+
/** Start a PostgREST-style query against a table. */
|
|
42
|
+
from(table) {
|
|
43
|
+
return new PostgrestQueryBuilder(this.http, table);
|
|
44
|
+
}
|
|
45
|
+
/** Create (or reuse) a realtime channel. */
|
|
46
|
+
channel(name) {
|
|
47
|
+
const existing = this.channels.get(name);
|
|
48
|
+
if (existing)
|
|
49
|
+
return existing;
|
|
50
|
+
const channel = new RealtimeChannel(name, this.realtime);
|
|
51
|
+
this.channels.set(name, channel);
|
|
52
|
+
return channel;
|
|
53
|
+
}
|
|
54
|
+
/** Unsubscribe and drop a channel. */
|
|
55
|
+
async removeChannel(channel) {
|
|
56
|
+
await channel.unsubscribe();
|
|
57
|
+
this.channels.delete(channel.topic);
|
|
58
|
+
return 'ok';
|
|
59
|
+
}
|
|
60
|
+
/** Unsubscribe and drop every channel. */
|
|
61
|
+
async removeAllChannels() {
|
|
62
|
+
await Promise.all(Array.from(this.channels.values()).map(c => c.unsubscribe()));
|
|
63
|
+
this.channels.clear();
|
|
64
|
+
return 'ok';
|
|
30
65
|
}
|
|
31
66
|
/** Load any persisted session before first use. Optional but recommended. */
|
|
32
67
|
hydrate() {
|
|
33
68
|
return this.store.hydrate();
|
|
34
69
|
}
|
|
35
70
|
}
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Create a Supabase-compatible Motherbase client.
|
|
73
|
+
*
|
|
74
|
+
* @param url Backend API base URL.
|
|
75
|
+
* @param key Anon/publishable key (optional). Sent as an `apikey` header.
|
|
76
|
+
* @param options Session storage, fetch override, extra headers.
|
|
77
|
+
*/
|
|
78
|
+
export function createClient(url, key, options = {}) {
|
|
79
|
+
return new MotherbaseClient(url, key, options);
|
|
39
80
|
}
|
|
40
81
|
export { BackendError } from './http.js';
|
|
41
82
|
export { memoryStorage, localStorageStorage };
|
|
42
83
|
export { cookieStorage, serverCookieStorage } from './cookie.js';
|
|
84
|
+
export { PostgrestQueryBuilder } from './postgrest.js';
|
|
85
|
+
export { AuthClient } from './auth.js';
|
|
86
|
+
export { StorageClient, StorageBucket } from './storage.js';
|
|
87
|
+
export { FunctionsClient } from './functions.js';
|
|
88
|
+
export { RealtimeChannel } from './channel.js';
|
|
43
89
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAW3B,YACmB,GAAW;IAC5B,sFAAsF;IAC7E,GAAY,EACrB,UAAyB,EAAE;QAHV,QAAG,GAAH,GAAG,CAAQ;QAEnB,QAAG,GAAH,GAAG,CAAS;QALN,aAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;QAQ7D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAChD,MAAM,OAAO,GAA2B,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,GAAG;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC,CAAC;QAElE,6EAA6E;QAC7E,gEAAgE;QAChE,IAAI,IAAiB,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/G,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5F,CAAC;IAED,qDAAqD;IACrD,IAAI,CAA+C,KAAa;QAC9D,OAAO,IAAI,qBAAqB,CAAM,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,4CAA4C;IAC5C,OAAO,CAAC,IAAY;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,aAAa,CAAC,OAAwB;QAC1C,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,iBAAiB;QACrB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6EAA6E;IAC7E,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAY,EAAE,UAAyB,EAAE;IACjF,OAAO,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|