@blinkdotnew/sdk 0.14.6 → 0.14.7

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
@@ -1274,7 +1274,13 @@ var BlinkAuth = class {
1274
1274
  */
1275
1275
  onAuthStateChanged(callback) {
1276
1276
  this.listeners.add(callback);
1277
- callback(this.authState);
1277
+ queueMicrotask(() => {
1278
+ try {
1279
+ callback(this.authState);
1280
+ } catch (error) {
1281
+ console.error("Error in auth state change callback:", error);
1282
+ }
1283
+ });
1278
1284
  return () => {
1279
1285
  this.listeners.delete(callback);
1280
1286
  };
@@ -2805,7 +2811,11 @@ var BlinkRealtimeChannel = class {
2805
2811
  metadata: options.metadata
2806
2812
  }
2807
2813
  };
2808
- this.websocket.send(JSON.stringify(subscribeMessage));
2814
+ this.sendMessage(JSON.stringify(subscribeMessage)).catch((error) => {
2815
+ if (this.pendingSubscription) {
2816
+ this.pendingSubscription.reject(error);
2817
+ }
2818
+ });
2809
2819
  });
2810
2820
  }
2811
2821
  async unsubscribe() {
@@ -2909,6 +2919,13 @@ var BlinkRealtimeChannel = class {
2909
2919
  */
2910
2920
  sendMessage(message) {
2911
2921
  return new Promise((resolve, reject) => {
2922
+ let messageObj;
2923
+ try {
2924
+ messageObj = JSON.parse(message);
2925
+ } catch (error) {
2926
+ reject(new BlinkRealtimeError("Invalid message format"));
2927
+ return;
2928
+ }
2912
2929
  const timeout = setTimeout(() => {
2913
2930
  const index = this.messageQueue.findIndex((q) => q.resolve === resolve);
2914
2931
  if (index > -1) {
@@ -2923,7 +2940,13 @@ var BlinkRealtimeChannel = class {
2923
2940
  timeout
2924
2941
  };
2925
2942
  if (this.websocket && this.websocket.readyState === 1) {
2926
- this.sendQueuedMessage(queuedMessage);
2943
+ if (messageObj.type === "publish") {
2944
+ this.sendQueuedMessage(queuedMessage);
2945
+ } else {
2946
+ this.websocket.send(message);
2947
+ clearTimeout(timeout);
2948
+ resolve("sent");
2949
+ }
2927
2950
  } else {
2928
2951
  this.messageQueue.push(queuedMessage);
2929
2952
  }
@@ -2962,7 +2985,19 @@ var BlinkRealtimeChannel = class {
2962
2985
  const queue = [...this.messageQueue];
2963
2986
  this.messageQueue = [];
2964
2987
  queue.forEach((queuedMessage) => {
2965
- this.sendQueuedMessage(queuedMessage);
2988
+ try {
2989
+ const messageObj = JSON.parse(queuedMessage.message);
2990
+ if (messageObj.type === "publish") {
2991
+ this.sendQueuedMessage(queuedMessage);
2992
+ } else {
2993
+ this.websocket.send(queuedMessage.message);
2994
+ clearTimeout(queuedMessage.timeout);
2995
+ queuedMessage.resolve("sent");
2996
+ }
2997
+ } catch (error) {
2998
+ clearTimeout(queuedMessage.timeout);
2999
+ queuedMessage.reject(new BlinkRealtimeError("Invalid queued message format"));
3000
+ }
2966
3001
  });
2967
3002
  }
2968
3003
  async connectWebSocket() {
package/dist/index.mjs CHANGED
@@ -1272,7 +1272,13 @@ var BlinkAuth = class {
1272
1272
  */
1273
1273
  onAuthStateChanged(callback) {
1274
1274
  this.listeners.add(callback);
1275
- callback(this.authState);
1275
+ queueMicrotask(() => {
1276
+ try {
1277
+ callback(this.authState);
1278
+ } catch (error) {
1279
+ console.error("Error in auth state change callback:", error);
1280
+ }
1281
+ });
1276
1282
  return () => {
1277
1283
  this.listeners.delete(callback);
1278
1284
  };
@@ -2803,7 +2809,11 @@ var BlinkRealtimeChannel = class {
2803
2809
  metadata: options.metadata
2804
2810
  }
2805
2811
  };
2806
- this.websocket.send(JSON.stringify(subscribeMessage));
2812
+ this.sendMessage(JSON.stringify(subscribeMessage)).catch((error) => {
2813
+ if (this.pendingSubscription) {
2814
+ this.pendingSubscription.reject(error);
2815
+ }
2816
+ });
2807
2817
  });
2808
2818
  }
2809
2819
  async unsubscribe() {
@@ -2907,6 +2917,13 @@ var BlinkRealtimeChannel = class {
2907
2917
  */
2908
2918
  sendMessage(message) {
2909
2919
  return new Promise((resolve, reject) => {
2920
+ let messageObj;
2921
+ try {
2922
+ messageObj = JSON.parse(message);
2923
+ } catch (error) {
2924
+ reject(new BlinkRealtimeError("Invalid message format"));
2925
+ return;
2926
+ }
2910
2927
  const timeout = setTimeout(() => {
2911
2928
  const index = this.messageQueue.findIndex((q) => q.resolve === resolve);
2912
2929
  if (index > -1) {
@@ -2921,7 +2938,13 @@ var BlinkRealtimeChannel = class {
2921
2938
  timeout
2922
2939
  };
2923
2940
  if (this.websocket && this.websocket.readyState === 1) {
2924
- this.sendQueuedMessage(queuedMessage);
2941
+ if (messageObj.type === "publish") {
2942
+ this.sendQueuedMessage(queuedMessage);
2943
+ } else {
2944
+ this.websocket.send(message);
2945
+ clearTimeout(timeout);
2946
+ resolve("sent");
2947
+ }
2925
2948
  } else {
2926
2949
  this.messageQueue.push(queuedMessage);
2927
2950
  }
@@ -2960,7 +2983,19 @@ var BlinkRealtimeChannel = class {
2960
2983
  const queue = [...this.messageQueue];
2961
2984
  this.messageQueue = [];
2962
2985
  queue.forEach((queuedMessage) => {
2963
- this.sendQueuedMessage(queuedMessage);
2986
+ try {
2987
+ const messageObj = JSON.parse(queuedMessage.message);
2988
+ if (messageObj.type === "publish") {
2989
+ this.sendQueuedMessage(queuedMessage);
2990
+ } else {
2991
+ this.websocket.send(queuedMessage.message);
2992
+ clearTimeout(queuedMessage.timeout);
2993
+ queuedMessage.resolve("sent");
2994
+ }
2995
+ } catch (error) {
2996
+ clearTimeout(queuedMessage.timeout);
2997
+ queuedMessage.reject(new BlinkRealtimeError("Invalid queued message format"));
2998
+ }
2964
2999
  });
2965
3000
  }
2966
3001
  async connectWebSocket() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinkdotnew/sdk",
3
- "version": "0.14.6",
3
+ "version": "0.14.7",
4
4
  "description": "Blink TypeScript SDK for client-side applications - Zero-boilerplate CRUD + auth + AI + analytics + notifications for modern SaaS/AI apps",
5
5
  "keywords": [
6
6
  "blink",