@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/index.js CHANGED
@@ -1,42 +1,89 @@
1
1
  import { HttpClient } from './http.js';
2
2
  import { SessionStore, memoryStorage, localStorageStorage } from './session.js';
3
- import { AuthModule } from './auth.js';
4
- import { UsersModule } from './profile.js';
5
- import { StorageModule } from './storage.js';
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 { RestModule } from './rest.js';
9
- import { EdgeModule } from './edge.js';
10
- export class BackendClient {
11
- constructor(apiUrl, options = {}) {
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.refresh for the 401 path,
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
- const http = new HttpClient(apiUrl, this.store, { autoRefresh, fetch: fetchImpl }, () => auth.refresh());
22
- auth = new AuthModule(http, this.store);
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.users = new UsersModule(http);
25
- this.storage = new StorageModule(http);
26
- this.devices = new DevicesModule(http);
27
- this.realtime = new RealtimeModule(apiUrl, this.store);
28
- this.rest = new RestModule(http);
29
- this.edge = new EdgeModule(http);
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
- /** Create a client for the given API base URL. */
37
- export function createClient(apiUrl, options = {}) {
38
- return new BackendClient(apiUrl, options);
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 };
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';
42
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,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;AAGvC,MAAM,OAAO,aAAa;IAWxB,YAAY,MAAc,EAAE,UAAyB,EAAE;QACrD,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;QAEhD,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC,CAAC;QAElE,4EAA4E;QAC5E,gEAAgE;QAChE,IAAI,IAAiB,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzG,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,6EAA6E;IAC7E,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,UAAyB,EAAE;IACtE,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { HttpClient } from './http.js';
2
+ import type { MotherbaseResponse } from './types.js';
3
+ type Primitive = string | number | boolean | null;
4
+ /**
5
+ * PostgREST-style, chainable, thenable query builder mapping onto the backend's
6
+ * `/rest/v1/:model` query-param dialect. Awaiting it resolves to `{ data, error }`
7
+ * and never rejects for expected API errors (only for programmer misuse).
8
+ */
9
+ export declare class PostgrestQueryBuilder<Row extends object = Record<string, unknown>> implements PromiseLike<MotherbaseResponse<Row[]>> {
10
+ private readonly http;
11
+ private readonly model;
12
+ private method;
13
+ private columns;
14
+ private readonly filters;
15
+ private readonly orderParts;
16
+ private limitValue?;
17
+ private offsetValue?;
18
+ private body?;
19
+ private rowMode;
20
+ constructor(http: HttpClient, model: string);
21
+ select(columns?: string): this;
22
+ insert(values: Partial<Row> | Array<Partial<Row>>): this;
23
+ /**
24
+ * Emulated upsert. The backend has no native upsert, so this issues an insert.
25
+ * Documented as best-effort in the README compatibility matrix.
26
+ */
27
+ upsert(values: Partial<Row> | Array<Partial<Row>>): this;
28
+ update(values: Partial<Row>): this;
29
+ delete(): this;
30
+ eq(column: string, value: Primitive): this;
31
+ neq(column: string, value: Primitive): this;
32
+ gt(column: string, value: Primitive): this;
33
+ gte(column: string, value: Primitive): this;
34
+ lt(column: string, value: Primitive): this;
35
+ lte(column: string, value: Primitive): this;
36
+ like(column: string, pattern: string): this;
37
+ ilike(column: string, pattern: string): this;
38
+ in(column: string, values: readonly Primitive[]): this;
39
+ is(column: string, value: null | boolean): this;
40
+ order(column: string, options?: {
41
+ ascending?: boolean;
42
+ }): this;
43
+ limit(count: number): this;
44
+ /** Inclusive range → offset/limit. `range(0, 9)` fetches 10 rows from offset 0. */
45
+ range(from: number, to: number): this;
46
+ single(): PostgrestSingleBuilder<Row>;
47
+ maybeSingle(): PostgrestSingleBuilder<Row>;
48
+ /** The URL path (with query string) this builder targets. Exposed for tests. */
49
+ toPath(): string;
50
+ private execute;
51
+ then<TResult1 = MotherbaseResponse<Row[]>, TResult2 = never>(onfulfilled?: ((value: MotherbaseResponse<Row[]>) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
52
+ }
53
+ /** Same builder, typed to resolve a single row (from `.single()` / `.maybeSingle()`). */
54
+ export interface PostgrestSingleBuilder<Row extends object> extends Omit<PostgrestQueryBuilder<Row>, 'then' | 'single' | 'maybeSingle'>, PromiseLike<MotherbaseResponse<Row>> {
55
+ then<TResult1 = MotherbaseResponse<Row>, TResult2 = never>(onfulfilled?: ((value: MotherbaseResponse<Row>) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=postgrest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgrest.d.ts","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ import { toError } from './http.js';
2
+ function encodeValue(value) {
3
+ if (value === null)
4
+ return 'null';
5
+ return String(value);
6
+ }
7
+ function encodeList(values) {
8
+ return `(${values.map(encodeValue).join(',')})`;
9
+ }
10
+ /**
11
+ * PostgREST-style, chainable, thenable query builder mapping onto the backend's
12
+ * `/rest/v1/:model` query-param dialect. Awaiting it resolves to `{ data, error }`
13
+ * and never rejects for expected API errors (only for programmer misuse).
14
+ */
15
+ export class PostgrestQueryBuilder {
16
+ constructor(http, model) {
17
+ this.http = http;
18
+ this.model = model;
19
+ this.method = 'GET';
20
+ this.columns = '*';
21
+ this.filters = new URLSearchParams();
22
+ this.orderParts = [];
23
+ this.rowMode = 'many';
24
+ }
25
+ // --- verbs -------------------------------------------------------------
26
+ select(columns = '*') {
27
+ if (this.method === 'GET' && this.body === undefined)
28
+ this.method = 'GET';
29
+ this.columns = columns;
30
+ return this;
31
+ }
32
+ insert(values) {
33
+ this.method = 'POST';
34
+ this.body = values;
35
+ return this;
36
+ }
37
+ /**
38
+ * Emulated upsert. The backend has no native upsert, so this issues an insert.
39
+ * Documented as best-effort in the README compatibility matrix.
40
+ */
41
+ upsert(values) {
42
+ this.method = 'POST';
43
+ this.body = values;
44
+ return this;
45
+ }
46
+ update(values) {
47
+ this.method = 'PATCH';
48
+ this.body = values;
49
+ return this;
50
+ }
51
+ delete() {
52
+ this.method = 'DELETE';
53
+ return this;
54
+ }
55
+ // --- filters -----------------------------------------------------------
56
+ eq(column, value) {
57
+ this.filters.set(column, `eq.${encodeValue(value)}`);
58
+ return this;
59
+ }
60
+ neq(column, value) {
61
+ this.filters.set(column, `neq.${encodeValue(value)}`);
62
+ return this;
63
+ }
64
+ gt(column, value) {
65
+ this.filters.set(column, `gt.${encodeValue(value)}`);
66
+ return this;
67
+ }
68
+ gte(column, value) {
69
+ this.filters.set(column, `gte.${encodeValue(value)}`);
70
+ return this;
71
+ }
72
+ lt(column, value) {
73
+ this.filters.set(column, `lt.${encodeValue(value)}`);
74
+ return this;
75
+ }
76
+ lte(column, value) {
77
+ this.filters.set(column, `lte.${encodeValue(value)}`);
78
+ return this;
79
+ }
80
+ like(column, pattern) {
81
+ this.filters.set(column, `like.${pattern}`);
82
+ return this;
83
+ }
84
+ ilike(column, pattern) {
85
+ this.filters.set(column, `ilike.${pattern}`);
86
+ return this;
87
+ }
88
+ in(column, values) {
89
+ this.filters.set(column, `in.${encodeList(values)}`);
90
+ return this;
91
+ }
92
+ is(column, value) {
93
+ this.filters.set(column, `is.${value === null ? 'null' : String(value)}`);
94
+ return this;
95
+ }
96
+ // --- modifiers ---------------------------------------------------------
97
+ order(column, options = {}) {
98
+ this.orderParts.push(`${column}.${options.ascending === false ? 'desc' : 'asc'}`);
99
+ return this;
100
+ }
101
+ limit(count) {
102
+ this.limitValue = count;
103
+ return this;
104
+ }
105
+ /** Inclusive range → offset/limit. `range(0, 9)` fetches 10 rows from offset 0. */
106
+ range(from, to) {
107
+ this.offsetValue = from;
108
+ this.limitValue = to - from + 1;
109
+ return this;
110
+ }
111
+ single() {
112
+ this.rowMode = 'single';
113
+ return this;
114
+ }
115
+ maybeSingle() {
116
+ this.rowMode = 'maybeSingle';
117
+ return this;
118
+ }
119
+ // --- execution ---------------------------------------------------------
120
+ /** The URL path (with query string) this builder targets. Exposed for tests. */
121
+ toPath() {
122
+ const params = new URLSearchParams();
123
+ if (this.columns && this.columns !== '*')
124
+ params.set('select', this.columns);
125
+ this.filters.forEach((value, key) => params.set(key, value));
126
+ if (this.orderParts.length)
127
+ params.set('order', this.orderParts.join(','));
128
+ if (typeof this.limitValue === 'number')
129
+ params.set('limit', String(this.limitValue));
130
+ if (typeof this.offsetValue === 'number')
131
+ params.set('offset', String(this.offsetValue));
132
+ const query = params.toString();
133
+ return `/rest/v1/${encodeURIComponent(this.model)}${query ? `?${query}` : ''}`;
134
+ }
135
+ async execute() {
136
+ try {
137
+ const rows = await this.http.request(this.toPath(), {
138
+ method: this.method,
139
+ body: this.body,
140
+ });
141
+ const list = Array.isArray(rows) ? rows : rows == null ? [] : [rows];
142
+ if (this.rowMode === 'single') {
143
+ if (list.length !== 1) {
144
+ const error = {
145
+ message: 'JSON object requested, multiple (or no) rows returned',
146
+ code: 'PGRST116',
147
+ };
148
+ return { data: null, error };
149
+ }
150
+ return { data: list[0], error: null };
151
+ }
152
+ if (this.rowMode === 'maybeSingle') {
153
+ return { data: list.length ? list[0] : null, error: null };
154
+ }
155
+ return { data: list, error: null };
156
+ }
157
+ catch (err) {
158
+ return { data: null, error: toError(err) };
159
+ }
160
+ }
161
+ then(onfulfilled, onrejected) {
162
+ return this.execute().then(onfulfilled, onrejected);
163
+ }
164
+ }
165
+ //# sourceMappingURL=postgrest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgrest.js","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,34 @@
1
1
  import type { SessionStore } from './session.js';
2
+ export type RealtimeStatus = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'polling' | 'disconnected' | 'error';
3
+ export type RealtimeStatusListener = (status: RealtimeStatus, detail?: unknown) => void;
4
+ export interface RealtimeConnectOptions {
5
+ timeoutMs?: number;
6
+ fallbackPolling?: boolean;
7
+ }
8
+ export interface RealtimeWatchOptions {
9
+ intervalMs?: number;
10
+ query?: string;
11
+ polling?: boolean;
12
+ }
13
+ /** Events received are pre-filtered by server-side REST policies for the current session. */
14
+ export type RealtimeWatchEvent<T> = {
15
+ type: 'created' | 'updated' | 'deleted';
16
+ source: 'socket';
17
+ payload: T;
18
+ } | {
19
+ type: 'snapshot';
20
+ source: 'polling';
21
+ rows: T[];
22
+ };
23
+ /** Minimal shape we rely on from socket.io-client's Socket. */
24
+ export interface SocketLike {
25
+ on(event: string, cb: (...args: unknown[]) => void): void;
26
+ off(event: string, cb?: (...args: unknown[]) => void): void;
27
+ emit(event: string, ...args: unknown[]): void;
28
+ disconnect(): void;
29
+ connected: boolean;
30
+ }
31
+ export type IoFactory = (url: string, opts: Record<string, unknown>) => SocketLike;
2
32
  /**
3
33
  * Lazy wrapper over socket.io-client. The dependency is optional: it is only
4
34
  * imported when `connect()` is called, so apps that never use realtime do not
@@ -7,12 +37,43 @@ import type { SessionStore } from './session.js';
7
37
  export declare class RealtimeModule {
8
38
  private readonly baseUrl;
9
39
  private readonly store;
40
+ private readonly fetchImpl;
41
+ /** Inject a socket factory (tests / custom transports). Falls back to socket.io-client. */
42
+ private readonly ioFactory?;
10
43
  private socket;
11
- constructor(baseUrl: string, store: SessionStore);
12
- connect(): Promise<void>;
44
+ private status;
45
+ private readonly statusListeners;
46
+ private readonly pollers;
47
+ private pollerSeq;
48
+ constructor(baseUrl: string, store: SessionStore, fetchImpl?: typeof fetch,
49
+ /** Inject a socket factory (tests / custom transports). Falls back to socket.io-client. */
50
+ ioFactory?: IoFactory | undefined);
51
+ /** True once a socket is connected. */
52
+ get connected(): boolean;
53
+ getStatus(): RealtimeStatus;
54
+ onStatusChange(listener: RealtimeStatusListener): () => void;
55
+ connect(options?: RealtimeConnectOptions): Promise<void>;
13
56
  on(event: string, cb: (...args: unknown[]) => void): void;
14
57
  off(event: string, cb?: (...args: unknown[]) => void): void;
15
58
  emit(event: string, ...args: unknown[]): void;
59
+ /**
60
+ * Subscribe to create/update/delete events for a model table.
61
+ *
62
+ * Events are filtered server-side: you will only receive events for rows
63
+ * your session is authorized to see (based on REST API SELECT policies).
64
+ * Anonymous sessions receive only public rows; authenticated sessions receive
65
+ * rows matching their access policies (e.g. owner-only rows they own).
66
+ *
67
+ * Falls back to polling the REST endpoint at subscribe time if the WebSocket
68
+ * is not yet connected (polling does not auto-start on later disconnects).
69
+ */
70
+ watchTable<T>(model: string, cb: (event: RealtimeWatchEvent<T>) => void, options?: RealtimeWatchOptions): () => void;
16
71
  disconnect(): void;
72
+ private bindSocketStatus;
73
+ private waitForConnect;
74
+ private startPolling;
75
+ private stopPolling;
76
+ private fetchRows;
77
+ private setStatus;
17
78
  }
18
79
  //# sourceMappingURL=realtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAajD;;;;GAIG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFpE,OAAO,CAAC,MAAM,CAA2B;gBAEZ,OAAO,EAAE,MAAM,EAAmB,KAAK,EAAE,YAAY;IAE5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB9B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAIzD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAI3D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI7C,UAAU,IAAI,IAAI;CAInB"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}