@dream-api/sdk 0.1.26 → 0.1.28

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
@@ -38,17 +38,10 @@ var DreamAPIException = class extends Error {
38
38
 
39
39
  // src/client.ts
40
40
  var DEFAULT_BASE_URL = "https://api-multi.k-c-sheffield012376.workers.dev";
41
- var SIGNUP_URL_DEV = "https://sign-up.k-c-sheffield012376.workers.dev";
41
+ var SIGNUP_URL_TEST = "https://sign-up.k-c-sheffield012376.workers.dev";
42
42
  var SIGNUP_URL_LIVE = "https://signup.users.panacea-tech.net";
43
- var CLERK_URL_DEV = "https://composed-blowfish-76.clerk.accounts.dev";
43
+ var CLERK_URL_TEST = "https://composed-blowfish-76.clerk.accounts.dev";
44
44
  var CLERK_URL_LIVE = "https://users.panacea-tech.net";
45
- function isLocalhost() {
46
- if (typeof window === "undefined") return false;
47
- const hostname = window.location.hostname;
48
- return hostname === "localhost" || hostname === "127.0.0.1";
49
- }
50
- var DEFAULT_SIGNUP_URL = isLocalhost() ? SIGNUP_URL_DEV : SIGNUP_URL_LIVE;
51
- var DEFAULT_CLERK_URL = isLocalhost() ? CLERK_URL_DEV : CLERK_URL_LIVE;
52
45
  var DreamClient = class {
53
46
  constructor(config) {
54
47
  this.userToken = null;
@@ -59,8 +52,9 @@ var DreamClient = class {
59
52
  this.secretKey = config.secretKey;
60
53
  this.publishableKey = config.publishableKey;
61
54
  this.baseUrl = config.baseUrl || DEFAULT_BASE_URL;
62
- this.signupUrl = config.signupUrl || DEFAULT_SIGNUP_URL;
63
- this.clerkUrl = config.clerkBaseUrl || DEFAULT_CLERK_URL;
55
+ const isTestKey = this.publishableKey?.startsWith("pk_test_");
56
+ this.signupUrl = config.signupUrl || (isTestKey ? SIGNUP_URL_TEST : SIGNUP_URL_LIVE);
57
+ this.clerkUrl = config.clerkBaseUrl || (isTestKey ? CLERK_URL_TEST : CLERK_URL_LIVE);
64
58
  this.frontendOnly = !config.secretKey && !!config.publishableKey;
65
59
  if (this.frontendOnly) {
66
60
  console.log("[DreamAPI] Running in frontend-only mode (PK auth)");
@@ -190,7 +184,7 @@ var DreamClient = class {
190
184
  };
191
185
 
192
186
  // src/clerk.ts
193
- function isLocalhost2() {
187
+ function isLocalhost() {
194
188
  if (typeof window === "undefined") return false;
195
189
  const hostname = window.location.hostname;
196
190
  return hostname === "localhost" || hostname === "127.0.0.1";
@@ -198,7 +192,7 @@ function isLocalhost2() {
198
192
  var CLERK_DEV_KEY = "pk_test_Y29tcG9zZWQtYmxvd2Zpc2gtNzYuY2xlcmsuYWNjb3VudHMuZGV2JA";
199
193
  var CLERK_LIVE_KEY = "pk_live_Y2xlcmsudXNlcnMucGFuYWNlYS10ZWNoLm5ldCQ";
200
194
  function getClerkKey() {
201
- return isLocalhost2() ? CLERK_DEV_KEY : CLERK_LIVE_KEY;
195
+ return isLocalhost() ? CLERK_DEV_KEY : CLERK_LIVE_KEY;
202
196
  }
203
197
  var CLERK_CDN_URL = "https://cdn.jsdelivr.net/npm/@clerk/clerk-js@5.118.0/dist/clerk.browser.js";
204
198
  var JWT_TEMPLATE = "end-user-api";
@@ -216,6 +210,18 @@ var ClerkManager = class {
216
210
  */
217
211
  async load() {
218
212
  if (this.loaded || typeof window === "undefined") return;
213
+ const urlParams = new URLSearchParams(window.location.search);
214
+ const jwt = urlParams.get("__clerk_jwt");
215
+ if (jwt) {
216
+ console.log("[DreamAPI] JWT received from sign-up worker");
217
+ this.token = jwt;
218
+ this.onTokenChange?.(jwt);
219
+ urlParams.delete("__clerk_jwt");
220
+ const newUrl = urlParams.toString() ? `${window.location.pathname}?${urlParams}` : window.location.pathname;
221
+ window.history.replaceState({}, "", newUrl);
222
+ this.loaded = true;
223
+ return;
224
+ }
219
225
  const existingClerk = getClerk();
220
226
  if (existingClerk) {
221
227
  this.loaded = true;
@@ -240,8 +246,8 @@ var ClerkManager = class {
240
246
  }
241
247
  if (clerk) {
242
248
  await clerk.load();
243
- const urlParams = new URLSearchParams(window.location.search);
244
- const ticket = urlParams.get("__clerk_ticket");
249
+ const urlParams2 = new URLSearchParams(window.location.search);
250
+ const ticket = urlParams2.get("__clerk_ticket");
245
251
  console.log("[DreamAPI] URL:", window.location.href);
246
252
  console.log("[DreamAPI] Ticket present:", ticket ? "YES" : "NO");
247
253
  const sdkDebug = {
@@ -275,8 +281,8 @@ var ClerkManager = class {
275
281
  if (clerk.user && clerk.session) break;
276
282
  }
277
283
  console.log("[DreamAPI] User hydrated:", !!clerk.user);
278
- urlParams.delete("__clerk_ticket");
279
- const newUrl = urlParams.toString() ? `${window.location.pathname}?${urlParams}` : window.location.pathname;
284
+ urlParams2.delete("__clerk_ticket");
285
+ const newUrl = urlParams2.toString() ? `${window.location.pathname}?${urlParams2}` : window.location.pathname;
280
286
  window.history.replaceState({}, "", newUrl);
281
287
  }
282
288
  } catch (err) {
@@ -309,6 +315,7 @@ var ClerkManager = class {
309
315
  * Check if user is signed in
310
316
  */
311
317
  isSignedIn() {
318
+ if (this.token) return true;
312
319
  const clerk = getClerk();
313
320
  return !!clerk?.user && !!clerk?.session;
314
321
  }
@@ -316,6 +323,22 @@ var ClerkManager = class {
316
323
  * Get current user info
317
324
  */
318
325
  getUser() {
326
+ if (this.token) {
327
+ try {
328
+ const parts = this.token.split(".");
329
+ if (parts.length === 3) {
330
+ const payload = JSON.parse(atob(parts[1].replace(/-/g, "+").replace(/_/g, "/")));
331
+ return {
332
+ id: payload.sub || "",
333
+ email: payload.email || "",
334
+ plan: payload.plan || payload.publicMetadata?.plan || "free",
335
+ publishableKey: payload.publishableKey || payload.publicMetadata?.publishableKey || ""
336
+ };
337
+ }
338
+ } catch (e) {
339
+ console.error("[DreamAPI] Failed to decode JWT:", e);
340
+ }
341
+ }
319
342
  const clerk = getClerk();
320
343
  if (!clerk?.user) return null;
321
344
  const user = clerk.user;
package/dist/index.mjs CHANGED
@@ -10,17 +10,10 @@ var DreamAPIException = class extends Error {
10
10
 
11
11
  // src/client.ts
12
12
  var DEFAULT_BASE_URL = "https://api-multi.k-c-sheffield012376.workers.dev";
13
- var SIGNUP_URL_DEV = "https://sign-up.k-c-sheffield012376.workers.dev";
13
+ var SIGNUP_URL_TEST = "https://sign-up.k-c-sheffield012376.workers.dev";
14
14
  var SIGNUP_URL_LIVE = "https://signup.users.panacea-tech.net";
15
- var CLERK_URL_DEV = "https://composed-blowfish-76.clerk.accounts.dev";
15
+ var CLERK_URL_TEST = "https://composed-blowfish-76.clerk.accounts.dev";
16
16
  var CLERK_URL_LIVE = "https://users.panacea-tech.net";
17
- function isLocalhost() {
18
- if (typeof window === "undefined") return false;
19
- const hostname = window.location.hostname;
20
- return hostname === "localhost" || hostname === "127.0.0.1";
21
- }
22
- var DEFAULT_SIGNUP_URL = isLocalhost() ? SIGNUP_URL_DEV : SIGNUP_URL_LIVE;
23
- var DEFAULT_CLERK_URL = isLocalhost() ? CLERK_URL_DEV : CLERK_URL_LIVE;
24
17
  var DreamClient = class {
25
18
  constructor(config) {
26
19
  this.userToken = null;
@@ -31,8 +24,9 @@ var DreamClient = class {
31
24
  this.secretKey = config.secretKey;
32
25
  this.publishableKey = config.publishableKey;
33
26
  this.baseUrl = config.baseUrl || DEFAULT_BASE_URL;
34
- this.signupUrl = config.signupUrl || DEFAULT_SIGNUP_URL;
35
- this.clerkUrl = config.clerkBaseUrl || DEFAULT_CLERK_URL;
27
+ const isTestKey = this.publishableKey?.startsWith("pk_test_");
28
+ this.signupUrl = config.signupUrl || (isTestKey ? SIGNUP_URL_TEST : SIGNUP_URL_LIVE);
29
+ this.clerkUrl = config.clerkBaseUrl || (isTestKey ? CLERK_URL_TEST : CLERK_URL_LIVE);
36
30
  this.frontendOnly = !config.secretKey && !!config.publishableKey;
37
31
  if (this.frontendOnly) {
38
32
  console.log("[DreamAPI] Running in frontend-only mode (PK auth)");
@@ -162,7 +156,7 @@ var DreamClient = class {
162
156
  };
163
157
 
164
158
  // src/clerk.ts
165
- function isLocalhost2() {
159
+ function isLocalhost() {
166
160
  if (typeof window === "undefined") return false;
167
161
  const hostname = window.location.hostname;
168
162
  return hostname === "localhost" || hostname === "127.0.0.1";
@@ -170,7 +164,7 @@ function isLocalhost2() {
170
164
  var CLERK_DEV_KEY = "pk_test_Y29tcG9zZWQtYmxvd2Zpc2gtNzYuY2xlcmsuYWNjb3VudHMuZGV2JA";
171
165
  var CLERK_LIVE_KEY = "pk_live_Y2xlcmsudXNlcnMucGFuYWNlYS10ZWNoLm5ldCQ";
172
166
  function getClerkKey() {
173
- return isLocalhost2() ? CLERK_DEV_KEY : CLERK_LIVE_KEY;
167
+ return isLocalhost() ? CLERK_DEV_KEY : CLERK_LIVE_KEY;
174
168
  }
175
169
  var CLERK_CDN_URL = "https://cdn.jsdelivr.net/npm/@clerk/clerk-js@5.118.0/dist/clerk.browser.js";
176
170
  var JWT_TEMPLATE = "end-user-api";
@@ -188,6 +182,18 @@ var ClerkManager = class {
188
182
  */
189
183
  async load() {
190
184
  if (this.loaded || typeof window === "undefined") return;
185
+ const urlParams = new URLSearchParams(window.location.search);
186
+ const jwt = urlParams.get("__clerk_jwt");
187
+ if (jwt) {
188
+ console.log("[DreamAPI] JWT received from sign-up worker");
189
+ this.token = jwt;
190
+ this.onTokenChange?.(jwt);
191
+ urlParams.delete("__clerk_jwt");
192
+ const newUrl = urlParams.toString() ? `${window.location.pathname}?${urlParams}` : window.location.pathname;
193
+ window.history.replaceState({}, "", newUrl);
194
+ this.loaded = true;
195
+ return;
196
+ }
191
197
  const existingClerk = getClerk();
192
198
  if (existingClerk) {
193
199
  this.loaded = true;
@@ -212,8 +218,8 @@ var ClerkManager = class {
212
218
  }
213
219
  if (clerk) {
214
220
  await clerk.load();
215
- const urlParams = new URLSearchParams(window.location.search);
216
- const ticket = urlParams.get("__clerk_ticket");
221
+ const urlParams2 = new URLSearchParams(window.location.search);
222
+ const ticket = urlParams2.get("__clerk_ticket");
217
223
  console.log("[DreamAPI] URL:", window.location.href);
218
224
  console.log("[DreamAPI] Ticket present:", ticket ? "YES" : "NO");
219
225
  const sdkDebug = {
@@ -247,8 +253,8 @@ var ClerkManager = class {
247
253
  if (clerk.user && clerk.session) break;
248
254
  }
249
255
  console.log("[DreamAPI] User hydrated:", !!clerk.user);
250
- urlParams.delete("__clerk_ticket");
251
- const newUrl = urlParams.toString() ? `${window.location.pathname}?${urlParams}` : window.location.pathname;
256
+ urlParams2.delete("__clerk_ticket");
257
+ const newUrl = urlParams2.toString() ? `${window.location.pathname}?${urlParams2}` : window.location.pathname;
252
258
  window.history.replaceState({}, "", newUrl);
253
259
  }
254
260
  } catch (err) {
@@ -281,6 +287,7 @@ var ClerkManager = class {
281
287
  * Check if user is signed in
282
288
  */
283
289
  isSignedIn() {
290
+ if (this.token) return true;
284
291
  const clerk = getClerk();
285
292
  return !!clerk?.user && !!clerk?.session;
286
293
  }
@@ -288,6 +295,22 @@ var ClerkManager = class {
288
295
  * Get current user info
289
296
  */
290
297
  getUser() {
298
+ if (this.token) {
299
+ try {
300
+ const parts = this.token.split(".");
301
+ if (parts.length === 3) {
302
+ const payload = JSON.parse(atob(parts[1].replace(/-/g, "+").replace(/_/g, "/")));
303
+ return {
304
+ id: payload.sub || "",
305
+ email: payload.email || "",
306
+ plan: payload.plan || payload.publicMetadata?.plan || "free",
307
+ publishableKey: payload.publishableKey || payload.publicMetadata?.publishableKey || ""
308
+ };
309
+ }
310
+ } catch (e) {
311
+ console.error("[DreamAPI] Failed to decode JWT:", e);
312
+ }
313
+ }
291
314
  const clerk = getClerk();
292
315
  if (!clerk?.user) return null;
293
316
  const user = clerk.user;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dream-api/sdk",
3
- "version": "0.1.26",
3
+ "version": "0.1.28",
4
4
  "description": "Official SDK for Dream API - Auth, billing, and usage tracking in one API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",