@motherbase/client 1.0.0 → 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/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
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"}
@@ -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,30 @@
1
+ import type { SessionStorageAdapter } from './types.js';
2
+ export interface CookieOptions {
3
+ path?: string;
4
+ maxAge?: number;
5
+ secure?: boolean;
6
+ sameSite?: 'lax' | 'strict' | 'none';
7
+ httpOnly?: boolean;
8
+ domain?: string;
9
+ }
10
+ export interface CookieAdapter {
11
+ get(name: string): string | undefined;
12
+ set(name: string, value: string, options?: CookieOptions): void;
13
+ remove(name: string, options?: CookieOptions): void;
14
+ }
15
+ /**
16
+ * Browser cookie adapter. Falls back to in-memory storage when
17
+ * `document` is not available (SSR, Node.js environments).
18
+ */
19
+ export declare function cookieStorage(options?: {
20
+ key?: string;
21
+ path?: string;
22
+ secure?: boolean;
23
+ sameSite?: 'lax' | 'strict' | 'none';
24
+ }): SessionStorageAdapter;
25
+ /**
26
+ * Server-side cookie adapter. Framework-agnostic: the caller supplies
27
+ * get/set/remove cookie functions (e.g., from Next.js `cookies()`).
28
+ */
29
+ export declare function serverCookieStorage(adapter: CookieAdapter, key?: string): SessionStorageAdapter;
30
+ //# sourceMappingURL=cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../src/cookie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGjE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAChE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACrD;AAqBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACjC,GAAG,qBAAqB,CA0B7B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EACtB,GAAG,SAAc,GAChB,qBAAqB,CAWvB"}
package/dist/cookie.js ADDED
@@ -0,0 +1,67 @@
1
+ import { memoryStorage } from './session.js';
2
+ const DEFAULT_KEY = 'motherbase.session';
3
+ function escapeRegex(s) {
4
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
5
+ }
6
+ function parseSession(raw) {
7
+ if (!raw)
8
+ return null;
9
+ try {
10
+ return JSON.parse(decodeURIComponent(raw));
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ function serializeSession(session) {
17
+ return encodeURIComponent(JSON.stringify(session));
18
+ }
19
+ /**
20
+ * Browser cookie adapter. Falls back to in-memory storage when
21
+ * `document` is not available (SSR, Node.js environments).
22
+ */
23
+ export function cookieStorage(options = {}) {
24
+ const doc = typeof document !== 'undefined' ? document : undefined;
25
+ if (!doc)
26
+ return memoryStorage();
27
+ const key = options.key ?? DEFAULT_KEY;
28
+ const path = options.path ?? '/';
29
+ const secure = options.secure ?? true;
30
+ const sameSite = options.sameSite ?? 'lax';
31
+ const pattern = new RegExp(`(?:^|; )${escapeRegex(key)}=([^;]*)`);
32
+ return {
33
+ get: () => {
34
+ const match = doc.cookie.match(pattern);
35
+ return parseSession(match?.[1]);
36
+ },
37
+ set: (session) => {
38
+ if (session) {
39
+ let cookie = `${key}=${serializeSession(session)}; path=${path}; SameSite=${sameSite}`;
40
+ if (secure)
41
+ cookie += '; Secure';
42
+ doc.cookie = cookie;
43
+ }
44
+ else {
45
+ doc.cookie = `${key}=; path=${path}; max-age=0`;
46
+ }
47
+ },
48
+ };
49
+ }
50
+ /**
51
+ * Server-side cookie adapter. Framework-agnostic: the caller supplies
52
+ * get/set/remove cookie functions (e.g., from Next.js `cookies()`).
53
+ */
54
+ export function serverCookieStorage(adapter, key = DEFAULT_KEY) {
55
+ return {
56
+ get: () => parseSession(adapter.get(key)),
57
+ set: (session) => {
58
+ if (session) {
59
+ adapter.set(key, serializeSession(session), { path: '/', sameSite: 'lax' });
60
+ }
61
+ else {
62
+ adapter.remove(key, { path: '/' });
63
+ }
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../src/cookie.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAiB7C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAY,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAK1B,EAAE;IACJ,MAAM,GAAG,GACP,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,aAAa,EAAE,CAAC;IAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,WAAW,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAElE,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,UAAU,IAAI,cAAc,QAAQ,EAAE,CAAC;gBACvF,IAAI,MAAM;oBAAE,MAAM,IAAI,UAAU,CAAC;gBACjC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,WAAW,IAAI,aAAa,CAAC;YAClD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAsB,EACtB,GAAG,GAAG,WAAW;IAEjB,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -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
- /** Error thrown for any non-successful API response. */
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
- constructor(message: string, httpStatus: number, apiStatus?: number);
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
@@ -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,wDAAwD;AACxD,qBAAa,YAAa,SAAQ,KAAK;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAMpE;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,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,CAAA;KAAE;IACpE,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;IAaxE,+EAA+E;IAC/E,OAAO,CAAC,WAAW;YASL,IAAI;YAsBJ,KAAK;IAgBnB,OAAO,CAAC,GAAG;CAGZ"}
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
- /** Error thrown for any non-successful API response. */
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.request(path, { ...options, _retry: true });
47
+ return this.send(path, { ...options, _retry: true });
30
48
  }
31
49
  }
32
- return this.parse(res);
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":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,29 +1,65 @@
1
1
  import { memoryStorage, localStorageStorage } from './session.js';
2
- import { AuthModule } from './auth.js';
3
- import { UsersModule } from './profile.js';
4
- import { StorageModule } from './storage.js';
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 { RestModule } from './rest.js';
8
- import { EdgeModule } from './edge.js';
6
+ import { RealtimeChannel } from './channel.js';
7
+ import { PostgrestQueryBuilder } from './postgrest.js';
9
8
  import type { ClientOptions } from './types.js';
10
- export declare class BackendClient {
11
- readonly auth: AuthModule;
12
- readonly users: UsersModule;
13
- readonly storage: StorageModule;
14
- readonly devices: DevicesModule;
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 rest: RestModule;
17
- readonly edge: EdgeModule;
24
+ private readonly http;
18
25
  private readonly store;
19
- constructor(apiUrl: string, options?: ClientOptions);
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
- /** Create a client for the given API base URL. */
24
- export declare function createClient(apiUrl: string, options?: ClientOptions): BackendClient;
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
- export type { ApiEnvelope, User, Tokens, Session, FileObject, FileVisibility, DevicePlatform, SessionStorageAdapter, ClientOptions, AuthEvent, AuthListener, } from './types.js';
28
- export type { OrderDirection, RestFilters, RestFilterValue, RestListOptions, RestMutationOptions, RestOperator, } from './rest.js';
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';
62
+ export type { CookieAdapter, CookieOptions } from './cookie.js';
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';
29
65
  //# sourceMappingURL=index.d.ts.map
@@ -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,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,aAAa;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IAwBvD,6EAA6E;IAC7E,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAG5B;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa,CAEvF;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAC9C,YAAY,EACV,WAAW,EACX,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,YAAY,GACb,MAAM,WAAW,CAAC"}
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,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;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,sFAAsF;IACtF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM;IAbvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;gBAG5C,GAAG,EAAE,MAAM;IAC5B,sFAAsF;IAC7E,GAAG,CAAC,EAAE,MAAM,YAAA,EACrB,OAAO,GAAE,aAAkB;IAwB7B,qDAAqD;IACrD,IAAI,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC;IAI7F,4CAA4C;IAC5C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAQtC,sCAAsC;IAChC,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,0CAA0C;IACpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,6EAA6E;IAC7E,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAG5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,gBAAgB,CAErG;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;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EACV,WAAW,EACX,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAC"}