@butterbase/sdk 1.1.1 → 1.2.1

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.
Files changed (95) hide show
  1. package/dist/admin/admin-client.d.ts +23 -0
  2. package/dist/admin/admin-client.d.ts.map +1 -0
  3. package/dist/admin/admin-client.js +32 -0
  4. package/dist/admin/admin-client.js.map +1 -0
  5. package/dist/admin/api-keys-client.d.ts +11 -0
  6. package/dist/admin/api-keys-client.d.ts.map +1 -0
  7. package/dist/admin/api-keys-client.js +34 -0
  8. package/dist/admin/api-keys-client.js.map +1 -0
  9. package/dist/admin/audit-logs-client.d.ts +9 -0
  10. package/dist/admin/audit-logs-client.d.ts.map +1 -0
  11. package/dist/admin/audit-logs-client.js +27 -0
  12. package/dist/admin/audit-logs-client.js.map +1 -0
  13. package/dist/admin/config-client.d.ts +11 -0
  14. package/dist/admin/config-client.d.ts.map +1 -0
  15. package/dist/admin/config-client.js +34 -0
  16. package/dist/admin/config-client.js.map +1 -0
  17. package/dist/admin/frontend-client.d.ts +14 -0
  18. package/dist/admin/frontend-client.d.ts.map +1 -0
  19. package/dist/admin/frontend-client.js +61 -0
  20. package/dist/admin/frontend-client.js.map +1 -0
  21. package/dist/admin/functions-client.d.ts +14 -0
  22. package/dist/admin/functions-client.d.ts.map +1 -0
  23. package/dist/admin/functions-client.js +68 -0
  24. package/dist/admin/functions-client.js.map +1 -0
  25. package/dist/admin/oauth-client.d.ts +13 -0
  26. package/dist/admin/oauth-client.d.ts.map +1 -0
  27. package/dist/admin/oauth-client.js +52 -0
  28. package/dist/admin/oauth-client.js.map +1 -0
  29. package/dist/admin/realtime-client.d.ts +13 -0
  30. package/dist/admin/realtime-client.d.ts.map +1 -0
  31. package/dist/admin/realtime-client.js +34 -0
  32. package/dist/admin/realtime-client.js.map +1 -0
  33. package/dist/admin/rls-client.d.ts +13 -0
  34. package/dist/admin/rls-client.d.ts.map +1 -0
  35. package/dist/admin/rls-client.js +55 -0
  36. package/dist/admin/rls-client.js.map +1 -0
  37. package/dist/admin/schema-client.d.ts +15 -0
  38. package/dist/admin/schema-client.d.ts.map +1 -0
  39. package/dist/admin/schema-client.js +42 -0
  40. package/dist/admin/schema-client.js.map +1 -0
  41. package/dist/admin/types.d.ts +171 -0
  42. package/dist/admin/types.d.ts.map +1 -0
  43. package/dist/admin/types.js +3 -0
  44. package/dist/admin/types.js.map +1 -0
  45. package/dist/ai/ai-client.d.ts +32 -0
  46. package/dist/ai/ai-client.d.ts.map +1 -0
  47. package/dist/ai/ai-client.js +126 -0
  48. package/dist/ai/ai-client.js.map +1 -0
  49. package/dist/ai/types.d.ts +47 -0
  50. package/dist/ai/types.d.ts.map +1 -0
  51. package/dist/ai/types.js +2 -0
  52. package/dist/ai/types.js.map +1 -0
  53. package/dist/auth/auth-client.d.ts +10 -1
  54. package/dist/auth/auth-client.d.ts.map +1 -1
  55. package/dist/auth/auth-client.js +59 -0
  56. package/dist/auth/auth-client.js.map +1 -1
  57. package/dist/billing/billing-client.d.ts +28 -0
  58. package/dist/billing/billing-client.d.ts.map +1 -0
  59. package/dist/billing/billing-client.js +135 -0
  60. package/dist/billing/billing-client.js.map +1 -0
  61. package/dist/billing/types.d.ts +93 -0
  62. package/dist/billing/types.d.ts.map +1 -0
  63. package/dist/billing/types.js +2 -0
  64. package/dist/billing/types.js.map +1 -0
  65. package/dist/errors/index.d.ts +26 -0
  66. package/dist/errors/index.d.ts.map +1 -0
  67. package/dist/errors/index.js +64 -0
  68. package/dist/errors/index.js.map +1 -0
  69. package/dist/index.d.ts +16 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +17 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/lib/butterbase-client.d.ts +18 -0
  74. package/dist/lib/butterbase-client.d.ts.map +1 -1
  75. package/dist/lib/butterbase-client.js +82 -10
  76. package/dist/lib/butterbase-client.js.map +1 -1
  77. package/dist/lib/mutation-builders.d.ts +5 -0
  78. package/dist/lib/mutation-builders.d.ts.map +1 -1
  79. package/dist/lib/mutation-builders.js +14 -1
  80. package/dist/lib/mutation-builders.js.map +1 -1
  81. package/dist/lib/query-builder.d.ts +18 -1
  82. package/dist/lib/query-builder.d.ts.map +1 -1
  83. package/dist/lib/query-builder.js +52 -2
  84. package/dist/lib/query-builder.js.map +1 -1
  85. package/dist/realtime/realtime-client.d.ts +44 -0
  86. package/dist/realtime/realtime-client.d.ts.map +1 -0
  87. package/dist/realtime/realtime-client.js +327 -0
  88. package/dist/realtime/realtime-client.js.map +1 -0
  89. package/dist/realtime/types.d.ts +26 -0
  90. package/dist/realtime/types.d.ts.map +1 -0
  91. package/dist/realtime/types.js +2 -0
  92. package/dist/realtime/types.js.map +1 -0
  93. package/dist/types/index.d.ts +9 -0
  94. package/dist/types/index.d.ts.map +1 -1
  95. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"butterbase-client.js","sourceRoot":"","sources":["../../src/lib/butterbase-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"butterbase-client.js","sourceRoot":"","sources":["../../src/lib/butterbase-client.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,12 @@ export declare class InsertBuilder<T = any> {
7
7
  private table;
8
8
  private client;
9
9
  private values;
10
+ private _returning;
10
11
  constructor(table: string, client: ButterbaseClient, values: Partial<T> | Partial<T>[]);
12
+ /**
13
+ * Request that the inserted row(s) be returned in the response.
14
+ */
15
+ select(columns?: string): this;
11
16
  execute(): Promise<ButterbaseResponse<T | T[]>>;
12
17
  then<TResult1 = ButterbaseResponse<T | T[]>, TResult2 = never>(onfulfilled?: ((value: ButterbaseResponse<T | T[]>) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
13
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-builders.d.ts","sourceRoot":"","sources":["../../src/lib/mutation-builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation-builders.d.ts","sourceRoot":"","sources":["../../src/lib/mutation-builders.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,27 @@ export class InsertBuilder {
5
5
  table;
6
6
  client;
7
7
  values;
8
+ _returning = null;
8
9
  constructor(table, client, values) {
9
10
  this.table = table;
10
11
  this.client = client;
11
12
  this.values = values;
12
13
  }
14
+ /**
15
+ * Request that the inserted row(s) be returned in the response.
16
+ */
17
+ select(columns = '*') {
18
+ this._returning = columns;
19
+ return this;
20
+ }
13
21
  async execute() {
14
22
  try {
15
- const path = `/v1/${this.client.appId}/${this.table}`;
23
+ const params = new URLSearchParams();
24
+ if (this._returning) {
25
+ params.set('select', this._returning);
26
+ }
27
+ const queryString = params.toString();
28
+ const path = `/v1/${this.client.appId}/${this.table}${queryString ? `?${queryString}` : ''}`;
16
29
  const data = await this.client.request('POST', path, this.values);
17
30
  return { data, error: null };
18
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-builders.js","sourceRoot":"","sources":["../../src/lib/mutation-builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation-builders.js","sourceRoot":"","sources":["../../src/lib/mutation-builders.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class QueryBuilder<T = any> {
9
9
  private limitValue?;
10
10
  private offsetValue?;
11
11
  private client;
12
+ private _modifier;
12
13
  constructor(table: string, client: ButterbaseClient);
13
14
  /**
14
15
  * Select specific columns
@@ -66,10 +67,26 @@ export declare class QueryBuilder<T = any> {
66
67
  * Skip number of results
67
68
  */
68
69
  offset(count: number): this;
70
+ /**
71
+ * Return a single row. Errors if 0 or 2+ rows match.
72
+ */
73
+ single(): this;
74
+ /**
75
+ * Return a single row or null. No error if 0 rows match.
76
+ */
77
+ maybeSingle(): this;
78
+ /**
79
+ * Pagination by range (inclusive). Sugar for .limit(to - from + 1).offset(from).
80
+ */
81
+ range(from: number, to: number): this;
82
+ /**
83
+ * Generic filter method. Escape hatch for any operator the server supports.
84
+ */
85
+ filter(column: string, operator: string, value: any): this;
69
86
  /**
70
87
  * Execute the query
71
88
  */
72
- execute(): Promise<ButterbaseResponse<T[]>>;
89
+ execute(): Promise<ButterbaseResponse<any>>;
73
90
  /**
74
91
  * Make the query builder thenable for await syntax
75
92
  */
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/lib/query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/lib/query-builder.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export class QueryBuilder {
7
7
  limitValue;
8
8
  offsetValue;
9
9
  client;
10
+ _modifier = null;
10
11
  constructor(table, client) {
11
12
  this.table = table;
12
13
  this.client = client;
@@ -112,6 +113,35 @@ export class QueryBuilder {
112
113
  this.offsetValue = count;
113
114
  return this;
114
115
  }
116
+ /**
117
+ * Return a single row. Errors if 0 or 2+ rows match.
118
+ */
119
+ single() {
120
+ this._modifier = 'single';
121
+ return this;
122
+ }
123
+ /**
124
+ * Return a single row or null. No error if 0 rows match.
125
+ */
126
+ maybeSingle() {
127
+ this._modifier = 'maybeSingle';
128
+ return this;
129
+ }
130
+ /**
131
+ * Pagination by range (inclusive). Sugar for .limit(to - from + 1).offset(from).
132
+ */
133
+ range(from, to) {
134
+ this.limitValue = to - from + 1;
135
+ this.offsetValue = from;
136
+ return this;
137
+ }
138
+ /**
139
+ * Generic filter method. Escape hatch for any operator the server supports.
140
+ */
141
+ filter(column, operator, value) {
142
+ this.filters.push({ column, op: operator, value });
143
+ return this;
144
+ }
115
145
  /**
116
146
  * Execute the query
117
147
  */
@@ -130,8 +160,10 @@ export class QueryBuilder {
130
160
  .join(',');
131
161
  params.set('order', orderStr);
132
162
  }
133
- if (this.limitValue !== undefined) {
134
- params.set('limit', String(this.limitValue));
163
+ // For single/maybeSingle, fetch at most 2 rows to detect ambiguity
164
+ const effectiveLimit = this._modifier ? 2 : this.limitValue;
165
+ if (effectiveLimit !== undefined) {
166
+ params.set('limit', String(effectiveLimit));
135
167
  }
136
168
  if (this.offsetValue !== undefined) {
137
169
  params.set('offset', String(this.offsetValue));
@@ -139,6 +171,24 @@ export class QueryBuilder {
139
171
  const queryString = params.toString();
140
172
  const path = `/v1/${this.client.appId}/${this.table}${queryString ? `?${queryString}` : ''}`;
141
173
  const data = await this.client.request('GET', path);
174
+ if (this._modifier === 'single') {
175
+ if (!data || data.length === 0) {
176
+ return { data: null, error: new Error('Row not found: query returned 0 rows') };
177
+ }
178
+ if (data.length > 1) {
179
+ return { data: null, error: new Error('Multiple rows found: query returned more than 1 row') };
180
+ }
181
+ return { data: data[0], error: null };
182
+ }
183
+ if (this._modifier === 'maybeSingle') {
184
+ if (!data || data.length === 0) {
185
+ return { data: null, error: null };
186
+ }
187
+ if (data.length > 1) {
188
+ return { data: null, error: new Error('Multiple rows found: query returned more than 1 row') };
189
+ }
190
+ return { data: data[0], error: null };
191
+ }
142
192
  return { data, error: null };
143
193
  }
144
194
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/lib/query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/lib/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { ButterbaseClient } from '../lib/butterbase-client.js';
2
+ import type { RealtimeStatus, ChangeCallback, PresenceCallback, StatusCallback, RealtimeSubscription } from './types.js';
3
+ export declare class RealtimeClient {
4
+ private client;
5
+ private ws;
6
+ private status;
7
+ private reconnectAttempts;
8
+ private reconnectTimer;
9
+ private heartbeatTimer;
10
+ /** table → TableSubscription */
11
+ private subscriptions;
12
+ private presenceCallbacks;
13
+ private statusCallbacks;
14
+ private pendingEvents;
15
+ /** Presence metadata to re-track on reconnect */
16
+ private trackedPresence;
17
+ constructor(client: ButterbaseClient);
18
+ connect(): void;
19
+ disconnect(): void;
20
+ getStatus(): RealtimeStatus;
21
+ onStatus(callback: StatusCallback): RealtimeSubscription;
22
+ on(table: string, callbackOrFilter: ChangeCallback | Record<string, unknown>, maybeCallback?: ChangeCallback): RealtimeSubscription;
23
+ trackPresence(metadata: Record<string, unknown>): void;
24
+ updatePresence(metadata: Record<string, unknown>): void;
25
+ onPresence(callback: PresenceCallback): RealtimeSubscription;
26
+ send(event: string, payload?: unknown): Promise<unknown>;
27
+ private doConnect;
28
+ private buildWsUrl;
29
+ private scheduleReconnect;
30
+ /** Re-subscribe to tables and re-track presence after reconnect */
31
+ private replayState;
32
+ private handleMessage;
33
+ private handleChange;
34
+ private emitPresence;
35
+ private sendSubscribe;
36
+ private sendJson;
37
+ private subKey;
38
+ private setStatus;
39
+ private resetHeartbeatTimer;
40
+ private clearHeartbeatTimer;
41
+ private clearTimers;
42
+ private rejectAllPending;
43
+ }
44
+ //# sourceMappingURL=realtime-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-client.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,EACvE,MAAM,YAAY,CAAC;AAkBpB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA8C;IAEpE,gCAAgC;IAChC,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,aAAa,CAAmC;IAExD,iDAAiD;IACjD,OAAO,CAAC,eAAe,CAAwC;gBAEnD,MAAM,EAAE,gBAAgB;IAQpC,OAAO,IAAI,IAAI;IAKf,UAAU,IAAI,IAAI;IAWlB,SAAS,IAAI,cAAc;IAI3B,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,oBAAoB;IASxD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,GAAG,oBAAoB;IA4CnI,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAStD,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOvD,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,oBAAoB;IAS5D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBxD,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAiBzB,mEAAmE;IACnE,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,aAAa;IA6DrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -0,0 +1,327 @@
1
+ const MAX_RECONNECT_DELAY = 30_000;
2
+ const MAX_RECONNECT_ATTEMPTS = 10;
3
+ const HEARTBEAT_TIMEOUT = 45_000;
4
+ const EVENT_TIMEOUT = 30_000;
5
+ export class RealtimeClient {
6
+ client;
7
+ ws = null;
8
+ status = 'disconnected';
9
+ reconnectAttempts = 0;
10
+ reconnectTimer = null;
11
+ heartbeatTimer = null;
12
+ /** table → TableSubscription */
13
+ subscriptions = new Map();
14
+ presenceCallbacks = new Set();
15
+ statusCallbacks = new Set();
16
+ pendingEvents = new Map();
17
+ /** Presence metadata to re-track on reconnect */
18
+ trackedPresence = null;
19
+ constructor(client) {
20
+ this.client = client;
21
+ }
22
+ // --------------------------------------------------------------------------
23
+ // Connection lifecycle
24
+ // --------------------------------------------------------------------------
25
+ connect() {
26
+ if (this.ws && (this.status === 'connected' || this.status === 'connecting'))
27
+ return;
28
+ this.doConnect();
29
+ }
30
+ disconnect() {
31
+ this.clearTimers();
32
+ this.reconnectAttempts = MAX_RECONNECT_ATTEMPTS; // prevent auto-reconnect
33
+ if (this.ws) {
34
+ this.ws.close(1000, 'Client disconnect');
35
+ this.ws = null;
36
+ }
37
+ this.setStatus('disconnected');
38
+ this.reconnectAttempts = 0;
39
+ }
40
+ getStatus() {
41
+ return this.status;
42
+ }
43
+ onStatus(callback) {
44
+ this.statusCallbacks.add(callback);
45
+ return { unsubscribe: () => { this.statusCallbacks.delete(callback); } };
46
+ }
47
+ // --------------------------------------------------------------------------
48
+ // Table change subscriptions
49
+ // --------------------------------------------------------------------------
50
+ on(table, callbackOrFilter, maybeCallback) {
51
+ let filter = null;
52
+ let callback;
53
+ if (typeof callbackOrFilter === 'function') {
54
+ callback = callbackOrFilter;
55
+ }
56
+ else {
57
+ filter = callbackOrFilter;
58
+ callback = maybeCallback;
59
+ }
60
+ const key = this.subKey(table, filter);
61
+ let sub = this.subscriptions.get(key);
62
+ if (!sub) {
63
+ sub = { filter, callbacks: new Set() };
64
+ this.subscriptions.set(key, sub);
65
+ // Send subscribe if connected
66
+ if (this.status === 'connected') {
67
+ this.sendSubscribe(table, filter);
68
+ }
69
+ else {
70
+ this.connect();
71
+ }
72
+ }
73
+ sub.callbacks.add(callback);
74
+ return {
75
+ unsubscribe: () => {
76
+ sub.callbacks.delete(callback);
77
+ if (sub.callbacks.size === 0) {
78
+ this.subscriptions.delete(key);
79
+ if (this.status === 'connected') {
80
+ this.sendJson({ type: 'unsubscribe', table });
81
+ }
82
+ }
83
+ },
84
+ };
85
+ }
86
+ // --------------------------------------------------------------------------
87
+ // Presence
88
+ // --------------------------------------------------------------------------
89
+ trackPresence(metadata) {
90
+ this.trackedPresence = metadata;
91
+ if (this.status === 'connected') {
92
+ this.sendJson({ type: 'presence_track', metadata });
93
+ }
94
+ else {
95
+ this.connect();
96
+ }
97
+ }
98
+ updatePresence(metadata) {
99
+ this.trackedPresence = metadata;
100
+ if (this.status === 'connected') {
101
+ this.sendJson({ type: 'presence_update', metadata });
102
+ }
103
+ }
104
+ onPresence(callback) {
105
+ this.presenceCallbacks.add(callback);
106
+ return { unsubscribe: () => { this.presenceCallbacks.delete(callback); } };
107
+ }
108
+ // --------------------------------------------------------------------------
109
+ // WebSocket triggers
110
+ // --------------------------------------------------------------------------
111
+ send(event, payload) {
112
+ return new Promise((resolve, reject) => {
113
+ if (this.status !== 'connected') {
114
+ this.connect();
115
+ }
116
+ const timer = setTimeout(() => {
117
+ this.pendingEvents.delete(event);
118
+ reject(new Error(`Event "${event}" timed out after ${EVENT_TIMEOUT}ms`));
119
+ }, EVENT_TIMEOUT);
120
+ this.pendingEvents.set(event, { resolve, reject, timer });
121
+ this.sendJson({ type: 'event', event, payload });
122
+ });
123
+ }
124
+ // --------------------------------------------------------------------------
125
+ // Internal: connection
126
+ // --------------------------------------------------------------------------
127
+ doConnect() {
128
+ this.setStatus(this.reconnectAttempts > 0 ? 'reconnecting' : 'connecting');
129
+ const wsUrl = this.buildWsUrl();
130
+ this.ws = new WebSocket(wsUrl);
131
+ this.ws.onopen = () => {
132
+ this.reconnectAttempts = 0;
133
+ this.setStatus('connected');
134
+ this.resetHeartbeatTimer();
135
+ this.replayState();
136
+ };
137
+ this.ws.onmessage = (event) => {
138
+ this.handleMessage(typeof event.data === 'string' ? event.data : String(event.data));
139
+ };
140
+ this.ws.onclose = (event) => {
141
+ this.ws = null;
142
+ this.clearHeartbeatTimer();
143
+ // Don't reconnect on intentional close
144
+ if (event.code === 1000) {
145
+ this.setStatus('disconnected');
146
+ return;
147
+ }
148
+ this.scheduleReconnect();
149
+ };
150
+ this.ws.onerror = () => {
151
+ // onclose will fire after onerror — reconnect handled there
152
+ };
153
+ }
154
+ buildWsUrl() {
155
+ const apiUrl = this.client.apiUrl;
156
+ const wsBase = apiUrl.replace(/^http/, 'ws');
157
+ const token = this.client.getAccessToken() || this.client.anonKey;
158
+ const url = `${wsBase}/v1/${this.client.appId}/realtime`;
159
+ return token ? `${url}?token=${encodeURIComponent(token)}` : url;
160
+ }
161
+ scheduleReconnect() {
162
+ if (this.reconnectAttempts >= MAX_RECONNECT_ATTEMPTS) {
163
+ this.setStatus('disconnected');
164
+ this.rejectAllPending('Connection lost');
165
+ return;
166
+ }
167
+ this.setStatus('reconnecting');
168
+ const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), MAX_RECONNECT_DELAY);
169
+ this.reconnectAttempts++;
170
+ this.reconnectTimer = setTimeout(() => {
171
+ this.reconnectTimer = null;
172
+ this.doConnect();
173
+ }, delay);
174
+ }
175
+ /** Re-subscribe to tables and re-track presence after reconnect */
176
+ replayState() {
177
+ for (const [, sub] of this.subscriptions) {
178
+ // Derive table name from the first callback's subscription
179
+ // We need to iterate to find the table — stored in the key
180
+ }
181
+ // Iterate subscriptions by key to get table name
182
+ for (const [key, sub] of this.subscriptions) {
183
+ const table = key.split('\0')[0];
184
+ this.sendSubscribe(table, sub.filter);
185
+ }
186
+ if (this.trackedPresence) {
187
+ this.sendJson({ type: 'presence_track', metadata: this.trackedPresence });
188
+ }
189
+ }
190
+ // --------------------------------------------------------------------------
191
+ // Internal: message handling
192
+ // --------------------------------------------------------------------------
193
+ handleMessage(raw) {
194
+ let msg;
195
+ try {
196
+ msg = JSON.parse(raw);
197
+ }
198
+ catch {
199
+ return;
200
+ }
201
+ this.resetHeartbeatTimer();
202
+ switch (msg.type) {
203
+ case 'change':
204
+ this.handleChange(msg);
205
+ break;
206
+ case 'presence_join':
207
+ this.emitPresence({ type: 'join', client_id: msg.client_id, user_id: msg.user_id, metadata: msg.metadata });
208
+ break;
209
+ case 'presence_update':
210
+ this.emitPresence({ type: 'update', client_id: msg.client_id, metadata: msg.metadata });
211
+ break;
212
+ case 'presence_leave':
213
+ this.emitPresence({ type: 'leave', client_id: msg.client_id, user_id: msg.user_id });
214
+ break;
215
+ case 'presence_state':
216
+ this.emitPresence({ type: 'state', clients: msg.clients });
217
+ break;
218
+ case 'event_response': {
219
+ const eventName = msg.event;
220
+ const pending = this.pendingEvents.get(eventName);
221
+ if (pending) {
222
+ clearTimeout(pending.timer);
223
+ this.pendingEvents.delete(eventName);
224
+ pending.resolve(msg.data);
225
+ }
226
+ break;
227
+ }
228
+ case 'error': {
229
+ // Check if this is an event error
230
+ const errorMsg = msg.message;
231
+ if (errorMsg?.startsWith('No handler for event:')) {
232
+ const eventName = errorMsg.replace('No handler for event: ', '');
233
+ const pending = this.pendingEvents.get(eventName);
234
+ if (pending) {
235
+ clearTimeout(pending.timer);
236
+ this.pendingEvents.delete(eventName);
237
+ pending.reject(new Error(errorMsg));
238
+ }
239
+ }
240
+ break;
241
+ }
242
+ // 'connected', 'subscribed', 'unsubscribed', 'heartbeat' — no action needed
243
+ }
244
+ }
245
+ handleChange(change) {
246
+ for (const [key, sub] of this.subscriptions) {
247
+ const table = key.split('\0')[0];
248
+ if (table !== change.table)
249
+ continue;
250
+ for (const cb of sub.callbacks) {
251
+ try {
252
+ cb(change);
253
+ }
254
+ catch { /* don't let subscriber errors break the client */ }
255
+ }
256
+ }
257
+ }
258
+ emitPresence(event) {
259
+ for (const cb of this.presenceCallbacks) {
260
+ try {
261
+ cb(event);
262
+ }
263
+ catch { /* ignore */ }
264
+ }
265
+ }
266
+ // --------------------------------------------------------------------------
267
+ // Internal: helpers
268
+ // --------------------------------------------------------------------------
269
+ sendSubscribe(table, filter) {
270
+ const msg = { type: 'subscribe', table };
271
+ if (filter)
272
+ msg.filter = filter;
273
+ this.sendJson(msg);
274
+ }
275
+ sendJson(data) {
276
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
277
+ this.ws.send(JSON.stringify(data));
278
+ }
279
+ }
280
+ subKey(table, filter) {
281
+ if (!filter)
282
+ return table + '\0';
283
+ const sorted = Object.keys(filter).sort().map(k => `${k}=${filter[k]}`).join('&');
284
+ return `${table}\0${sorted}`;
285
+ }
286
+ setStatus(status) {
287
+ if (this.status === status)
288
+ return;
289
+ this.status = status;
290
+ for (const cb of this.statusCallbacks) {
291
+ try {
292
+ cb(status);
293
+ }
294
+ catch { /* ignore */ }
295
+ }
296
+ }
297
+ resetHeartbeatTimer() {
298
+ this.clearHeartbeatTimer();
299
+ this.heartbeatTimer = setTimeout(() => {
300
+ // No heartbeat received — force reconnect
301
+ if (this.ws) {
302
+ this.ws.close(4000, 'Heartbeat timeout');
303
+ }
304
+ }, HEARTBEAT_TIMEOUT);
305
+ }
306
+ clearHeartbeatTimer() {
307
+ if (this.heartbeatTimer) {
308
+ clearTimeout(this.heartbeatTimer);
309
+ this.heartbeatTimer = null;
310
+ }
311
+ }
312
+ clearTimers() {
313
+ this.clearHeartbeatTimer();
314
+ if (this.reconnectTimer) {
315
+ clearTimeout(this.reconnectTimer);
316
+ this.reconnectTimer = null;
317
+ }
318
+ }
319
+ rejectAllPending(reason) {
320
+ for (const [, pending] of this.pendingEvents) {
321
+ clearTimeout(pending.timer);
322
+ pending.reject(new Error(reason));
323
+ }
324
+ this.pendingEvents.clear();
325
+ }
326
+ }
327
+ //# sourceMappingURL=realtime-client.js.map