@insforge/sdk 1.3.0-ssr.2 → 1.3.0

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/ssr.mjs CHANGED
@@ -2177,7 +2177,6 @@ var Functions = class _Functions {
2177
2177
  };
2178
2178
 
2179
2179
  // src/modules/realtime.ts
2180
- import { io } from "socket.io-client";
2181
2180
  var CONNECT_TIMEOUT = 1e4;
2182
2181
  var Realtime = class {
2183
2182
  constructor(baseUrl, tokenManager, anonKey) {
@@ -2212,61 +2211,69 @@ var Realtime = class {
2212
2211
  if (this.connectPromise) {
2213
2212
  return this.connectPromise;
2214
2213
  }
2215
- this.connectPromise = new Promise((resolve, reject) => {
2216
- const token = this.tokenManager.getAccessToken() ?? this.anonKey;
2217
- this.socket = io(this.baseUrl, {
2218
- transports: ["websocket"],
2219
- auth: token ? { token } : void 0
2220
- });
2221
- let initialConnection = true;
2222
- let timeoutId = null;
2223
- const cleanup = () => {
2224
- if (timeoutId) {
2225
- clearTimeout(timeoutId);
2226
- timeoutId = null;
2227
- }
2228
- };
2229
- timeoutId = setTimeout(() => {
2230
- if (initialConnection) {
2231
- initialConnection = false;
2232
- this.connectPromise = null;
2233
- this.socket?.disconnect();
2234
- this.socket = null;
2235
- reject(new Error(`Connection timeout after ${CONNECT_TIMEOUT}ms`));
2236
- }
2237
- }, CONNECT_TIMEOUT);
2238
- this.socket.on("connect", () => {
2239
- cleanup();
2240
- for (const channel of this.subscribedChannels) {
2241
- this.socket.emit("realtime:subscribe", { channel });
2242
- }
2243
- this.notifyListeners("connect");
2244
- if (initialConnection) {
2245
- initialConnection = false;
2246
- this.connectPromise = null;
2247
- resolve();
2248
- }
2249
- });
2250
- this.socket.on("connect_error", (error) => {
2251
- cleanup();
2252
- this.notifyListeners("connect_error", error);
2253
- if (initialConnection) {
2254
- initialConnection = false;
2255
- this.connectPromise = null;
2256
- reject(error);
2257
- }
2258
- });
2259
- this.socket.on("disconnect", (reason) => {
2260
- this.notifyListeners("disconnect", reason);
2261
- });
2262
- this.socket.on("realtime:error", (error) => {
2263
- this.notifyListeners("error", error);
2264
- });
2265
- this.socket.onAny((event, message) => {
2266
- if (event === "realtime:error") return;
2267
- this.notifyListeners(event, message);
2268
- });
2269
- });
2214
+ this.connectPromise = (async () => {
2215
+ try {
2216
+ const { io } = await import("socket.io-client");
2217
+ await new Promise((resolve, reject) => {
2218
+ const token = this.tokenManager.getAccessToken() ?? this.anonKey;
2219
+ this.socket = io(this.baseUrl, {
2220
+ transports: ["websocket"],
2221
+ auth: token ? { token } : void 0
2222
+ });
2223
+ let initialConnection = true;
2224
+ let timeoutId = null;
2225
+ const cleanup = () => {
2226
+ if (timeoutId) {
2227
+ clearTimeout(timeoutId);
2228
+ timeoutId = null;
2229
+ }
2230
+ };
2231
+ timeoutId = setTimeout(() => {
2232
+ if (initialConnection) {
2233
+ initialConnection = false;
2234
+ this.connectPromise = null;
2235
+ this.socket?.disconnect();
2236
+ this.socket = null;
2237
+ reject(new Error(`Connection timeout after ${CONNECT_TIMEOUT}ms`));
2238
+ }
2239
+ }, CONNECT_TIMEOUT);
2240
+ this.socket.on("connect", () => {
2241
+ cleanup();
2242
+ for (const channel of this.subscribedChannels) {
2243
+ this.socket.emit("realtime:subscribe", { channel });
2244
+ }
2245
+ this.notifyListeners("connect");
2246
+ if (initialConnection) {
2247
+ initialConnection = false;
2248
+ this.connectPromise = null;
2249
+ resolve();
2250
+ }
2251
+ });
2252
+ this.socket.on("connect_error", (error) => {
2253
+ cleanup();
2254
+ this.notifyListeners("connect_error", error);
2255
+ if (initialConnection) {
2256
+ initialConnection = false;
2257
+ this.connectPromise = null;
2258
+ reject(error);
2259
+ }
2260
+ });
2261
+ this.socket.on("disconnect", (reason) => {
2262
+ this.notifyListeners("disconnect", reason);
2263
+ });
2264
+ this.socket.on("realtime:error", (error) => {
2265
+ this.notifyListeners("error", error);
2266
+ });
2267
+ this.socket.onAny((event, message) => {
2268
+ if (event === "realtime:error") return;
2269
+ this.notifyListeners(event, message);
2270
+ });
2271
+ });
2272
+ } catch (error) {
2273
+ this.connectPromise = null;
2274
+ throw error;
2275
+ }
2276
+ })();
2270
2277
  return this.connectPromise;
2271
2278
  }
2272
2279
  /**
@@ -2596,10 +2603,9 @@ function decodeBase64Url(input) {
2596
2603
  normalized.length + (4 - normalized.length % 4) % 4,
2597
2604
  "="
2598
2605
  );
2599
- if (typeof atob === "function") {
2600
- return atob(padded);
2601
- }
2602
- return Buffer.from(padded, "base64").toString("utf8");
2606
+ const binary = atob(padded);
2607
+ const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));
2608
+ return new TextDecoder().decode(bytes);
2603
2609
  }
2604
2610
  function getJwtExpiration(token) {
2605
2611
  if (!token) return null;
@@ -2616,8 +2622,9 @@ function getJwtExpiration(token) {
2616
2622
  }
2617
2623
  }
2618
2624
  function isJwtExpiredOrExpiring(token, leewaySeconds = 60) {
2625
+ if (!token) return false;
2619
2626
  const expires = getJwtExpiration(token);
2620
- if (!expires) return false;
2627
+ if (!expires) return true;
2621
2628
  return expires.getTime() <= Date.now() + leewaySeconds * 1e3;
2622
2629
  }
2623
2630
 
@@ -2684,11 +2691,12 @@ function refreshTokenCookieOptions(token, overrides) {
2684
2691
  };
2685
2692
  }
2686
2693
  function expiredCookieOptions(overrides) {
2694
+ const { expires: _expires, maxAge: _maxAge, ...safeOverrides } = overrides ?? {};
2687
2695
  return {
2688
2696
  ...defaultCookieOptions(),
2697
+ ...safeOverrides,
2689
2698
  expires: EXPIRED_DATE,
2690
- maxAge: 0,
2691
- ...overrides
2699
+ maxAge: 0
2692
2700
  };
2693
2701
  }
2694
2702
  function setCookie(cookies, name, value, options) {
@@ -2829,6 +2837,13 @@ function withAuthHeader(init, token) {
2829
2837
  headers
2830
2838
  };
2831
2839
  }
2840
+ function getRequestUrl(input) {
2841
+ if (typeof input === "string") return input;
2842
+ if (typeof Request !== "undefined" && input instanceof Request) {
2843
+ return input.url;
2844
+ }
2845
+ return input.toString();
2846
+ }
2832
2847
  function createBrowserClient(options = {}) {
2833
2848
  let { baseUrl, anonKey } = options;
2834
2849
  try {
@@ -2885,7 +2900,7 @@ function createBrowserClient(options = {}) {
2885
2900
  return refreshPromise;
2886
2901
  };
2887
2902
  const shouldSkipRefresh = (input) => {
2888
- const url = typeof input === "string" ? input : input.toString();
2903
+ const url = getRequestUrl(input);
2889
2904
  return url === refreshUrl || url.endsWith(refreshUrl);
2890
2905
  };
2891
2906
  const ssrFetch = async (input, init) => {