dolphin-server-modules 2.12.1 → 2.12.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.
@@ -0,0 +1,342 @@
1
+ import { APIHandler } from './api';
2
+ import { AuthHandler } from './auth';
3
+ import { DolphinStore } from './store';
4
+ export class DolphinClient {
5
+ constructor(url = '', deviceId = '', options = {}) {
6
+ if (!url && typeof window !== 'undefined')
7
+ url = window.location.host;
8
+ let protocol = 'http:';
9
+ if (url.startsWith('https://'))
10
+ protocol = 'https:';
11
+ else if (url.startsWith('http://'))
12
+ protocol = 'http:';
13
+ else if (typeof window !== 'undefined')
14
+ protocol = window.location.protocol;
15
+ this.host = (url || 'localhost').replace(/\/$/, '').replace(/^https?:\/\//, '');
16
+ this.httpUrl = `${protocol}//${this.host}`;
17
+ this.deviceId = deviceId || 'web_' + Math.random().toString(36).substr(2, 8);
18
+ /** @type {DolphinClientOptions} */
19
+ this.options = {
20
+ timeout: 15000,
21
+ chunkSize: 65536, // 64 KB
22
+ maxReconnect: 5,
23
+ autoRefreshToken: true,
24
+ ...options,
25
+ };
26
+ /** @type {WebSocket|null} */
27
+ this.socket = null;
28
+ // Storage polyfill
29
+ this.storage = typeof localStorage !== 'undefined' ? localStorage : {
30
+ getItem: () => null,
31
+ setItem: () => { },
32
+ removeItem: () => { },
33
+ };
34
+ /** @type {string|null} */
35
+ this.accessToken = this.storage.getItem('dolphin_token');
36
+ // Sub-handlers
37
+ this.api = new APIHandler(this);
38
+ this.auth = new AuthHandler(this);
39
+ this.store = new DolphinStore(this);
40
+ /** @type {Map<string, Set<TopicCallback>>} */
41
+ this.handlers = new Map();
42
+ /** @type {Set<function(SignalMessage): void>} */
43
+ this.signalHandlers = new Set();
44
+ /** @type {Set<function(FileMetadata): void>} */
45
+ this.fileHandlers = new Set();
46
+ /** @type {Array<string>} — offline message queue */
47
+ this._offlineQueue = [];
48
+ this.reconnectAttempts = 0;
49
+ }
50
+ /** Save or clear the access token */
51
+ setToken(token) {
52
+ this.accessToken = token;
53
+ token
54
+ ? this.storage.setItem('dolphin_token', token)
55
+ : this.storage.removeItem('dolphin_token');
56
+ }
57
+ // ── WebSocket ─────────────────────────────────────────────────────────────
58
+ /** Connect to the Dolphin realtime server */
59
+ async connect() {
60
+ return new Promise((resolve, reject) => {
61
+ const protocol = this.httpUrl.startsWith('https') ? 'wss:' : 'ws:';
62
+ const wsUrl = `${protocol}//${this.host}/realtime?deviceId=${this.deviceId}`;
63
+ console.log(`[Dolphin] Connecting to ${wsUrl}...`);
64
+ this.socket = new WebSocket(wsUrl);
65
+ this.socket.onopen = () => {
66
+ console.log(`[Dolphin] Connected as "${this.deviceId}" 🐬`);
67
+ this.reconnectAttempts = 0;
68
+ this._flushOfflineQueue();
69
+ resolve();
70
+ };
71
+ this.socket.onmessage = (ev) => this._handleMessage(ev.data);
72
+ this.socket.onclose = () => {
73
+ console.warn('[Dolphin] Connection closed');
74
+ this._maybeReconnect();
75
+ };
76
+ this.socket.onerror = (err) => {
77
+ console.error('[Dolphin] WebSocket error:', err);
78
+ reject(err);
79
+ };
80
+ });
81
+ }
82
+ /** Disconnect cleanly */
83
+ disconnect() {
84
+ if (this.socket) {
85
+ this.socket.onclose = null; // prevent auto-reconnect
86
+ this.socket.close();
87
+ this.socket = null;
88
+ }
89
+ }
90
+ /** @private */
91
+ _handleMessage(data) {
92
+ try {
93
+ const msg = JSON.parse(data);
94
+ // Signaling
95
+ if (msg.type && msg.from && (msg.to === this.deviceId || msg.to === 'all')) {
96
+ if (msg.msgId && msg.type !== 'ACK')
97
+ this._sendAck(msg.from, msg.msgId);
98
+ this.signalHandlers.forEach(h => h(msg));
99
+ }
100
+ // File events
101
+ if (msg.type === 'FILE_AVAILABLE') {
102
+ this.fileHandlers.forEach(h => h(msg));
103
+ }
104
+ if (msg.type === 'FILE_CHUNK') {
105
+ this.saveFileProgress(msg.fileId, msg.chunkIndex);
106
+ this._dispatch('file:chunk', msg);
107
+ this._dispatch(`file:chunk/${msg.fileId}`, msg);
108
+ }
109
+ if (msg.type === 'FILE_UPLOAD_ACK') {
110
+ this._dispatch(`file:upload:ack/${msg.fileId}`, msg);
111
+ }
112
+ // Pull response
113
+ if (msg.type === 'PULL_RESPONSE') {
114
+ this._dispatch('pull:response', msg.payload, msg.topic);
115
+ this._dispatch(`pull:response/${msg.topic}`, msg.payload, msg.topic);
116
+ }
117
+ // Pub/Sub
118
+ if (msg.topic && msg.payload !== undefined) {
119
+ this.handlers.forEach((cbs, pattern) => {
120
+ if (this._matchTopic(pattern, msg.topic)) {
121
+ cbs.forEach(cb => cb(msg.payload, msg.topic));
122
+ }
123
+ });
124
+ }
125
+ }
126
+ catch {
127
+ this._dispatch('raw', data);
128
+ }
129
+ }
130
+ /** @private */
131
+ _dispatch(pattern, payload, topic) {
132
+ const cbs = this.handlers.get(pattern);
133
+ if (cbs)
134
+ cbs.forEach(cb => cb(payload, topic || pattern));
135
+ }
136
+ /** @private */
137
+ _sendRaw(msg) {
138
+ const str = typeof msg === 'string' ? msg : JSON.stringify(msg);
139
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
140
+ this.socket.send(str);
141
+ }
142
+ else {
143
+ // Buffer for offline queue (max 100 messages)
144
+ if (this._offlineQueue.length < 100)
145
+ this._offlineQueue.push(str);
146
+ }
147
+ }
148
+ /** Flush buffered messages after reconnect @private */
149
+ _flushOfflineQueue() {
150
+ while (this._offlineQueue.length > 0) {
151
+ const msg = this._offlineQueue.shift();
152
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
153
+ this.socket.send(msg);
154
+ }
155
+ }
156
+ }
157
+ /** @private */
158
+ _sendAck(to, msgId) {
159
+ this._sendRaw({ type: 'ACK', from: this.deviceId, to, data: { ackId: msgId }, timestamp: Date.now() });
160
+ }
161
+ /** MQTT wildcard topic matching @private */
162
+ _matchTopic(pattern, topic) {
163
+ if (pattern === topic || pattern === '#')
164
+ return true;
165
+ const pp = pattern.split('/');
166
+ const tp = topic.split('/');
167
+ if (pp.length !== tp.length && !pattern.includes('#'))
168
+ return false;
169
+ for (let i = 0; i < pp.length; i++) {
170
+ if (pp[i] === '#')
171
+ return true;
172
+ if (pp[i] !== '+' && pp[i] !== tp[i])
173
+ return false;
174
+ }
175
+ return pp.length === tp.length;
176
+ }
177
+ /** @private */
178
+ _maybeReconnect() {
179
+ if (this.reconnectAttempts < this.options.maxReconnect) {
180
+ this.reconnectAttempts++;
181
+ const delay = Math.pow(2, this.reconnectAttempts) * 1000;
182
+ console.log(`[Dolphin] Reconnecting in ${delay / 1000}s (attempt ${this.reconnectAttempts})...`);
183
+ setTimeout(() => this.connect().catch(() => { }), delay);
184
+ }
185
+ else {
186
+ console.error('[Dolphin] Max reconnect attempts reached.');
187
+ }
188
+ }
189
+ // ── Pub/Sub ───────────────────────────────────────────────────────────────
190
+ /**
191
+ * Subscribe to a topic (MQTT wildcards supported: + and #).
192
+ * @param {string} topic
193
+ * @param {TopicCallback} callback
194
+ */
195
+ subscribe(topic, callback) {
196
+ if (!this.handlers.has(topic)) {
197
+ this.handlers.set(topic, new Set());
198
+ this._sendRaw({ type: 'sub', topic });
199
+ }
200
+ this.handlers.get(topic).add(callback);
201
+ }
202
+ /**
203
+ * Unsubscribe from a topic.
204
+ * @param {string} topic
205
+ * @param {TopicCallback} callback
206
+ */
207
+ unsubscribe(topic, callback) {
208
+ if (this.handlers.has(topic)) {
209
+ const cbs = this.handlers.get(topic);
210
+ cbs.delete(callback);
211
+ if (cbs.size === 0) {
212
+ this.handlers.delete(topic);
213
+ this._sendRaw({ type: 'unsub', topic });
214
+ }
215
+ }
216
+ }
217
+ /**
218
+ * Publish a message to a topic. Queued if offline.
219
+ * @param {string} topic
220
+ * @param {any} payload
221
+ */
222
+ publish(topic, payload) {
223
+ this._sendRaw({ topic, payload });
224
+ }
225
+ /**
226
+ * High-frequency data push (IoT sensors).
227
+ * @param {string} topic
228
+ * @param {any} payload
229
+ */
230
+ pubPush(topic, payload) {
231
+ this._sendRaw({ type: 'pub', topic, payload });
232
+ }
233
+ /**
234
+ * Request historical data from a topic.
235
+ * @param {string} topic
236
+ * @param {number} [count=10]
237
+ */
238
+ subPull(topic, count = 10) {
239
+ this._sendRaw({ type: 'PULL_REQUEST', topic, count });
240
+ }
241
+ // ── File Transfer ─────────────────────────────────────────────────────────
242
+ /**
243
+ * Upload a file to the server in chunks.
244
+ * @param {string} fileId
245
+ * @param {Blob|ArrayBuffer|Uint8Array} fileData
246
+ * @param {string} [filename]
247
+ * @param {function(number): void} [onProgress] — progress callback (0-100)
248
+ * @returns {Promise<void>}
249
+ */
250
+ async pubFile(fileId, fileData, filename = '', onProgress) {
251
+ let buffer;
252
+ if (fileData instanceof Blob) {
253
+ buffer = await fileData.arrayBuffer();
254
+ }
255
+ else if (fileData instanceof ArrayBuffer) {
256
+ buffer = fileData;
257
+ }
258
+ else {
259
+ buffer = fileData.buffer || fileData;
260
+ }
261
+ const bytes = new Uint8Array(buffer);
262
+ const chunkSize = this.options.chunkSize;
263
+ const totalChunks = Math.ceil(bytes.length / chunkSize);
264
+ // Send file metadata first
265
+ this._sendRaw({
266
+ type: 'FILE_UPLOAD_START',
267
+ fileId,
268
+ name: filename,
269
+ size: bytes.length,
270
+ totalChunks,
271
+ chunkSize,
272
+ });
273
+ for (let i = 0; i < totalChunks; i++) {
274
+ const chunk = bytes.slice(i * chunkSize, (i + 1) * chunkSize);
275
+ const b64 = this._uint8ToBase64(chunk);
276
+ this._sendRaw({
277
+ type: 'FILE_UPLOAD_CHUNK',
278
+ fileId,
279
+ chunkIndex: i,
280
+ totalChunks,
281
+ data: b64,
282
+ });
283
+ if (onProgress)
284
+ onProgress(Math.round(((i + 1) / totalChunks) * 100));
285
+ // Small yield to prevent blocking
286
+ if (i % 10 === 0)
287
+ await new Promise(r => setTimeout(r, 0));
288
+ }
289
+ this._sendRaw({ type: 'FILE_UPLOAD_DONE', fileId });
290
+ }
291
+ /** @private */
292
+ _uint8ToBase64(uint8) {
293
+ let binary = '';
294
+ for (let i = 0; i < uint8.length; i++)
295
+ binary += String.fromCharCode(uint8[i]);
296
+ if (typeof btoa !== 'undefined')
297
+ return btoa(binary);
298
+ return Buffer.from(binary, 'binary').toString('base64');
299
+ }
300
+ /**
301
+ * Download a file from the server by chunks.
302
+ * @param {string} fileId
303
+ * @param {number} [startChunk=0]
304
+ */
305
+ subFile(fileId, startChunk = 0) {
306
+ this._sendRaw({ type: 'FILE_REQUEST', fileId, startChunk });
307
+ }
308
+ /**
309
+ * Resume a file download from saved progress.
310
+ * @param {string} fileId
311
+ */
312
+ resumeFile(fileId) {
313
+ const last = parseInt(this.storage.getItem(`dolphin_file_${fileId}`) || '-1');
314
+ this.subFile(fileId, last + 1);
315
+ }
316
+ /**
317
+ * Save download chunk progress.
318
+ * @param {string} fileId
319
+ * @param {number} chunkIndex
320
+ */
321
+ saveFileProgress(fileId, chunkIndex) {
322
+ this.storage.setItem(`dolphin_file_${fileId}`, chunkIndex.toString());
323
+ }
324
+ // ── Signaling ─────────────────────────────────────────────────────────────
325
+ /**
326
+ * @param {function(SignalMessage): void} handler
327
+ */
328
+ onSignal(handler) { this.signalHandlers.add(handler); }
329
+ /**
330
+ * @param {function(SignalMessage): void} handler
331
+ */
332
+ offSignal(handler) { this.signalHandlers.delete(handler); }
333
+ /**
334
+ * @param {function(FileMetadata): void} handler
335
+ */
336
+ onFileAvailable(handler) { this.fileHandlers.add(handler); }
337
+ /**
338
+ * @param {function(FileMetadata): void} handler
339
+ */
340
+ offFileAvailable(handler) { this.fileHandlers.delete(handler); }
341
+ }
342
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/client/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function attachDOMBinding(clientProto: any): void;
@@ -0,0 +1,228 @@
1
+ export function attachDOMBinding(clientProto) {
2
+ /** @private */
3
+ clientProto._initDOMBinding = function () {
4
+ if (this._domInitialized)
5
+ return;
6
+ this._domInitialized = true;
7
+ // 1. Listen for inputs
8
+ document.addEventListener('input', (e) => {
9
+ if (!e.target || !e.target.getAttribute)
10
+ return;
11
+ const topic = e.target.getAttribute('data-rt-push');
12
+ if (topic) {
13
+ const payload = { name: e.target.name, value: e.target.value };
14
+ this.pubPush(topic, payload);
15
+ }
16
+ });
17
+ // 2. Listen for form submits (RT + API)
18
+ document.addEventListener('submit', async (e) => {
19
+ if (!e.target || !e.target.getAttribute)
20
+ return;
21
+ const rtTopic = e.target.getAttribute('data-rt-submit');
22
+ const apiTarget = e.target.getAttribute('data-api-submit');
23
+ if (rtTopic || apiTarget) {
24
+ e.preventDefault();
25
+ const formData = new FormData(e.target);
26
+ const data = Object.fromEntries(formData.entries());
27
+ if (rtTopic) {
28
+ this.publish(rtTopic, data);
29
+ }
30
+ else if (apiTarget) {
31
+ const parts = apiTarget.trim().split(' ');
32
+ const method = parts.length > 1 ? parts[0].toUpperCase() : 'POST';
33
+ const path = parts.length > 1 ? parts[1] : parts[0];
34
+ try {
35
+ const result = await this.api.request(method, path, data);
36
+ const resultBind = e.target.getAttribute('data-api-result');
37
+ if (resultBind)
38
+ this._updateDOM(resultBind, result);
39
+ // Auto Navigation (Hookless Routing)
40
+ const redirect = e.target.getAttribute('data-api-redirect');
41
+ if (redirect)
42
+ window.location.href = redirect;
43
+ if (e.target.hasAttribute('data-api-reload'))
44
+ window.location.reload();
45
+ }
46
+ catch (err) {
47
+ console.error('[Dolphin] API Submit Error:', err);
48
+ }
49
+ }
50
+ }
51
+ });
52
+ // 3. Listen for clicks (RT + API)
53
+ document.addEventListener('click', async (e) => {
54
+ if (!e.target || !e.target.closest)
55
+ return;
56
+ const rtBtn = e.target.closest('[data-rt-click]');
57
+ const apiBtn = e.target.closest('[data-api-click]');
58
+ if (rtBtn) {
59
+ const topic = rtBtn.getAttribute('data-rt-click');
60
+ const actionData = rtBtn.getAttribute('data-rt-payload');
61
+ const payload = actionData ? JSON.parse(actionData) : {};
62
+ this.publish(topic, payload);
63
+ }
64
+ else if (apiBtn) {
65
+ const apiTarget = apiBtn.getAttribute('data-api-click');
66
+ const actionData = apiBtn.getAttribute('data-api-payload');
67
+ const payload = actionData ? JSON.parse(actionData) : null;
68
+ const parts = apiTarget.trim().split(' ');
69
+ const method = parts.length > 1 ? parts[0].toUpperCase() : 'POST';
70
+ const path = parts.length > 1 ? parts[1] : parts[0];
71
+ try {
72
+ const result = await this.api.request(method, path, payload);
73
+ const resultBind = apiBtn.getAttribute('data-api-result');
74
+ if (resultBind)
75
+ this._updateDOM(resultBind, result);
76
+ // Auto Navigation (Hookless Routing)
77
+ const redirect = apiBtn.getAttribute('data-api-redirect');
78
+ if (redirect)
79
+ window.location.href = redirect;
80
+ if (apiBtn.hasAttribute('data-api-reload'))
81
+ window.location.reload();
82
+ }
83
+ catch (err) {
84
+ console.error('[Dolphin] API Click Error:', err);
85
+ }
86
+ }
87
+ });
88
+ // 4. Update DOM when RT data arrives
89
+ // Note: Subscribe to all topics ('#') to auto-update DOM bindings
90
+ this.subscribe('#', (payload, topic) => {
91
+ this._updateDOM(topic, payload);
92
+ });
93
+ // 5. Auto-fetch API GET bindings
94
+ this._scanAndFetchAPIBinds();
95
+ };
96
+ /** @private */
97
+ clientProto._scanAndFetchAPIBinds = async function () {
98
+ if (typeof document === 'undefined')
99
+ return;
100
+ const elements = document.querySelectorAll('[data-api-get]');
101
+ for (const el of Array.from(elements)) {
102
+ const path = el.getAttribute('data-api-get');
103
+ if (!path)
104
+ continue;
105
+ try {
106
+ const result = await this.api.get(path);
107
+ if (el.tagName === 'INPUT' || el.tagName === 'TEXTAREA') {
108
+ el.value = typeof result === 'object' ? (result.value !== undefined ? result.value : '') : result;
109
+ }
110
+ else {
111
+ el.innerHTML = typeof result === 'object' ? (result.html || result.text || JSON.stringify(result)) : result;
112
+ }
113
+ }
114
+ catch (e) {
115
+ console.error('[Dolphin] API Get Error:', e);
116
+ }
117
+ }
118
+ };
119
+ /** @private */
120
+ clientProto._updateDOM = function (topic, payload) {
121
+ if (typeof document === 'undefined')
122
+ return;
123
+ const elements = document.querySelectorAll(`[data-rt-bind="${topic}"]`);
124
+ elements.forEach(el => {
125
+ if (el.getAttribute('data-rt-type') === 'context' && typeof payload === 'object' && payload !== null) {
126
+ const processNode = (node) => {
127
+ if (node.hasAttribute('data-rt-text')) {
128
+ const key = node.getAttribute('data-rt-text');
129
+ if (key && payload[key] !== undefined && payload[key] !== null)
130
+ node.textContent = payload[key];
131
+ }
132
+ if (node.hasAttribute('data-rt-html')) {
133
+ const key = node.getAttribute('data-rt-html');
134
+ if (key && payload[key] !== undefined && payload[key] !== null)
135
+ node.innerHTML = payload[key];
136
+ }
137
+ if (node.hasAttribute('data-rt-attr')) {
138
+ const attrStr = node.getAttribute('data-rt-attr');
139
+ if (attrStr) {
140
+ attrStr.split(',').forEach(b => {
141
+ const parts = b.split(':');
142
+ if (parts.length === 2) {
143
+ const attrName = parts[0].trim();
144
+ const key = parts[1].trim();
145
+ if (attrName && key && payload[key] !== undefined && payload[key] !== null) {
146
+ node.setAttribute(attrName, payload[key]);
147
+ }
148
+ }
149
+ });
150
+ }
151
+ }
152
+ if (node.hasAttribute('data-rt-class')) {
153
+ const classStr = node.getAttribute('data-rt-class');
154
+ if (classStr) {
155
+ classStr.split(',').forEach(b => {
156
+ const parts = b.split(':');
157
+ if (parts.length === 2) {
158
+ const className = parts[0].trim();
159
+ const key = parts[1].trim();
160
+ if (payload[key]) {
161
+ node.classList.add(className);
162
+ }
163
+ else {
164
+ node.classList.remove(className);
165
+ }
166
+ }
167
+ });
168
+ }
169
+ }
170
+ if (node.hasAttribute('data-rt-if')) {
171
+ const key = node.getAttribute('data-rt-if');
172
+ if (key) {
173
+ if (payload[key]) {
174
+ node.style.display = '';
175
+ }
176
+ else {
177
+ node.style.display = 'none';
178
+ }
179
+ }
180
+ }
181
+ if (node.hasAttribute('data-rt-hide')) {
182
+ const key = node.getAttribute('data-rt-hide');
183
+ if (key) {
184
+ if (payload[key]) {
185
+ node.style.display = 'none';
186
+ }
187
+ else {
188
+ node.style.display = '';
189
+ }
190
+ }
191
+ }
192
+ };
193
+ processNode(el);
194
+ el.querySelectorAll('[data-rt-text], [data-rt-html], [data-rt-attr], [data-rt-class], [data-rt-if], [data-rt-hide]').forEach(processNode);
195
+ return;
196
+ }
197
+ const template = el.getAttribute('data-rt-template');
198
+ if (template && typeof payload === 'object' && payload !== null) {
199
+ if (Array.isArray(payload)) {
200
+ let combinedHTML = '';
201
+ for (const item of payload) {
202
+ let finalItemHTML = template;
203
+ for (let key in item) {
204
+ finalItemHTML = finalItemHTML.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), item[key] !== undefined && item[key] !== null ? item[key] : '');
205
+ }
206
+ combinedHTML += finalItemHTML;
207
+ }
208
+ el.innerHTML = combinedHTML;
209
+ }
210
+ else {
211
+ let finalHTML = template;
212
+ for (let key in payload) {
213
+ finalHTML = finalHTML.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), payload[key] !== undefined && payload[key] !== null ? payload[key] : '');
214
+ }
215
+ el.innerHTML = finalHTML;
216
+ }
217
+ return;
218
+ }
219
+ if (el.tagName === 'INPUT' || el.tagName === 'TEXTAREA') {
220
+ el.value = typeof payload === 'object' ? (payload.value !== undefined ? payload.value : '') : payload;
221
+ }
222
+ else {
223
+ el.innerHTML = typeof payload === 'object' ? (payload.html || payload.text || JSON.stringify(payload)) : payload;
224
+ }
225
+ });
226
+ };
227
+ }
228
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/client/dom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DolphinClient } from './core';
2
+ export { DolphinClient };
@@ -0,0 +1,12 @@
1
+ import { DolphinClient } from './core';
2
+ import { attachDOMBinding } from './dom';
3
+ attachDOMBinding(DolphinClient.prototype);
4
+ if (typeof window !== 'undefined') {
5
+ window.DolphinClient = DolphinClient;
6
+ window.dolphin = new DolphinClient();
7
+ }
8
+ export { DolphinClient };
9
+ if (typeof module !== 'undefined' && module.exports) {
10
+ module.exports = { DolphinClient };
11
+ }
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAEzC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAE1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,aAAa,GAAG,aAAa,CAAC;IAC7C,MAAc,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;AAChD,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare class DolphinStore {
2
+ /** @param {DolphinClient} client */
3
+ constructor(client: any);
4
+ /** @private */
5
+ _getCollection(name: any): any;
6
+ /** @private */
7
+ _fetchAndSync(name: any): Promise<void>;
8
+ /** @private */
9
+ _applyTransform(state: any): void;
10
+ /** @private */
11
+ _handleRemoteUpdate(collection: any, update: any): void;
12
+ /** Subscribe for React useSyncExternalStore */
13
+ subscribe(listener: any): () => any;
14
+ /** @param {string} collection */
15
+ getSnapshot(collection: any): any;
16
+ /** @private */
17
+ _notify(): void;
18
+ }