autumn-js 0.0.81 → 0.0.82

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 (163) hide show
  1. package/dist/libraries/backend/better-auth.js +18 -2
  2. package/dist/libraries/backend/better-auth.mjs +7 -7
  3. package/dist/libraries/backend/{chunk-6YOFMAEQ.mjs → chunk-52OTZ4SQ.mjs} +16 -6
  4. package/dist/libraries/backend/{chunk-HDGYVYU5.mjs → chunk-A46IKTLH.mjs} +1 -1
  5. package/dist/libraries/backend/{chunk-7NHMUGUP.mjs → chunk-DG3FZZQH.mjs} +1 -1
  6. package/dist/libraries/backend/{chunk-MIWNIVVB.mjs → chunk-J3QM5KFT.mjs} +1 -1
  7. package/dist/libraries/backend/{chunk-PCYIWHGN.mjs → chunk-UJQBHXII.mjs} +1 -1
  8. package/dist/libraries/backend/{chunk-3VWJMYUQ.mjs → chunk-VCEQ3QBX.mjs} +8 -2
  9. package/dist/libraries/backend/{chunk-CPLIRBCA.mjs → chunk-WDRHQJKV.mjs} +1 -1
  10. package/dist/libraries/backend/express.js +18 -2
  11. package/dist/libraries/backend/express.mjs +7 -7
  12. package/dist/libraries/backend/fastify.js +18 -2
  13. package/dist/libraries/backend/fastify.mjs +7 -7
  14. package/dist/libraries/backend/hono.js +18 -2
  15. package/dist/libraries/backend/hono.mjs +7 -7
  16. package/dist/libraries/backend/next.js +18 -2
  17. package/dist/libraries/backend/next.mjs +7 -7
  18. package/dist/libraries/backend/react-router.js +18 -2
  19. package/dist/libraries/backend/react-router.mjs +7 -7
  20. package/dist/libraries/backend/remix_dep.js +18 -2
  21. package/dist/libraries/backend/remix_dep.mjs +7 -7
  22. package/dist/libraries/backend/routes/backendRouter.js +18 -2
  23. package/dist/libraries/backend/routes/backendRouter.mjs +7 -7
  24. package/dist/libraries/backend/routes/entityRoutes.js +8 -2
  25. package/dist/libraries/backend/routes/entityRoutes.mjs +3 -3
  26. package/dist/libraries/backend/routes/genRoutes.js +8 -2
  27. package/dist/libraries/backend/routes/genRoutes.mjs +3 -3
  28. package/dist/libraries/backend/routes/productRoutes.js +8 -2
  29. package/dist/libraries/backend/routes/productRoutes.mjs +3 -3
  30. package/dist/libraries/backend/routes/referralRoutes.js +8 -2
  31. package/dist/libraries/backend/routes/referralRoutes.mjs +3 -3
  32. package/dist/libraries/backend/supabase.js +18 -2
  33. package/dist/libraries/backend/supabase.mjs +7 -7
  34. package/dist/libraries/backend/tanstack.js +18 -2
  35. package/dist/libraries/backend/tanstack.mjs +7 -7
  36. package/dist/libraries/backend/utils/backendRes.js +8 -2
  37. package/dist/libraries/backend/utils/backendRes.mjs +1 -1
  38. package/dist/libraries/backend/utils/withAuth.js +8 -2
  39. package/dist/libraries/backend/utils/withAuth.mjs +2 -2
  40. package/dist/libraries/react/AutumnContext.d.mts +4 -4
  41. package/dist/libraries/react/AutumnContext.d.ts +4 -4
  42. package/dist/libraries/react/AutumnContext.js +83 -5
  43. package/dist/libraries/react/AutumnContext.mjs +7 -7
  44. package/dist/libraries/react/BaseAutumnProvider.d.mts +4 -4
  45. package/dist/libraries/react/BaseAutumnProvider.d.ts +4 -4
  46. package/dist/libraries/react/BaseAutumnProvider.js +83 -5
  47. package/dist/libraries/react/BaseAutumnProvider.mjs +11 -11
  48. package/dist/libraries/react/{ReactAutumnClient-DglSetDZ.d.mts → ReactAutumnClient-Cj2h9TXJ.d.mts} +15 -5
  49. package/dist/libraries/react/{ReactAutumnClient-CD6wjJoS.d.ts → ReactAutumnClient-DS-MPWXt.d.ts} +15 -5
  50. package/dist/libraries/react/ReactAutumnProvider.d.mts +1 -1
  51. package/dist/libraries/react/ReactAutumnProvider.d.ts +1 -1
  52. package/dist/libraries/react/ReactAutumnProvider.js +84 -13
  53. package/dist/libraries/react/ReactAutumnProvider.mjs +12 -12
  54. package/dist/libraries/react/{chunk-6XKT4CR3.mjs → chunk-6ULRUGQO.mjs} +2 -2
  55. package/dist/libraries/react/{chunk-4DZUJMZF.mjs → chunk-CQMTU2M4.mjs} +2 -2
  56. package/dist/libraries/react/{chunk-KOX2RKIK.mjs → chunk-EWMKQDQ6.mjs} +2 -2
  57. package/dist/libraries/react/{chunk-ELPGPLUJ.mjs → chunk-GEIECHWI.mjs} +2 -2
  58. package/dist/libraries/react/{chunk-XNJDRLWX.mjs → chunk-JOY6LN3M.mjs} +2 -2
  59. package/dist/libraries/react/chunk-JVCOY7ZL.mjs +22 -0
  60. package/dist/libraries/react/{chunk-ZLYUPJN5.mjs → chunk-KVGD37VB.mjs} +3 -3
  61. package/dist/libraries/react/{chunk-DSHLYZWS.mjs → chunk-L55GLFAX.mjs} +1 -1
  62. package/dist/libraries/react/{chunk-DFKCNRXM.mjs → chunk-MH2YTNJL.mjs} +1 -1
  63. package/dist/libraries/react/{chunk-LLOLCHBX.mjs → chunk-S4VDT54B.mjs} +2 -2
  64. package/dist/libraries/react/{chunk-QEYI3IGZ.mjs → chunk-SCT4E6YW.mjs} +2 -2
  65. package/dist/libraries/react/{chunk-RRXCG32N.mjs → chunk-UDRQNZZS.mjs} +255 -48
  66. package/dist/libraries/react/{chunk-I2TAKPWB.mjs → chunk-UO2PX7P3.mjs} +4 -11
  67. package/dist/libraries/react/{chunk-EI2TXOE2.mjs → chunk-W2ZI3EI4.mjs} +7 -7
  68. package/dist/libraries/react/client/ReactAutumnClient.d.mts +4 -4
  69. package/dist/libraries/react/client/ReactAutumnClient.d.ts +4 -4
  70. package/dist/libraries/react/client/ReactAutumnClient.js +83 -5
  71. package/dist/libraries/react/client/ReactAutumnClient.mjs +6 -6
  72. package/dist/libraries/react/client/clientCompMethods.d.mts +4 -4
  73. package/dist/libraries/react/client/clientCompMethods.d.ts +4 -4
  74. package/dist/libraries/react/client/clientCusMethods.d.mts +4 -4
  75. package/dist/libraries/react/client/clientCusMethods.d.ts +4 -4
  76. package/dist/libraries/react/client/clientEntityMethods.d.mts +4 -4
  77. package/dist/libraries/react/client/clientEntityMethods.d.ts +4 -4
  78. package/dist/libraries/react/client/clientGenMethods.d.mts +4 -4
  79. package/dist/libraries/react/client/clientGenMethods.d.ts +4 -4
  80. package/dist/libraries/react/client/clientProdMethods.d.mts +4 -4
  81. package/dist/libraries/react/client/clientProdMethods.d.ts +4 -4
  82. package/dist/libraries/react/client/clientReferralMethods.d.mts +4 -4
  83. package/dist/libraries/react/client/clientReferralMethods.d.ts +4 -4
  84. package/dist/libraries/react/components/attach-dialog/attach-dialog-synced.d.mts +1 -1
  85. package/dist/libraries/react/components/attach-dialog/attach-dialog-synced.d.ts +1 -1
  86. package/dist/libraries/react/components/attach-dialog/attach-dialog-synced.js +94 -17
  87. package/dist/libraries/react/components/attach-dialog/attach-dialog-synced.mjs +19 -19
  88. package/dist/libraries/react/components/attach-dialog/lib/attach-content.d.mts +1 -1
  89. package/dist/libraries/react/components/attach-dialog/lib/attach-content.d.ts +1 -1
  90. package/dist/libraries/react/components/check-dialog/check-dialog-synced.d.mts +1 -1
  91. package/dist/libraries/react/components/check-dialog/check-dialog-synced.d.ts +1 -1
  92. package/dist/libraries/react/components/check-dialog/lib/check-content.d.mts +1 -1
  93. package/dist/libraries/react/components/check-dialog/lib/check-content.d.ts +1 -1
  94. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.mts +1 -1
  95. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.ts +1 -1
  96. package/dist/libraries/react/components/pricing-table/pricing-table-synced.js +105 -28
  97. package/dist/libraries/react/components/pricing-table/pricing-table-synced.mjs +19 -19
  98. package/dist/libraries/react/components/ui/button.d.mts +1 -1
  99. package/dist/libraries/react/components/ui/button.d.ts +1 -1
  100. package/dist/libraries/react/{cusTypes-JFEvVZLp.d.ts → cusTypes-CO4FwQ_s.d.mts} +1 -1
  101. package/dist/libraries/react/{cusTypes-JFEvVZLp.d.mts → cusTypes-CO4FwQ_s.d.ts} +1 -1
  102. package/dist/libraries/react/{entTypes-CIemXnyX.d.mts → entTypes-DPTZOorv.d.mts} +1 -1
  103. package/dist/libraries/react/{entTypes-CJ3jqOWR.d.ts → entTypes-UxZ5bRqE.d.ts} +1 -1
  104. package/dist/libraries/react/errorUtils/logAuthError.d.mts +1 -6
  105. package/dist/libraries/react/errorUtils/logAuthError.d.ts +1 -6
  106. package/dist/libraries/react/errorUtils/logAuthError.js +10 -490
  107. package/dist/libraries/react/errorUtils/logAuthError.mjs +2 -15
  108. package/dist/libraries/react/hooks/handleAllowed.d.mts +2 -2
  109. package/dist/libraries/react/hooks/handleAllowed.d.ts +2 -2
  110. package/dist/libraries/react/hooks/useAutumn.d.mts +2 -2
  111. package/dist/libraries/react/hooks/useAutumn.d.ts +2 -2
  112. package/dist/libraries/react/hooks/useAutumn.js +83 -5
  113. package/dist/libraries/react/hooks/useAutumn.mjs +10 -10
  114. package/dist/libraries/react/hooks/useAutumnBase.d.mts +4 -4
  115. package/dist/libraries/react/hooks/useAutumnBase.d.ts +4 -4
  116. package/dist/libraries/react/hooks/useAutumnBase.js +83 -5
  117. package/dist/libraries/react/hooks/useAutumnBase.mjs +9 -9
  118. package/dist/libraries/react/hooks/useCustomer.d.mts +4 -4
  119. package/dist/libraries/react/hooks/useCustomer.d.ts +4 -4
  120. package/dist/libraries/react/hooks/useCustomer.js +83 -5
  121. package/dist/libraries/react/hooks/useCustomer.mjs +11 -11
  122. package/dist/libraries/react/hooks/useCustomerBase.d.mts +4 -4
  123. package/dist/libraries/react/hooks/useCustomerBase.d.ts +4 -4
  124. package/dist/libraries/react/hooks/useCustomerBase.js +83 -5
  125. package/dist/libraries/react/hooks/useCustomerBase.mjs +10 -10
  126. package/dist/libraries/react/hooks/useEntity.d.mts +3 -3
  127. package/dist/libraries/react/hooks/useEntity.d.ts +3 -3
  128. package/dist/libraries/react/hooks/useEntity.js +83 -5
  129. package/dist/libraries/react/hooks/useEntity.mjs +11 -11
  130. package/dist/libraries/react/hooks/useEntityBase.d.mts +4 -4
  131. package/dist/libraries/react/hooks/useEntityBase.d.ts +4 -4
  132. package/dist/libraries/react/hooks/useEntityBase.js +83 -5
  133. package/dist/libraries/react/hooks/useEntityBase.mjs +10 -10
  134. package/dist/libraries/react/hooks/usePricingTable.d.mts +1 -1
  135. package/dist/libraries/react/hooks/usePricingTable.d.ts +1 -1
  136. package/dist/libraries/react/hooks/usePricingTable.js +83 -5
  137. package/dist/libraries/react/hooks/usePricingTable.mjs +9 -9
  138. package/dist/libraries/react/hooks/usePricingTableBase.d.mts +4 -4
  139. package/dist/libraries/react/hooks/usePricingTableBase.d.ts +4 -4
  140. package/dist/libraries/react/hooks/usePricingTableBase.js +83 -5
  141. package/dist/libraries/react/hooks/usePricingTableBase.mjs +8 -8
  142. package/dist/libraries/react/hooks/useProductsBase.js +83 -5
  143. package/dist/libraries/react/hooks/useProductsBase.mjs +7 -7
  144. package/dist/libraries/react/index.js +108 -37
  145. package/dist/libraries/react/index.mjs +86 -15
  146. package/dist/libraries/react/{response-CCcWrbaE.d.mts → response-CxtkXvb4.d.mts} +2 -2
  147. package/dist/libraries/react/{response-BIBRaj58.d.ts → response-Z4Yeokd8.d.ts} +2 -2
  148. package/dist/next/client/NextAutumnClient.d.mts +12 -2
  149. package/dist/next/client/NextAutumnClient.d.ts +12 -2
  150. package/dist/next/client/hooks/useAutumn.d.mts +2 -2
  151. package/dist/next/client/hooks/useAutumn.d.ts +2 -2
  152. package/dist/next/client/hooks/useEntity.d.mts +1 -1
  153. package/dist/next/client/hooks/useEntity.d.ts +1 -1
  154. package/dist/next/index.d.mts +12 -2
  155. package/dist/next/index.d.ts +12 -2
  156. package/dist/sdk/index.d.mts +2 -1
  157. package/dist/sdk/index.d.ts +2 -1
  158. package/dist/sdk/index.js +8 -2
  159. package/dist/sdk/index.mjs +8 -2
  160. package/dist/utils/encryptUtils.js +8 -2
  161. package/dist/utils/encryptUtils.mjs +8 -2
  162. package/package.json +1 -1
  163. package/dist/libraries/react/chunk-ET534E5H.mjs +0 -152
