@mission_sciences/provider-sdk 0.2.0 → 0.3.0-dev.31ea3d4

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 (46) hide show
  1. package/README.md +1 -40
  2. package/dist/adapters/react/index.d.ts +3 -0
  3. package/dist/adapters/react/index.d.ts.map +1 -0
  4. package/dist/adapters/react/index.js +75 -0
  5. package/dist/adapters/react/index.js.map +1 -0
  6. package/dist/adapters/react/useMarketplaceSession.d.ts +30 -0
  7. package/dist/adapters/react/useMarketplaceSession.d.ts.map +1 -0
  8. package/dist/adapters/vue/index.d.ts +3 -0
  9. package/dist/adapters/vue/index.d.ts.map +1 -0
  10. package/dist/adapters/vue/index.js +56 -0
  11. package/dist/adapters/vue/index.js.map +1 -0
  12. package/dist/adapters/vue/useMarketplaceSession.d.ts +76 -0
  13. package/dist/adapters/vue/useMarketplaceSession.d.ts.map +1 -0
  14. package/dist/core/HeartbeatManager.d.ts +43 -0
  15. package/dist/core/HeartbeatManager.d.ts.map +1 -0
  16. package/dist/core/JWKSValidator.d.ts +26 -0
  17. package/dist/core/JWKSValidator.d.ts.map +1 -0
  18. package/dist/core/JWTParser.d.ts +46 -0
  19. package/dist/core/JWTParser.d.ts.map +1 -0
  20. package/dist/core/MarketplaceSDK.d.ts +111 -0
  21. package/dist/core/MarketplaceSDK.d.ts.map +1 -0
  22. package/dist/core/PurchaseStateManager.d.ts +28 -0
  23. package/dist/core/PurchaseStateManager.d.ts.map +1 -0
  24. package/dist/core/TabSyncManager.d.ts +49 -0
  25. package/dist/core/TabSyncManager.d.ts.map +1 -0
  26. package/dist/core/TimerManager.d.ts +55 -0
  27. package/dist/core/TimerManager.d.ts.map +1 -0
  28. package/dist/index.d.ts +21 -769
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/marketplace-sdk.es.js +69 -4
  31. package/dist/marketplace-sdk.es.js.map +1 -1
  32. package/dist/marketplace-sdk.umd.js +1 -1
  33. package/dist/marketplace-sdk.umd.js.map +1 -1
  34. package/dist/styles/theme.d.ts +89 -0
  35. package/dist/styles/theme.d.ts.map +1 -0
  36. package/dist/types/index.d.ts +254 -0
  37. package/dist/types/index.d.ts.map +1 -0
  38. package/dist/ui/SessionHeader.d.ts +46 -0
  39. package/dist/ui/SessionHeader.d.ts.map +1 -0
  40. package/dist/ui/WarningModal.d.ts +39 -0
  41. package/dist/ui/WarningModal.d.ts.map +1 -0
  42. package/dist/utils/logger.d.ts +25 -0
  43. package/dist/utils/logger.d.ts.map +1 -0
  44. package/dist/utils/url.d.ts +12 -0
  45. package/dist/utils/url.d.ts.map +1 -0
  46. package/package.json +17 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGxF,YAAY,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
@@ -20,6 +20,12 @@ class SDKError extends Error {
20
20
  }
21
21
  }
22
22
  }