@@ -88,6 +88,22 @@ var useDialog = (component) => {
88
88
  // src/libraries/react/hooks/useCustomerBase.tsx
89
89
  var import_swr2 = __toESM(require("swr"));
90
90
 
91
+ // src/libraries/react/errorUtils/logAuthError.ts
92
+ var logAuthError = async (response) => {
93
+ if (response.status === 401) {
94
+ let clonedResponse = response.clone();
95
+ let data = await clonedResponse.json();
96
+ if (data.message.includes("Missing authorization header")) {
97
+ console.error(`[Autumn] Missing authorization header.
98
+
99
+ Use the getBearerToken prop in <AutumnProvider /> to set the authorization header.
100
+ https://docs.useautumn.com/quickstart/quickstart#5-set-up-autumnprovider`);
101
+ return true;
102
+ }
103
+ }
104
+ return false;
105
+ };
106
+
91
107
  // src/sdk/error.ts
92
108
  var AutumnError = class _AutumnError extends Error {
93
109
  message;
@@ -340,12 +356,18 @@ var redeemReferralCode = async ({
340
356
  };
341
357
 
342
358
  // src/sdk/response.ts
343
- var toContainerResult = async ({ response, logger: logger2 }) => {
359
+ var toContainerResult = async ({
360
+ response,
361
+ logger: logger2,
362
+ logError = true
363
+ }) => {
344
364
  if (response.status < 200 || response.status >= 300) {
345
365
  let error;
346
366
  try {
347
367
  error = await response.json();
348
- logger2.error(`[Autumn] ${error.message}`);
368
+ if (logError) {
369
+ logger2.error(`[Autumn] ${error.message}`);
370
+ }
349
371
  } catch (error2) {
350
372
  throw error2;
351
373
  return {
@@ -691,7 +713,8 @@ var AutumnClient = class {
691
713
  getBearerToken;
692
714
  customerData;
693
715
  includeCredentials;
694
- // protected readonly pathPrefix?: string;
716
+ corsDetected;
717
+ corsSupportsCredentials;
695
718
  constructor({
696
719
  backendUrl,
697
720
  getBearerToken,
@@ -703,6 +726,55 @@ var AutumnClient = class {
703
726
  this.customerData = customerData;
704
727
  this.includeCredentials = includeCredentials;
705
728
  }
729
+ /**
730
+ * Detects if the backend supports CORS credentials by making an OPTIONS request
731
+ */
732
+ async detectCors() {
733
+ const testEndpoint = `${this.backendUrl}/api/autumn/cors`;
734
+ try {
735
+ await fetch(testEndpoint, {
736
+ method: "POST",
737
+ credentials: "include",
738
+ headers: { "Content-Type": "application/json" }
739
+ });
740
+ return { valid: true, includeCredentials: true };
741
+ } catch (error) {
742
+ try {
743
+ await fetch(testEndpoint, {
744
+ method: "POST",
745
+ credentials: "omit",
746
+ headers: { "Content-Type": "application/json" }
747
+ });
748
+ return { valid: true, includeCredentials: false };
749
+ } catch (error2) {
750
+ return { valid: false, includeCredentials: void 0 };
751
+ }
752
+ }
753
+ }
754
+ /**
755
+ * Automatically determines whether to include credentials based on CORS detection
756
+ */
757
+ async shouldIncludeCredentials() {
758
+ if (this.includeCredentials !== void 0) {
759
+ return this.includeCredentials;
760
+ }
761
+ try {
762
+ const corsResult = await this.detectCors();
763
+ if (corsResult.valid) {
764
+ console.warn(
765
+ `[Autumn] Detected CORS credentials: ${corsResult.includeCredentials}`
766
+ );
767
+ console.warn(
768
+ `[Autumn] To disable this warning, you can set includeCredentials={${corsResult.includeCredentials ? "true" : "false"}} in <AutumnProvider />`
769
+ );
770
+ this.includeCredentials = corsResult.includeCredentials;
771
+ }
772
+ return corsResult.includeCredentials || false;
773
+ } catch (error) {
774
+ console.error(`[Autumn] Error detecting CORS: ${error.message}`);
775
+ return false;
776
+ }
777
+ }
706
778
  async getHeaders() {
707
779
  let headers = {
708
780
  "Content-Type": "application/json"
@@ -726,14 +798,20 @@ var AutumnClient = class {
726
798
  ...body,
727
799
  customer_data: this.customerData || void 0
728
800
  }) : void 0;
801
+ const includeCredentials = await this.shouldIncludeCredentials();
729
802
  try {
730
803
  const response = await fetch(`${this.backendUrl}${path}`, {
731
804
  method,
732
805
  body,
733
806
  headers: await this.getHeaders(),
734
- credentials: this.includeCredentials ? "include" : void 0
807
+ credentials: includeCredentials ? "include" : "omit"
808
+ });
809
+ const loggedError = await logAuthError(response);
810
+ return await toContainerResult({
811
+ response,
812
+ logger: console,
813
+ logError: !loggedError
735
814
  });
736
- return await toContainerResult({ response, logger: console });
737
815
  } catch (error) {
738
816
  logFetchError({
739
817
  method,
@@ -1351,14 +1429,13 @@ function BaseAutumnProvider({
1351
1429
  }
1352
1430
 
1353
1431
  // src/libraries/react/ReactAutumnProvider.tsx
1354
- var import_react4 = require("react");
1355
1432
  var import_jsx_runtime2 = require("react/jsx-runtime");
1356
1433
  var ReactAutumnProvider = ({
1357
1434
  children,
1358
1435
  getBearerToken,
1359
1436
  backendUrl,
1360
1437
  customerData,
1361
- includeCredentials = true,
1438
+ includeCredentials,
1362
1439
  disableDialogs = false,
1363
1440
  authClient
1364
1441
  }) => {
@@ -1371,12 +1448,6 @@ var ReactAutumnProvider = ({
1371
1448
  customerData,
1372
1449
  includeCredentials
1373
1450
  });
1374
- const analyseAuthClient = async () => {
1375
- console.log("Auth client:", authClient);
1376
- };
1377
- (0, import_react4.useEffect)(() => {
1378
- analyseAuthClient();
1379
- }, [authClient]);
1380
1451
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1381
1452
  BaseAutumnProvider,
1382
1453
  {
@@ -1406,13 +1477,13 @@ var usePricingTable = (params) => {
1406
1477
 
1407
1478
  // src/libraries/react/hooks/useEntityBase.tsx
1408
1479
  var import_swr3 = __toESM(require("swr"));
1409
- var import_react5 = require("react");
1480
+ var import_react4 = require("react");
1410
1481
  var useEntityBase = ({
1411
1482
  entityId,
1412
1483
  params,
1413
1484
  AutumnContext: AutumnContext2
1414
1485
  }) => {
1415
- const { client } = (0, import_react5.useContext)(AutumnContext2);
1486
+ const { client } = (0, import_react4.useContext)(AutumnContext2);
1416
1487
  const queryKey = ["entity", entityId, params?.expand];
1417
1488
  const fetchEntity = async () => {
1418
1489
  if (!entityId) {
@@ -1486,7 +1557,7 @@ var useAutumn = () => {
1486
1557
  };
1487
1558
 
1488
1559
  // src/libraries/react/components/attach-dialog/attach-dialog-synced.tsx
1489
- var import_react9 = require("react");
1560
+ var import_react8 = require("react");
1490
1561
 
1491
1562
  // ../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
1492
1563
  function r(e) {
@@ -4227,7 +4298,7 @@ var Button = React3.forwardRef(
4227
4298
  Button.displayName = "Button";
4228
4299
 
4229
4300
  // ../node_modules/.pnpm/lucide-react@0.523.0_react@18.3.1/node_modules/lucide-react/dist/esm/createLucideIcon.js
4230
- var import_react7 = require("react");
4301
+ var import_react6 = require("react");
4231
4302
 
4232
4303
  // ../node_modules/.pnpm/lucide-react@0.523.0_react@18.3.1/node_modules/lucide-react/dist/esm/shared/src/utils.js
4233
4304
  var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
@@ -4251,7 +4322,7 @@ var hasA11yProp = (props) => {
4251
4322
  };
4252
4323
 
4253
4324
  // ../node_modules/.pnpm/lucide-react@0.523.0_react@18.3.1/node_modules/lucide-react/dist/esm/Icon.js
4254
- var import_react6 = require("react");
4325
+ var import_react5 = require("react");
4255
4326
 
4256
4327
  // ../node_modules/.pnpm/lucide-react@0.523.0_react@18.3.1/node_modules/lucide-react/dist/esm/defaultAttributes.js
4257
4328
  var defaultAttributes = {
@@ -4267,7 +4338,7 @@ var defaultAttributes = {
4267
4338
  };
4268
4339
 
4269
4340
  // ../node_modules/.pnpm/lucide-react@0.523.0_react@18.3.1/node_modules/lucide-react/dist/esm/Icon.js
4270
- var Icon = (0, import_react6.forwardRef)(
4341
+ var Icon = (0, import_react5.forwardRef)(
4271
4342
  ({
4272
4343
  color = "currentColor",
4273
4344
  size = 24,
@@ -4277,7 +4348,7 @@ var Icon = (0, import_react6.forwardRef)(
4277
4348
  children,
4278
4349
  iconNode,
4279
4350
  ...rest
4280
- }, ref) => (0, import_react6.createElement)(
4351
+ }, ref) => (0, import_react5.createElement)(
4281
4352
  "svg",
4282
4353
  {
4283
4354
  ref,
@@ -4291,7 +4362,7 @@ var Icon = (0, import_react6.forwardRef)(
4291
4362
  ...rest
4292
4363
  },
4293
4364
  [
4294
- ...iconNode.map(([tag, attrs]) => (0, import_react6.createElement)(tag, attrs)),
4365
+ ...iconNode.map(([tag, attrs]) => (0, import_react5.createElement)(tag, attrs)),
4295
4366
  ...Array.isArray(children) ? children : [children]
4296
4367
  ]
4297
4368
  )
@@ -4299,8 +4370,8 @@ var Icon = (0, import_react6.forwardRef)(
4299
4370
 
4300
4371
  // ../node_modules/.pnpm/lucide-react@0.523.0_react@18.3.1/node_modules/lucide-react/dist/esm/createLucideIcon.js
4301
4372
  var createLucideIcon = (iconName, iconNode) => {
4302
- const Component = (0, import_react7.forwardRef)(
4303
- ({ className, ...props }, ref) => (0, import_react7.createElement)(Icon, {
4373
+ const Component = (0, import_react6.forwardRef)(
4374
+ ({ className, ...props }, ref) => (0, import_react6.createElement)(Icon, {
4304
4375
  ref,
4305
4376
  iconNode,
4306
4377
  className: mergeClasses(
@@ -5211,9 +5282,9 @@ function assignRef(ref, value) {
5211
5282
  }
5212
5283
 
5213
5284
  // ../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.14_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useRef.js
5214
- var import_react8 = require("react");
5285
+ var import_react7 = require("react");
5215
5286
  function useCallbackRef2(initialValue, callback) {
5216
- var ref = (0, import_react8.useState)(function() {
5287
+ var ref = (0, import_react7.useState)(function() {
5217
5288
  return {
5218
5289
  // value
5219
5290
  value: initialValue,
@@ -6511,8 +6582,8 @@ var getAttachContent = (preview) => {
6511
6582
  var import_jsx_runtime13 = require("react/jsx-runtime");
6512
6583
  function AttachDialog(params) {
6513
6584
  const { attach } = useCustomer();
6514
- const [loading, setLoading] = (0, import_react9.useState)(false);
6515
- const [optionsInput, setOptionsInput] = (0, import_react9.useState)(
6585
+ const [loading, setLoading] = (0, import_react8.useState)(false);
6586
+ const [optionsInput, setOptionsInput] = (0, import_react8.useState)(
6516
6587
  params?.preview?.options || []
6517
6588
  );
6518
6589
  const getTotalPrice = () => {
@@ -6524,7 +6595,7 @@ function AttachDialog(params) {
6524
6595
  });
6525
6596
  return sum;
6526
6597
  };
6527
- (0, import_react9.useEffect)(() => {
6598
+ (0, import_react8.useEffect)(() => {
6528
6599
  setOptionsInput(params?.preview?.options || []);
6529
6600
  }, [params?.preview?.options]);
6530
6601
  if (!params || !params.preview) {
@@ -6698,7 +6769,7 @@ var TotalPrice = ({ children }) => {
6698
6769
  };
6699
6770
 
6700
6771
  // src/libraries/react/components/check-dialog/check-dialog-synced.tsx
6701
- var import_react10 = require("react");
6772
+ var import_react9 = require("react");
6702
6773
 
6703
6774
  // src/libraries/react/components/check-dialog/lib/check-content.tsx
6704
6775
  var getCheckContent = (preview) => {
@@ -6748,7 +6819,7 @@ var getCheckContent = (preview) => {
6748
6819
  // src/libraries/react/components/check-dialog/check-dialog-synced.tsx
6749
6820
  var import_jsx_runtime14 = require("react/jsx-runtime");
6750
6821
  function CheckDialog(params) {
6751
- const [loading] = (0, import_react10.useState)(false);
6822
+ const [loading] = (0, import_react9.useState)(false);
6752
6823
  if (!params || !params.preview) {
6753
6824
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {});
6754
6825
  }
@@ -6776,8 +6847,8 @@ function CheckDialog(params) {
6776
6847
  }
6777
6848
 
6778
6849
  // src/libraries/react/components/pricing-table/pricing-table-synced.tsx
6779
- var import_react11 = __toESM(require("react"));
6780
- var import_react12 = require("react");
6850
+ var import_react10 = __toESM(require("react"));
6851
+ var import_react11 = require("react");
6781
6852
 
6782
6853
  // src/libraries/react/components/ui/switch.tsx
6783
6854
  var React31 = __toESM(require("react"));
@@ -7074,7 +7145,7 @@ function PricingTable({
7074
7145
  productDetails
7075
7146
  }) {
7076
7147
  const { attach } = useCustomer();
7077
- const [isAnnual, setIsAnnual] = (0, import_react12.useState)(false);
7148
+ const [isAnnual, setIsAnnual] = (0, import_react11.useState)(false);
7078
7149
  const { products, isLoading, error } = usePricingTable({ productDetails });
7079
7150
  if (isLoading) {
7080
7151
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: loadingStyles, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(LoaderCircle, { style: spinnerStyles }) });
@@ -7131,7 +7202,7 @@ function PricingTable({
7131
7202
  }
7132
7203
  ) });
7133
7204
  }
7134
- var PricingTableContext = (0, import_react12.createContext)({
7205
+ var PricingTableContext = (0, import_react11.createContext)({
7135
7206
  isAnnualToggle: false,
7136
7207
  setIsAnnualToggle: () => {
7137
7208
  },
@@ -7139,7 +7210,7 @@ var PricingTableContext = (0, import_react12.createContext)({
7139
7210
  showFeatures: true
7140
7211
  });
7141
7212
  var usePricingTableContext = (componentName) => {
7142
- const context = (0, import_react12.useContext)(PricingTableContext);
7213
+ const context = (0, import_react11.useContext)(PricingTableContext);
7143
7214
  if (context === void 0) {
7144
7215
  throw new Error(`${componentName} must be used within <PricingTable />`);
7145
7216
  }
@@ -7309,8 +7380,8 @@ var PricingFeatureList = ({
7309
7380
  )) })
7310
7381
  ] });
7311
7382
  };
7312
- var PricingCardButton = import_react11.default.forwardRef(({ recommended, children, className, onClick, ...props }, ref) => {
7313
- const [loading, setLoading] = (0, import_react12.useState)(false);
7383
+ var PricingCardButton = import_react10.default.forwardRef(({ recommended, children, className, onClick, ...props }, ref) => {
7384
+ const [loading, setLoading] = (0, import_react11.useState)(false);
7314
7385
  const handleClick = async (e) => {
7315
7386
  setLoading(true);
7316
7387
  try {
@@ -46,6 +46,22 @@ var useDialog = (component) => {
46
46
  // src/libraries/react/hooks/useCustomerBase.tsx
47
47
  import useSWR2 from "swr";
48
48
 
49
+ // src/libraries/react/errorUtils/logAuthError.ts
50
+ var logAuthError = async (response) => {
51
+ if (response.status === 401) {
52
+ let clonedResponse = response.clone();
53
+ let data = await clonedResponse.json();
54
+ if (data.message.includes("Missing authorization header")) {
55
+ console.error(`[Autumn] Missing authorization header.
56
+
57
+ Use the getBearerToken prop in <AutumnProvider /> to set the authorization header.
58
+ https://docs.useautumn.com/quickstart/quickstart#5-set-up-autumnprovider`);
59
+ return true;
60
+ }
61
+ }
62
+ return false;
63
+ };
64
+
49
65
  // src/sdk/error.ts
50
66
  var AutumnError = class _AutumnError extends Error {
51
67
  message;
@@ -298,12 +314,18 @@ var redeemReferralCode = async ({
298
314
  };
299
315
 
300
316
  // src/sdk/response.ts
301
- var toContainerResult = async ({ response, logger: logger2 }) => {
317
+ var toContainerResult = async ({
318
+ response,
319
+ logger: logger2,
320
+ logError = true
321
+ }) => {
302
322
  if (response.status < 200 || response.status >= 300) {
303
323
  let error;
304
324
  try {
305
325
  error = await response.json();
306
- logger2.error(`[Autumn] ${error.message}`);
326
+ if (logError) {
327
+ logger2.error(`[Autumn] ${error.message}`);
328
+ }
307
329
  } catch (error2) {
308
330
  throw error2;
309
331
  return {
@@ -649,7 +671,8 @@ var AutumnClient = class {
649
671
  getBearerToken;
650
672
  customerData;
651
673
  includeCredentials;
652
- // protected readonly pathPrefix?: string;
674
+ corsDetected;
675
+ corsSupportsCredentials;
653
676
  constructor({
654
677
  backendUrl,
655
678
  getBearerToken,
@@ -661,6 +684,55 @@ var AutumnClient = class {
661
684
  this.customerData = customerData;
662
685
  this.includeCredentials = includeCredentials;
663
686
  }
687
+ /**
688
+ * Detects if the backend supports CORS credentials by making an OPTIONS request
689
+ */
690
+ async detectCors() {
691
+ const testEndpoint = `${this.backendUrl}/api/autumn/cors`;
692
+ try {
693
+ await fetch(testEndpoint, {
694
+ method: "POST",
695
+ credentials: "include",
696
+ headers: { "Content-Type": "application/json" }
697
+ });
698
+ return { valid: true, includeCredentials: true };
699
+ } catch (error) {
700
+ try {
701
+ await fetch(testEndpoint, {
702
+ method: "POST",
703
+ credentials: "omit",
704
+ headers: { "Content-Type": "application/json" }
705
+ });
706
+ return { valid: true, includeCredentials: false };
707
+ } catch (error2) {
708
+ return { valid: false, includeCredentials: void 0 };
709
+ }
710
+ }
711
+ }
712
+ /**
713
+ * Automatically determines whether to include credentials based on CORS detection
714
+ */
715
+ async shouldIncludeCredentials() {
716
+ if (this.includeCredentials !== void 0) {
717
+ return this.includeCredentials;
718
+ }
719
+ try {
720
+ const corsResult = await this.detectCors();
721
+ if (corsResult.valid) {
722
+ console.warn(
723
+ `[Autumn] Detected CORS credentials: ${corsResult.includeCredentials}`
724
+ );
725
+ console.warn(
726
+ `[Autumn] To disable this warning, you can set includeCredentials={${corsResult.includeCredentials ? "true" : "false"}} in <AutumnProvider />`
727
+ );
728
+ this.includeCredentials = corsResult.includeCredentials;
729
+ }
730
+ return corsResult.includeCredentials || false;
731
+ } catch (error) {
732
+ console.error(`[Autumn] Error detecting CORS: ${error.message}`);
733
+ return false;
734
+ }
735
+ }
664
736
  async getHeaders() {
665
737
  let headers = {
666
738
  "Content-Type": "application/json"
@@ -684,14 +756,20 @@ var AutumnClient = class {
684
756
  ...body,
685
757
  customer_data: this.customerData || void 0
686
758
  }) : void 0;
759
+ const includeCredentials = await this.shouldIncludeCredentials();
687
760
  try {
688
761
  const response = await fetch(`${this.backendUrl}${path}`, {
689
762
  method,
690
763
  body,
691
764
  headers: await this.getHeaders(),
692
- credentials: this.includeCredentials ? "include" : void 0
765
+ credentials: includeCredentials ? "include" : "omit"
766
+ });
767
+ const loggedError = await logAuthError(response);
768
+ return await toContainerResult({
769
+ response,
770
+ logger: console,
771
+ logError: !loggedError
693
772
  });
694
- return await toContainerResult({ response, logger: console });
695
773
  } catch (error) {
696
774
  logFetchError({
697
775
  method,
@@ -1309,14 +1387,13 @@ function BaseAutumnProvider({
1309
1387
  }
1310
1388
 
1311
1389
  // src/libraries/react/ReactAutumnProvider.tsx
1312
- import { useEffect as useEffect3 } from "react";
1313
1390
  import { jsx as jsx2 } from "react/jsx-runtime";
1314
1391
  var ReactAutumnProvider = ({
1315
1392
  children,
1316
1393
  getBearerToken,
1317
1394
  backendUrl,
1318
1395
  customerData,
1319
- includeCredentials = true,
1396
+ includeCredentials,
1320
1397
  disableDialogs = false,
1321
1398
  authClient
1322
1399
  }) => {
@@ -1329,12 +1406,6 @@ var ReactAutumnProvider = ({
1329
1406
  customerData,
1330
1407
  includeCredentials
1331
1408
  });
1332
- const analyseAuthClient = async () => {
1333
- console.log("Auth client:", authClient);
1334
- };
1335
- useEffect3(() => {
1336
- analyseAuthClient();
1337
- }, [authClient]);
1338
1409
  return /* @__PURE__ */ jsx2(
1339
1410
  BaseAutumnProvider,
1340
1411
  {
@@ -1444,7 +1515,7 @@ var useAutumn = () => {
1444
1515
  };
1445
1516
 
1446
1517
  // src/libraries/react/components/attach-dialog/attach-dialog-synced.tsx
1447
- import { useEffect as useEffect17, useState as useState12 } from "react";
1518
+ import { useEffect as useEffect16, useState as useState12 } from "react";
1448
1519
 
1449
1520
  // ../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
1450
1521
  function r(e) {
@@ -6482,7 +6553,7 @@ function AttachDialog(params) {
6482
6553
  });
6483
6554
  return sum;
6484
6555
  };
6485
- useEffect17(() => {
6556
+ useEffect16(() => {
6486
6557
  setOptionsInput(params?.preview?.options || []);
6487
6558
  }, [params?.preview?.options]);
6488
6559
  if (!params || !params.preview) {
@@ -1,4 +1,4 @@
1
- import { C as CustomerData, j as CheckFeatureResult, k as CheckProductResult } from './cusTypes-JFEvVZLp.mjs';
1
+ import { C as CustomerData, j as CheckFeatureResult, k as CheckProductResult } from './cusTypes-CO4FwQ_s.mjs';
2
2
  import { A as AutumnError } from './error-DHbclCVh.mjs';
3
3
 
4
4
  interface CancelResult {
@@ -40,4 +40,4 @@ type Failure<E> = {
40
40
  type Result<T, E> = Success<T> | Failure<E>;
41
41
  type AutumnPromise<T> = Promise<Result<T, AutumnError>>;
42
42
 
43
- export type { AttachResult as A, CheckResult as C, Result as R, SetupPaymentResult as S, TrackResult as T, AutumnPromise as a, CancelResult as b };
43
+ export type { AutumnPromise as A, CancelResult as C, Result as R, SetupPaymentResult as S, TrackResult as T, AttachResult as a, CheckResult as b };
@@ -1,4 +1,4 @@
1
- import { C as CustomerData, j as CheckFeatureResult, k as CheckProductResult } from './cusTypes-JFEvVZLp.js';
1
+ import { C as CustomerData, j as CheckFeatureResult, k as CheckProductResult } from './cusTypes-CO4FwQ_s.js';
2
2
  import { A as AutumnError } from './error-DHbclCVh.js';
3
3
 
4
4
  interface CancelResult {
@@ -40,4 +40,4 @@ type Failure<E> = {
40
40
  type Result<T, E> = Success<T> | Failure<E>;
41
41
  type AutumnPromise<T> = Promise<Result<T, AutumnError>>;
42
42
 
43
- export type { AttachResult as A, CheckResult as C, Result as R, SetupPaymentResult as S, TrackResult as T, AutumnPromise as a, CancelResult as b };
43
+ export type { AutumnPromise as A, CancelResult as C, Result as R, SetupPaymentResult as S, TrackResult as T, AttachResult as a, CheckResult as b };
@@ -29,11 +29,21 @@ interface AutumnClientConfig {
29
29
  includeCredentials?: boolean;
30
30
  }
31
31
  declare class AutumnClient {
32
- protected readonly backendUrl?: string;
32
+ readonly backendUrl?: string;
33
33
  protected readonly getBearerToken?: () => Promise<string | null | undefined>;
34
34
  protected readonly customerData?: CustomerData;
35
- protected readonly includeCredentials?: boolean;
35
+ protected includeCredentials?: boolean;
36
+ private corsDetected?;
37
+ private corsSupportsCredentials?;
36
38
  constructor({ backendUrl, getBearerToken, customerData, includeCredentials, }: AutumnClientConfig);
39
+ /**
40
+ * Detects if the backend supports CORS credentials by making an OPTIONS request
41
+ */
42
+ private detectCors;
43
+ /**
44
+ * Automatically determines whether to include credentials based on CORS detection
45
+ */
46
+ private shouldIncludeCredentials;
37
47
  getHeaders(): Promise<any>;
38
48
  handleFetch({ path, method, body, }: {
39
49
  path: string;
@@ -29,11 +29,21 @@ interface AutumnClientConfig {
29
29
  includeCredentials?: boolean;
30
30
  }
31
31
  declare class AutumnClient {
32
- protected readonly backendUrl?: string;
32
+ readonly backendUrl?: string;
33
33
  protected readonly getBearerToken?: () => Promise<string | null | undefined>;
34
34
  protected readonly customerData?: CustomerData;
35
- protected readonly includeCredentials?: boolean;
35
+ protected includeCredentials?: boolean;
36
+ private corsDetected?;
37
+ private corsSupportsCredentials?;
36
38
  constructor({ backendUrl, getBearerToken, customerData, includeCredentials, }: AutumnClientConfig);
39
+ /**
40
+ * Detects if the backend supports CORS credentials by making an OPTIONS request
41
+ */
42
+ private detectCors;
43
+ /**
44
+ * Automatically determines whether to include credentials based on CORS detection
45
+ */
46
+ private shouldIncludeCredentials;
37
47
  getHeaders(): Promise<any>;
38
48
  handleFetch({ path, method, body, }: {
39
49
  path: string;
@@ -1,9 +1,9 @@
1
- import { A as AttachParams, R as Result, C as CheckResult, a as AttachResult, b as CheckParams, c as AutumnPromise, T as TrackParams, d as TrackResult, e as CancelParams, f as CancelResult, O as OpenBillingPortalParams, S as SetupPaymentParams, g as SetupPaymentResult } from '../clientGenTypes-Dlpw9wy_.mjs';
1
+ import { A as AttachParams, R as Result, a as AttachResult, C as CheckResult, b as CheckParams, c as AutumnPromise, T as TrackParams, d as TrackResult, e as CancelParams, f as CancelResult, O as OpenBillingPortalParams, S as SetupPaymentParams, g as SetupPaymentResult } from '../clientGenTypes-Dlpw9wy_.mjs';
2
2
  import { A as AutumnError } from '../error-DHbclCVh.mjs';
3
3
  import { B as BillingPortalResult } from '../cusTypes-CJI8rdlY.mjs';
4
4
 
5
5
  declare const useAutumn: () => {
6
- attach: (params: AttachParams) => Promise<Result<CheckResult | AttachResult, AutumnError>>;
6
+ attach: (params: AttachParams) => Promise<Result<AttachResult | CheckResult, AutumnError>>;
7
7
  check: (params: CheckParams) => AutumnPromise<CheckResult>;
8
8
  track: (params: TrackParams) => AutumnPromise<TrackResult>;
9
9
  cancel: (params: CancelParams) => AutumnPromise<CancelResult>;
@@ -1,9 +1,9 @@
1
- import { A as AttachParams, R as Result, C as CheckResult, a as AttachResult, b as CheckParams, c as AutumnPromise, T as TrackParams, d as TrackResult, e as CancelParams, f as CancelResult, O as OpenBillingPortalParams, S as SetupPaymentParams, g as SetupPaymentResult } from '../clientGenTypes-CAv4hwb4.js';
1
+ import { A as AttachParams, R as Result, a as AttachResult, C as CheckResult, b as CheckParams, c as AutumnPromise, T as TrackParams, d as TrackResult, e as CancelParams, f as CancelResult, O as OpenBillingPortalParams, S as SetupPaymentParams, g as SetupPaymentResult } from '../clientGenTypes-CAv4hwb4.js';
2
2
  import { A as AutumnError } from '../error-DHbclCVh.js';
3
3
  import { B as BillingPortalResult } from '../cusTypes-CJI8rdlY.js';
4
4
 
5
5
  declare const useAutumn: () => {
6
- attach: (params: AttachParams) => Promise<Result<CheckResult | AttachResult, AutumnError>>;
6
+ attach: (params: AttachParams) => Promise<Result<AttachResult | CheckResult, AutumnError>>;
7
7
  check: (params: CheckParams) => AutumnPromise<CheckResult>;
8
8
  track: (params: TrackParams) => AutumnPromise<TrackResult>;
9
9
  cancel: (params: CancelParams) => AutumnPromise<CancelResult>;
@@ -12,7 +12,7 @@ declare const useEntity: (entityId: string | null, params?: GetEntityParams) =>
12
12
  refetch: swr.KeyedMutator<Entity | null>;
13
13
  allowed: (params: AllowedParams) => boolean;
14
14
  check: (params: CheckParams) => AutumnPromise<CheckResult>;
15
- attach: (params: AttachParams) => Promise<Result<CheckResult | AttachResult, AutumnError>>;
15
+ attach: (params: AttachParams) => Promise<Result<AttachResult | CheckResult, AutumnError>>;
16
16
  cancel: (params: CancelParams) => AutumnPromise<CancelResult>;
17
17
  track: (params: TrackParams) => AutumnPromise<TrackResult>;
18
18
  };
@@ -12,7 +12,7 @@ declare const useEntity: (entityId: string | null, params?: GetEntityParams) =>
12
12
  refetch: swr.KeyedMutator<Entity | null>;
13
13
  allowed: (params: AllowedParams) => boolean;
14
14
  check: (params: CheckParams) => AutumnPromise<CheckResult>;
15
- attach: (params: AttachParams) => Promise<Result<CheckResult | AttachResult, AutumnError>>;
15
+ attach: (params: AttachParams) => Promise<Result<AttachResult | CheckResult, AutumnError>>;
16
16
  cancel: (params: CancelParams) => AutumnPromise<CancelResult>;
17
17
  track: (params: TrackParams) => AutumnPromise<TrackResult>;
18
18
  };
@@ -194,11 +194,21 @@ interface AutumnClientConfig {
194
194
  includeCredentials?: boolean;
195
195
  }
196
196
  declare class AutumnClient {
197
- protected readonly backendUrl?: string;
197
+ readonly backendUrl?: string;
198
198
  protected readonly getBearerToken?: () => Promise<string | null | undefined>;
199
199
  protected readonly customerData?: CustomerData;
200
- protected readonly includeCredentials?: boolean;
200
+ protected includeCredentials?: boolean;
201
+ private corsDetected?;
202
+ private corsSupportsCredentials?;
201
203
  constructor({ backendUrl, getBearerToken, customerData, includeCredentials, }: AutumnClientConfig);
204
+ /**
205
+ * Detects if the backend supports CORS credentials by making an OPTIONS request
206
+ */
207
+ private detectCors;
208
+ /**
209
+ * Automatically determines whether to include credentials based on CORS detection
210
+ */
211
+ private shouldIncludeCredentials;
202
212
  getHeaders(): Promise<any>;
203
213
  handleFetch({ path, method, body, }: {
204
214
  path: string;