23
+ var PurchaseState = /* @__PURE__ */ ((PurchaseState2) => {
24
+ PurchaseState2["AVAILABLE"] = "AVAILABLE";
25
+ PurchaseState2["PRIVY_REQUIRED"] = "PRIVY_REQUIRED";
26
+ PurchaseState2["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
27
+ return PurchaseState2;
28
+ })(PurchaseState || {});
23
29
  class JWTParser {
24
30
  /**
25
31
  * Decode JWT payload without verification
@@ -2017,6 +2023,55 @@ class TabSyncManager {
2017
2023
  this.logger.log("Tab sync destroyed");
2018
2024
  }
2019
2025
  }
2026
+ class PurchaseStateManager {
2027
+ constructor(config) {
2028
+ this.config = {
2029
+ timeout: 5e3,
2030
+ ...config
2031
+ };
2032
+ }
2033
+ /**
2034
+ * Check purchase state for a specific item
2035
+ * Filters raw API response to expose only safe data to publisher apps
2036
+ */
2037
+ async checkItemPurchaseState(itemId) {
2038
+ try {
2039
+ const response = await fetch(`${this.config.apiEndpoint}/items/${itemId}/purchase-state`, {
2040
+ method: "GET",
2041
+ headers: {
2042
+ "Content-Type": "application/json"
2043
+ },
2044
+ signal: AbortSignal.timeout(this.config.timeout)
2045
+ });
2046
+ if (!response.ok) {
2047
+ throw new Error(`API request failed: ${response.status} ${response.statusText}`);
2048
+ }
2049
+ const rawData = await response.json();
2050
+ return this.filterPurchaseStateResponse(rawData);
2051
+ } catch (error) {
2052
+ if (error instanceof Error) {
2053
+ throw error;
2054
+ }
2055
+ throw new Error("Unknown error occurred while checking purchase state");
2056
+ }
2057
+ }
2058
+ /**
2059
+ * Filters raw API response to expose only safe data to publisher apps
2060
+ * CRITICAL: Raw privyEligibility map must NEVER be exposed to apps
2061
+ */
2062
+ filterPurchaseStateResponse(rawResponse) {
2063
+ const filteredResponse = {
2064
+ state: rawResponse.state
2065
+ };
2066
+ if (rawResponse.state === PurchaseState.PRIVY_REQUIRED && rawResponse.privyEligibility) {
2067
+ const requiredLevels = Object.values(rawResponse.privyEligibility).filter((details) => details.requiresUpgrade).map((details) => details.requiredLevel);
2068
+ if (requiredLevels.length > 0) {
2069
+ filteredResponse.requiredLevel = Math.max(...requiredLevels);
2070
+ }
2071
+ }
2072
+ return filteredResponse;
2073
+ }
2074
+ }
2020
2075
  const lightTheme = {
2021
2076
  colors: {
2022
2077
  // Background
@@ -2514,16 +2569,17 @@ class MarketplaceSDK {
2514
2569
  this.jwtToken = null;
2515
2570
  this.endReason = "manual";
2516
2571
  this.config = {
2517
- jwksUri: config.jwksUri || "https://api.generalwisdom.com/.well-known/jwks.json",
2572
+ jwksUri: config.jwksUri || "https://api.platform.generalwisdom.com/.well-known/jwks.json",
2518
2573
  jwtParamName: config.jwtParamName || "gwSession",
2519
- apiEndpoint: config.apiEndpoint || "http://localhost:3000",
2574
+ apiEndpoint: config.apiEndpoint || "https://api.platform.generalwisdom.com",
2575
+ jwtIssuer: config.jwtIssuer || "generalwisdom.com",
2520
2576
  debug: config.debug ?? false,
2521
2577
  autoStart: config.autoStart ?? true,
2522
2578
  warningThresholdSeconds: config.warningThresholdSeconds ?? 300,
2523
2579
  customStyles: config.customStyles ?? {},
2524
2580
  themeMode: config.themeMode ?? "light",
2525
2581
  applicationId: config.applicationId ?? "",
2526
- marketplaceUrl: config.marketplaceUrl ?? "https://d3p2yqofgy75sz.cloudfront.net/",
2582
+ marketplaceUrl: config.marketplaceUrl ?? "https://platform.generalwisdom.com/",
2527
2583
  // Phase 2 options
2528
2584
  enableHeartbeat: config.enableHeartbeat ?? false,
2529
2585
  heartbeatIntervalSeconds: config.heartbeatIntervalSeconds ?? 30,
@@ -2536,6 +2592,9 @@ class MarketplaceSDK {
2536
2592
  };
2537
2593
  this.validator = new JWKSValidator(this.config.jwksUri, this.config.debug);
2538
2594
  this.logger = new Logger(this.config.debug, "[MarketplaceSDK]");
2595
+ this.purchaseStateManager = new PurchaseStateManager({
2596
+ apiEndpoint: this.config.apiEndpoint
2597
+ });
2539
2598
  this.logger.info("SDK initialized with config:", {
2540
2599
  jwksUri: this.config.jwksUri,
2541
2600
  jwtParamName: this.config.jwtParamName,
@@ -2624,7 +2683,7 @@ class MarketplaceSDK {
2624
2683
  this.logger.log("Using JWKS validation");
2625
2684
  verifiedClaims = await this.validator.verify(
2626
2685
  this.jwtToken,
2627
- "generalwisdom.com",
2686
+ this.config.jwtIssuer,
2628
2687
  this.config.applicationId || void 0
2629
2688
  );
2630
2689
  }
@@ -3045,6 +3104,12 @@ class MarketplaceSDK {
3045
3104
  isTimerRunning() {
3046
3105
  return this.timer?.isRunning() ?? false;
3047
3106
  }
3107
+ /**
3108
+ * Get purchase state manager for item purchase state checking
3109
+ */
3110
+ getPurchaseStateManager() {
3111
+ return this.purchaseStateManager;
3112
+ }
3048
3113
  /**
3049
3114
  * Cleanup and destroy SDK instance
3050
3115
  */