autumn-js 0.1.21 → 0.1.23

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 (213) hide show
  1. package/dist/libraries/backend/better-auth.d.mts +28 -28
  2. package/dist/libraries/backend/better-auth.d.ts +28 -28
  3. package/dist/libraries/backend/better-auth.js +27 -1
  4. package/dist/libraries/backend/better-auth.mjs +7 -7
  5. package/dist/libraries/backend/{chunk-PN4KP454.mjs → chunk-4LVRQN5R.mjs} +25 -0
  6. package/dist/libraries/backend/{chunk-QSWG2M5T.mjs → chunk-7PLQK5LL.mjs} +1 -1
  7. package/dist/libraries/backend/{chunk-6QFLAHJ4.mjs → chunk-DMPRLFPO.mjs} +1 -1
  8. package/dist/libraries/backend/{chunk-XVPZOXA3.mjs → chunk-FOK63UWJ.mjs} +3 -2
  9. package/dist/libraries/backend/{chunk-5VJICG7P.mjs → chunk-J5U7ZXZU.mjs} +6 -6
  10. package/dist/libraries/backend/{chunk-OW4LL3WD.mjs → chunk-J6DXZ2RF.mjs} +1 -1
  11. package/dist/libraries/backend/{chunk-5KV536NU.mjs → chunk-OEKZ2I55.mjs} +1 -1
  12. package/dist/libraries/backend/convex.d.mts +1 -9
  13. package/dist/libraries/backend/convex.d.ts +1 -9
  14. package/dist/libraries/backend/convex.js +0 -1447
  15. package/dist/libraries/backend/convex.mjs +0 -81
  16. package/dist/libraries/backend/elysia.js +27 -1
  17. package/dist/libraries/backend/elysia.mjs +7 -7
  18. package/dist/libraries/backend/express.js +27 -1
  19. package/dist/libraries/backend/express.mjs +7 -7
  20. package/dist/libraries/backend/fastify.js +27 -1
  21. package/dist/libraries/backend/fastify.mjs +7 -7
  22. package/dist/libraries/backend/hono.js +27 -1
  23. package/dist/libraries/backend/hono.mjs +7 -7
  24. package/dist/libraries/backend/index.js +27 -1
  25. package/dist/libraries/backend/index.mjs +7 -7
  26. package/dist/libraries/backend/next.js +27 -1
  27. package/dist/libraries/backend/next.mjs +7 -7
  28. package/dist/libraries/backend/react-router.js +27 -1
  29. package/dist/libraries/backend/react-router.mjs +7 -7
  30. package/dist/libraries/backend/remix_dep.js +27 -1
  31. package/dist/libraries/backend/remix_dep.mjs +7 -7
  32. package/dist/libraries/backend/routes/backendRouter.js +27 -1
  33. package/dist/libraries/backend/routes/backendRouter.mjs +7 -7
  34. package/dist/libraries/backend/routes/entityRoutes.js +25 -0
  35. package/dist/libraries/backend/routes/entityRoutes.mjs +3 -3
  36. package/dist/libraries/backend/routes/genRoutes.js +27 -1
  37. package/dist/libraries/backend/routes/genRoutes.mjs +3 -3
  38. package/dist/libraries/backend/routes/productRoutes.js +25 -0
  39. package/dist/libraries/backend/routes/productRoutes.mjs +3 -3
  40. package/dist/libraries/backend/routes/referralRoutes.js +25 -0
  41. package/dist/libraries/backend/routes/referralRoutes.mjs +3 -3
  42. package/dist/libraries/backend/supabase.js +27 -1
  43. package/dist/libraries/backend/supabase.mjs +7 -7
  44. package/dist/libraries/backend/tanstack.js +27 -1
  45. package/dist/libraries/backend/tanstack.mjs +7 -7
  46. package/dist/libraries/backend/utils/backendRes.js +25 -0
  47. package/dist/libraries/backend/utils/backendRes.mjs +1 -1
  48. package/dist/libraries/backend/utils/withAuth.js +25 -0
  49. package/dist/libraries/backend/utils/withAuth.mjs +2 -2
  50. package/dist/libraries/react/AutumnContext.d.mts +6 -6
  51. package/dist/libraries/react/AutumnContext.d.ts +6 -6
  52. package/dist/libraries/react/AutumnContext.js +28 -1
  53. package/dist/libraries/react/AutumnContext.mjs +5 -5
  54. package/dist/libraries/react/BaseAutumnProvider.d.mts +7 -7
  55. package/dist/libraries/react/BaseAutumnProvider.d.ts +7 -7
  56. package/dist/libraries/react/BaseAutumnProvider.js +43 -4
  57. package/dist/libraries/react/BaseAutumnProvider.mjs +10 -10
  58. package/dist/libraries/react/{ReactAutumnClient-_y4Ea48c.d.mts → ReactAutumnClient--zmCg7U8.d.mts} +62 -10
  59. package/dist/libraries/react/{ReactAutumnClient-BqEB-TPz.d.ts → ReactAutumnClient-XuVllEBP.d.ts} +62 -10
  60. package/dist/libraries/react/ReactAutumnProvider.d.mts +5 -4
  61. package/dist/libraries/react/ReactAutumnProvider.d.ts +5 -4
  62. package/dist/libraries/react/ReactAutumnProvider.js +366 -5
  63. package/dist/libraries/react/ReactAutumnProvider.mjs +12 -11
  64. package/dist/libraries/react/{attachTypes-gI6T0O95.d.mts → attachTypes-DJIr5ldB.d.mts} +1 -1
  65. package/dist/libraries/react/{attachTypes-DoCshKK6.d.ts → attachTypes-DVF4f7Hw.d.ts} +1 -1
  66. package/dist/libraries/react/{chunk-NFVAFRF6.mjs → chunk-2SFUXGFK.mjs} +1 -1
  67. package/dist/libraries/react/{chunk-HBJDIEEJ.mjs → chunk-4WAFPXBN.mjs} +1 -1
  68. package/dist/libraries/react/{chunk-VELC6P5V.mjs → chunk-54IJL24F.mjs} +3 -3
  69. package/dist/libraries/react/{chunk-AS4XOUEI.mjs → chunk-65UX5FJ5.mjs} +2 -2
  70. package/dist/libraries/react/{chunk-XUS3TD2B.mjs → chunk-6KINUP6L.mjs} +2 -2
  71. package/dist/libraries/react/{chunk-S744ECJP.mjs → chunk-COGRLJH2.mjs} +16 -4
  72. package/dist/libraries/react/{chunk-ABJEE3UK.mjs → chunk-KUFNEIRV.mjs} +25 -0
  73. package/dist/libraries/react/{chunk-PN6WKUSX.mjs → chunk-MUZHFEMO.mjs} +1 -1
  74. package/dist/libraries/react/{chunk-Y5S2HOFE.mjs → chunk-MYRJW7LW.mjs} +1 -1
  75. package/dist/libraries/react/{chunk-JNJRQ5DT.mjs → chunk-NBVPBAGX.mjs} +12 -10
  76. package/dist/libraries/react/{chunk-NYQF7NO3.mjs → chunk-O7IKBONA.mjs} +1 -1
  77. package/dist/libraries/react/{chunk-OCP7PVSZ.mjs → chunk-PZVVV3LN.mjs} +14 -4
  78. package/dist/libraries/react/{chunk-JWT4MREG.mjs → chunk-QYW6U2NR.mjs} +3 -3
  79. package/dist/libraries/react/{chunk-74HNY7BP.mjs → chunk-UMG2RCCT.mjs} +2 -2
  80. package/dist/libraries/react/{chunk-KHIB6HEY.mjs → chunk-WRVDJJBE.mjs} +2 -2
  81. package/dist/libraries/react/chunk-ZH7N5FIC.mjs +324 -0
  82. package/dist/libraries/react/{chunk-PDPOI2J7.mjs → chunk-ZYTMSYY3.mjs} +21 -21
  83. package/dist/libraries/react/client/ConvexAutumnClient.d.mts +76 -0
  84. package/dist/libraries/react/client/ConvexAutumnClient.d.ts +76 -0
  85. package/dist/libraries/react/client/ConvexAutumnClient.js +1263 -0
  86. package/dist/libraries/react/client/ConvexAutumnClient.mjs +9 -0
  87. package/dist/libraries/react/client/ReactAutumnClient.d.mts +6 -6
  88. package/dist/libraries/react/client/ReactAutumnClient.d.ts +6 -6
  89. package/dist/libraries/react/client/ReactAutumnClient.js +28 -1
  90. package/dist/libraries/react/client/ReactAutumnClient.mjs +4 -4
  91. package/dist/libraries/react/client/clientCompMethods.d.mts +6 -6
  92. package/dist/libraries/react/client/clientCompMethods.d.ts +6 -6
  93. package/dist/libraries/react/client/clientCusMethods.d.mts +6 -6
  94. package/dist/libraries/react/client/clientCusMethods.d.ts +6 -6
  95. package/dist/libraries/react/client/clientEntityMethods.d.mts +6 -6
  96. package/dist/libraries/react/client/clientEntityMethods.d.ts +6 -6
  97. package/dist/libraries/react/client/clientGenMethods.d.mts +6 -6
  98. package/dist/libraries/react/client/clientGenMethods.d.ts +6 -6
  99. package/dist/libraries/react/client/clientProdMethods.d.mts +6 -6
  100. package/dist/libraries/react/client/clientProdMethods.d.ts +6 -6
  101. package/dist/libraries/react/client/clientReferralMethods.d.mts +6 -6
  102. package/dist/libraries/react/client/clientReferralMethods.d.ts +6 -6
  103. package/dist/libraries/react/client/types/clientGenTypes.js +25 -0
  104. package/dist/libraries/react/client/types/clientGenTypes.mjs +1 -1
  105. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.d.mts +2 -2
  106. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.d.ts +2 -2
  107. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.js +43 -4
  108. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.mjs +26 -25
  109. package/dist/libraries/react/components/checkout-dialog/lib/checkout-content.d.mts +2 -2
  110. package/dist/libraries/react/components/checkout-dialog/lib/checkout-content.d.ts +2 -2
  111. package/dist/libraries/react/components/paywall-dialog/lib/paywall-content.d.mts +1 -1
  112. package/dist/libraries/react/components/paywall-dialog/lib/paywall-content.d.ts +1 -1
  113. package/dist/libraries/react/components/paywall-dialog/paywall-dialog-synced.js +28 -1
  114. package/dist/libraries/react/components/paywall-dialog/paywall-dialog-synced.mjs +26 -25
  115. package/dist/libraries/react/components/pricing-table/lib/pricing-table-content.d.mts +1 -1
  116. package/dist/libraries/react/components/pricing-table/lib/pricing-table-content.d.ts +1 -1
  117. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.mts +1 -1
  118. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.ts +1 -1
  119. package/dist/libraries/react/components/pricing-table/pricing-table-synced.js +43 -4
  120. package/dist/libraries/react/components/pricing-table/pricing-table-synced.mjs +26 -25
  121. package/dist/libraries/react/components/ui/dialog.mjs +2 -2
  122. package/dist/libraries/react/components/ui/popover.mjs +2 -2
  123. package/dist/libraries/react/{cusTypes-DckkwpWg.d.ts → cusTypes-CEb_KwPo.d.ts} +1 -1
  124. package/dist/libraries/react/{cusTypes-UwHT30-L.d.mts → cusTypes-DynqPCZH.d.mts} +1 -1
  125. package/dist/libraries/react/{entTypes-BWsQfaNZ.d.ts → entTypes--Y-4T20Y.d.ts} +1 -1
  126. package/dist/libraries/react/{entTypes-DcRz1vjc.d.mts → entTypes-DjasDDYh.d.mts} +1 -1
  127. package/dist/libraries/react/{genTypes-C_ilxndU.d.mts → genTypes-DdYlVEah.d.mts} +1 -1
  128. package/dist/libraries/react/{genTypes-DjcQWIOM.d.ts → genTypes-aPPwPimh.d.ts} +1 -1
  129. package/dist/libraries/react/hooks/helpers/handleCheck.d.mts +6 -6
  130. package/dist/libraries/react/hooks/helpers/handleCheck.d.ts +6 -6
  131. package/dist/libraries/react/hooks/helpers/handleCheck.js +40 -3
  132. package/dist/libraries/react/hooks/helpers/handleCheck.mjs +2 -2
  133. package/dist/libraries/react/hooks/helpers/useAutumnBase.d.mts +12 -28
  134. package/dist/libraries/react/hooks/helpers/useAutumnBase.d.ts +12 -28
  135. package/dist/libraries/react/hooks/helpers/useAutumnBase.js +25 -0
  136. package/dist/libraries/react/hooks/helpers/useAutumnBase.mjs +3 -3
  137. package/dist/libraries/react/hooks/useAnalytics.d.mts +2 -2
  138. package/dist/libraries/react/hooks/useAnalytics.d.ts +2 -2
  139. package/dist/libraries/react/hooks/useAnalytics.js +28 -1
  140. package/dist/libraries/react/hooks/useAnalytics.mjs +6 -6
  141. package/dist/libraries/react/hooks/useCustomer.d.mts +7 -6
  142. package/dist/libraries/react/hooks/useCustomer.d.ts +7 -6
  143. package/dist/libraries/react/hooks/useCustomer.js +43 -4
  144. package/dist/libraries/react/hooks/useCustomer.mjs +10 -10
  145. package/dist/libraries/react/hooks/useCustomerBase.d.mts +8 -7
  146. package/dist/libraries/react/hooks/useCustomerBase.d.ts +8 -7
  147. package/dist/libraries/react/hooks/useCustomerBase.js +43 -4
  148. package/dist/libraries/react/hooks/useCustomerBase.mjs +9 -9
  149. package/dist/libraries/react/hooks/useEntity.d.mts +6 -20
  150. package/dist/libraries/react/hooks/useEntity.d.ts +6 -20
  151. package/dist/libraries/react/hooks/useEntity.js +43 -4
  152. package/dist/libraries/react/hooks/useEntity.mjs +10 -10
  153. package/dist/libraries/react/hooks/useEntityBase.d.mts +8 -22
  154. package/dist/libraries/react/hooks/useEntityBase.d.ts +8 -22
  155. package/dist/libraries/react/hooks/useEntityBase.js +43 -4
  156. package/dist/libraries/react/hooks/useEntityBase.mjs +9 -9
  157. package/dist/libraries/react/hooks/usePaywall.d.mts +1 -1
  158. package/dist/libraries/react/hooks/usePaywall.d.ts +1 -1
  159. package/dist/libraries/react/hooks/usePaywall.js +28 -1
  160. package/dist/libraries/react/hooks/usePaywall.mjs +6 -6
  161. package/dist/libraries/react/hooks/usePricingTable.d.mts +1 -1
  162. package/dist/libraries/react/hooks/usePricingTable.d.ts +1 -1
  163. package/dist/libraries/react/hooks/usePricingTable.js +28 -1
  164. package/dist/libraries/react/hooks/usePricingTable.mjs +7 -7
  165. package/dist/libraries/react/hooks/usePricingTableBase.d.mts +8 -7
  166. package/dist/libraries/react/hooks/usePricingTableBase.d.ts +8 -7
  167. package/dist/libraries/react/hooks/usePricingTableBase.js +25 -0
  168. package/dist/libraries/react/hooks/usePricingTableBase.mjs +2 -2
  169. package/dist/libraries/react/hooks/useProductsBase.d.mts +6 -6
  170. package/dist/libraries/react/hooks/useProductsBase.d.ts +6 -6
  171. package/dist/libraries/react/index.d.mts +4 -17
  172. package/dist/libraries/react/index.d.ts +4 -17
  173. package/dist/libraries/react/index.js +366 -5
  174. package/dist/libraries/react/index.mjs +366 -5
  175. package/dist/libraries/react/{prodTypes-B8NdKyKo.d.ts → prodTypes-C8xRoBP7.d.mts} +1 -1
  176. package/dist/libraries/react/{prodTypes-B8NdKyKo.d.mts → prodTypes-C8xRoBP7.d.ts} +1 -1
  177. package/dist/next/client/NextAutumnClient.d.mts +61 -10
  178. package/dist/next/client/NextAutumnClient.d.ts +61 -10
  179. package/dist/next/client/NextAutumnProvider.d.mts +2 -2
  180. package/dist/next/client/NextAutumnProvider.d.ts +2 -2
  181. package/dist/next/client/{clientAttachTypes-DPbDkX9E.d.mts → clientAttachTypes-BgiG9o_O.d.mts} +2 -2
  182. package/dist/next/client/{clientAttachTypes-DWfLqjO3.d.ts → clientAttachTypes-VNZGVMx6.d.ts} +2 -2
  183. package/dist/next/client/{attachTypes-x-hgg6BY.d.ts → clientEntTypes-BNVsUSBp.d.mts} +22 -2
  184. package/dist/next/client/{attachTypes-BOh_Skwx.d.mts → clientEntTypes-DmhBcFyI.d.ts} +22 -2
  185. package/dist/next/client/clientUtils.d.mts +3 -3
  186. package/dist/next/client/clientUtils.d.ts +3 -3
  187. package/dist/next/client/{cusTypes-CcUOSzBw.d.ts → cusTypes-5W4JVk2C.d.ts} +1 -1
  188. package/dist/next/client/{cusTypes-dipsR4ST.d.mts → cusTypes-Cb9Peq72.d.mts} +1 -1
  189. package/dist/next/client/{entTypes-BwBtFwJP.d.ts → entTypes-B2gnYOgY.d.ts} +1 -1
  190. package/dist/next/client/{entTypes-BzKJAjff.d.mts → entTypes-R0fGEyG8.d.mts} +1 -1
  191. package/dist/next/client/hooks/useAutumn.d.mts +7 -25
  192. package/dist/next/client/hooks/useAutumn.d.ts +7 -25
  193. package/dist/next/client/hooks/useCustomer.d.mts +5 -6
  194. package/dist/next/client/hooks/useCustomer.d.ts +5 -6
  195. package/dist/next/client/hooks/useEntity.d.mts +6 -20
  196. package/dist/next/client/hooks/useEntity.d.ts +6 -20
  197. package/dist/next/client/hooks/usePricingTable.d.mts +1 -1
  198. package/dist/next/client/hooks/usePricingTable.d.ts +1 -1
  199. package/dist/next/client/{prodTypes-DwM7QuGf.d.mts → prodTypes-BC--Np0p.d.mts} +1 -1
  200. package/dist/next/client/{prodTypes-DwM7QuGf.d.ts → prodTypes-BC--Np0p.d.ts} +1 -1
  201. package/dist/next/client/types.d.mts +3 -3
  202. package/dist/next/client/types.d.ts +3 -3
  203. package/dist/sdk/index.d.mts +1 -1
  204. package/dist/sdk/index.d.ts +1 -1
  205. package/dist/sdk/index.js +24 -0
  206. package/dist/sdk/index.mjs +24 -1
  207. package/dist/utils/encryptUtils.js +25 -0
  208. package/dist/utils/encryptUtils.mjs +25 -0
  209. package/package.json +5 -9
  210. package/dist/next/client/clientEntTypes-DHKeY0pG.d.mts +0 -21
  211. package/dist/next/client/clientEntTypes-DHKeY0pG.d.ts +0 -21
  212. package/dist/libraries/react/{chunk-X6FMCHSB.mjs → chunk-5KZSH7JF.mjs} +3 -3
  213. package/dist/libraries/react/{chunk-YE6KQQS7.mjs → chunk-UYZX3KX2.mjs} +3 -3
@@ -1,1448 +1 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/libraries/backend/convex.ts
21
- var convex_exports = {};
22
- __export(convex_exports, {
23
- autumnHandler: () => autumnHandler
24
- });
25
- module.exports = __toCommonJS(convex_exports);
26
-
27
- // src/sdk/error.ts
28
- var AutumnError = class _AutumnError extends Error {
29
- message;
30
- code;
31
- constructor(response) {
32
- super(response.message);
33
- this.message = response.message;
34
- this.code = response.code;
35
- }
36
- static fromError(error) {
37
- return new _AutumnError({
38
- message: error.message || "Unknown error",
39
- code: error.code || "unknown_error"
40
- });
41
- }
42
- toString() {
43
- return `${this.message} (code: ${this.code})`;
44
- }
45
- toJSON() {
46
- return {
47
- message: this.message,
48
- code: this.code
49
- };
50
- }
51
- };
52
-
53
- // src/sdk/general/genMethods.ts
54
- var handleCheckout = async ({
55
- instance,
56
- params
57
- }) => {
58
- return instance.post("/checkout", params);
59
- };
60
- var handleAttach = async ({
61
- instance,
62
- params
63
- }) => {
64
- return instance.post("/attach", params);
65
- };
66
- var handleSetupPayment = async ({
67
- instance,
68
- params
69
- }) => {
70
- return instance.post("/setup_payment", params);
71
- };
72
- var handleCancel = async ({
73
- instance,
74
- params
75
- }) => {
76
- return instance.post("/cancel", params);
77
- };
78
- var handleTrack = async ({
79
- instance,
80
- params
81
- }) => {
82
- return instance.post("/track", params);
83
- };
84
- var handleUsage = async ({
85
- instance,
86
- params
87
- }) => {
88
- return instance.post("/usage", params);
89
- };
90
- var handleCheck = async ({
91
- instance,
92
- params
93
- }) => {
94
- return instance.post("/check", params);
95
- };
96
- var handleQuery = async ({
97
- instance,
98
- params
99
- }) => {
100
- return instance.post("/query", params);
101
- };
102
-
103
- // src/libraries/backend/constants.ts
104
- var autumnApiUrl = "https://api.useautumn.com/v1";
105
- var BASE_PATH = "/api/autumn";
106
-
107
- // src/sdk/utils.ts
108
- var staticWrapper = (callback, instance, args) => {
109
- if (!instance) {
110
- instance = new Autumn();
111
- }
112
- return callback({ instance, ...args });
113
- };
114
-
115
- // src/sdk/customers/cusMethods.ts
116
- var customerMethods = (instance) => {
117
- return {
118
- get: (id, params) => staticWrapper(getCustomer, instance, { id, params }),
119
- create: (params) => staticWrapper(createCustomer, instance, { params }),
120
- update: (id, params) => staticWrapper(updateCustomer, instance, { id, params }),
121
- delete: (id) => staticWrapper(deleteCustomer, instance, { id }),
122
- billingPortal: (id, params) => staticWrapper(billingPortal, instance, { id, params }),
123
- updateBalances: (id, params) => staticWrapper(updateBalances, instance, { id, params })
124
- };
125
- };
126
- var getExpandStr = (expand) => {
127
- if (!expand) {
128
- return "";
129
- }
130
- return `expand=${expand.join(",")}`;
131
- };
132
- var getCustomer = async ({
133
- instance,
134
- id,
135
- params
136
- }) => {
137
- if (!id) {
138
- return {
139
- data: null,
140
- error: new AutumnError({
141
- message: "Customer ID is required",
142
- code: "CUSTOMER_ID_REQUIRED"
143
- })
144
- };
145
- }
146
- return instance.get(`/customers/${id}?${getExpandStr(params?.expand)}`);
147
- };
148
- var createCustomer = async ({
149
- instance,
150
- params
151
- }) => {
152
- return instance.post(`/customers?${getExpandStr(params?.expand)}`, params);
153
- };
154
- var updateCustomer = async ({
155
- instance,
156
- id,
157
- params
158
- }) => {
159
- return instance.post(`/customers/${id}`, params);
160
- };
161
- var deleteCustomer = async ({
162
- instance,
163
- id
164
- }) => {
165
- return instance.delete(`/customers/${id}`);
166
- };
167
- var billingPortal = async ({
168
- instance,
169
- id,
170
- params
171
- }) => {
172
- return instance.post(`/customers/${id}/billing_portal`, params);
173
- };
174
- var updateBalances = async ({
175
- instance,
176
- id,
177
- params
178
- }) => {
179
- return instance.post(`/customers/${id}/balances`, {
180
- balances: Array.isArray(params) ? params : [params]
181
- });
182
- };
183
-
184
- // src/sdk/customers/entities/entMethods.ts
185
- var entityMethods = (instance) => {
186
- return {
187
- get: (customer_id, entity_id, params) => staticWrapper(getEntity, instance, {
188
- customer_id,
189
- entity_id,
190
- params
191
- }),
192
- create: (customer_id, params) => staticWrapper(createEntity, instance, { customer_id, params }),
193
- transfer: (customer_id, params) => staticWrapper(transferProduct, instance, { customer_id, params }),
194
- delete: (customer_id, entity_id) => staticWrapper(deleteEntity, instance, { customer_id, entity_id })
195
- };
196
- };
197
- var getExpandStr2 = (expand) => {
198
- if (!expand) {
199
- return "";
200
- }
201
- return `expand=${expand.join(",")}`;
202
- };
203
- var getEntity = async ({
204
- instance,
205
- customer_id,
206
- entity_id,
207
- params
208
- }) => {
209
- return instance.get(
210
- `/customers/${customer_id}/entities/${entity_id}?${getExpandStr2(
211
- params?.expand
212
- )}`
213
- );
214
- };
215
- var createEntity = async ({
216
- instance,
217
- customer_id,
218
- params
219
- }) => {
220
- return instance.post(`/customers/${customer_id}/entities`, params);
221
- };
222
- var deleteEntity = async ({
223
- instance,
224
- customer_id,
225
- entity_id
226
- }) => {
227
- return instance.delete(`/customers/${customer_id}/entities/${entity_id}`);
228
- };
229
- var transferProduct = async ({
230
- instance,
231
- customer_id,
232
- params
233
- }) => {
234
- return instance.post(`/customers/${customer_id}/transfer`, params);
235
- };
236
-
237
- // src/sdk/products/prodMethods.ts
238
- var productMethods = (instance) => {
239
- return {
240
- get: (id) => staticWrapper(getProduct, instance, { id }),
241
- create: (params) => staticWrapper(createProduct, instance, { params }),
242
- list: (params) => staticWrapper(listProducts, instance, { params })
243
- };
244
- };
245
- var listProducts = async ({
246
- instance,
247
- params
248
- }) => {
249
- let path = "/products_beta";
250
- if (params) {
251
- const queryParams = new URLSearchParams();
252
- for (const [key, value] of Object.entries(params)) {
253
- if (value !== void 0) {
254
- queryParams.append(key, String(value));
255
- }
256
- }
257
- const queryString = queryParams.toString();
258
- if (queryString) {
259
- path += `?${queryString}`;
260
- }
261
- }
262
- return instance.get(path);
263
- };
264
- var getProduct = async ({
265
- instance,
266
- id
267
- }) => {
268
- return instance.get(`/products/${id}`);
269
- };
270
- var createProduct = async ({
271
- instance,
272
- params
273
- }) => {
274
- return instance.post("/products", params);
275
- };
276
-
277
- // src/sdk/referrals/referralMethods.ts
278
- var referralMethods = (instance) => {
279
- return {
280
- createCode: (params) => staticWrapper(createReferralCode, instance, { params }),
281
- redeemCode: (params) => staticWrapper(redeemReferralCode, instance, { params })
282
- };
283
- };
284
- var createReferralCode = async ({
285
- instance,
286
- params
287
- }) => {
288
- return instance.post("/referrals/code", params);
289
- };
290
- var redeemReferralCode = async ({
291
- instance,
292
- params
293
- }) => {
294
- return instance.post("/referrals/redeem", params);
295
- };
296
-
297
- // src/sdk/response.ts
298
- var toContainerResult = async ({
299
- response,
300
- logger: logger2,
301
- logError = true
302
- }) => {
303
- if (response.status < 200 || response.status >= 300) {
304
- let error;
305
- try {
306
- error = await response.json();
307
- if (logError) {
308
- logger2.error(`[Autumn] ${error.message}`);
309
- }
310
- } catch (error2) {
311
- throw error2;
312
- return {
313
- data: null,
314
- error: new AutumnError({
315
- message: "Failed to parse JSON response from Autumn",
316
- code: "internal_error"
317
- }),
318
- statusCode: response.status
319
- };
320
- }
321
- return {
322
- data: null,
323
- error: new AutumnError({
324
- message: error.message,
325
- code: error.code
326
- }),
327
- statusCode: response.status
328
- };
329
- }
330
- try {
331
- let data = await response.json();
332
- return {
333
- data,
334
- error: null,
335
- statusCode: response?.status
336
- };
337
- } catch (error) {
338
- throw error;
339
- return {
340
- data: null,
341
- error: new AutumnError({
342
- message: "Failed to parse Autumn API response",
343
- code: "internal_error"
344
- }),
345
- statusCode: response?.status
346
- };
347
- }
348
- };
349
-
350
- // src/utils/logger.ts
351
- var getTime = () => {
352
- let timeString = (/* @__PURE__ */ new Date()).toISOString();
353
- return `[${timeString.split("T")[1].split(".")[0]}]`;
354
- };
355
- var greaterThanLevel = (level) => {
356
- return levels.indexOf(level) >= levels.indexOf(logger.level);
357
- };
358
- var levels = ["debug", "info", "warn", "error", "fatal"];
359
- var logger = {
360
- ...console,
361
- level: "info",
362
- debug: (...args) => {
363
- if (greaterThanLevel("debug")) {
364
- console.log(getTime(), "DEBUG", ...args);
365
- }
366
- },
367
- log: (...args) => {
368
- console.log(getTime(), "INFO", ...args);
369
- },
370
- info: (...args) => {
371
- if (greaterThanLevel("info")) {
372
- console.log(getTime(), "INFO", ...args);
373
- }
374
- },
375
- warn: (...args) => {
376
- if (greaterThanLevel("warn")) {
377
- console.log(getTime(), "WARN", ...args);
378
- }
379
- },
380
- error: (...args) => {
381
- if (greaterThanLevel("error")) {
382
- console.log(getTime(), "ERROR", ...args);
383
- }
384
- }
385
- };
386
-
387
- // src/sdk/features/featureMethods.ts
388
- var featureMethods = (instance) => {
389
- return {
390
- list: () => staticWrapper(listFeatures, instance, {})
391
- };
392
- };
393
- var listFeatures = async ({
394
- instance,
395
- params
396
- }) => {
397
- let path = "/features";
398
- if (params) {
399
- const queryParams = new URLSearchParams();
400
- for (const [key, value] of Object.entries(params)) {
401
- if (value !== void 0) {
402
- queryParams.append(key, String(value));
403
- }
404
- }
405
- const queryString = queryParams.toString();
406
- if (queryString) {
407
- path += `?${queryString}`;
408
- }
409
- }
410
- return instance.get(path);
411
- };
412
-
413
- // src/sdk/client.ts
414
- var LATEST_API_VERSION = "1.2";
415
- var Autumn = class {
416
- secretKey;
417
- publishableKey;
418
- headers;
419
- url;
420
- logger = console;
421
- constructor(options) {
422
- try {
423
- this.secretKey = options?.secretKey || process.env.AUTUMN_SECRET_KEY;
424
- this.publishableKey = options?.publishableKey || process.env.AUTUMN_PUBLISHABLE_KEY;
425
- } catch (error) {
426
- }
427
- if (!this.secretKey && !this.publishableKey && !options?.headers) {
428
- throw new Error("Autumn secret key or publishable key is required");
429
- }
430
- this.headers = options?.headers || {
431
- Authorization: `Bearer ${this.secretKey || this.publishableKey}`,
432
- "Content-Type": "application/json"
433
- };
434
- let version = options?.version || LATEST_API_VERSION;
435
- this.headers["x-api-version"] = version;
436
- this.url = options?.url || autumnApiUrl;
437
- this.logger = logger;
438
- this.logger.level = options?.logLevel || "info";
439
- }
440
- async get(path) {
441
- const response = await fetch(`${this.url}${path}`, {
442
- headers: this.headers
443
- });
444
- return toContainerResult({ response, logger: this.logger });
445
- }
446
- async post(path, body) {
447
- try {
448
- const response = await fetch(`${this.url}${path}`, {
449
- method: "POST",
450
- headers: this.headers,
451
- body: JSON.stringify(body)
452
- });
453
- return toContainerResult({ response, logger: this.logger });
454
- } catch (error) {
455
- console.error("Error sending request:", error);
456
- throw error;
457
- }
458
- }
459
- async delete(path) {
460
- const response = await fetch(`${this.url}${path}`, {
461
- method: "DELETE",
462
- headers: this.headers
463
- });
464
- return toContainerResult({ response, logger: this.logger });
465
- }
466
- static customers = customerMethods();
467
- static products = productMethods();
468
- static entities = entityMethods();
469
- static referrals = referralMethods();
470
- static features = featureMethods();
471
- customers = customerMethods(this);
472
- products = productMethods(this);
473
- entities = entityMethods(this);
474
- referrals = referralMethods(this);
475
- features = featureMethods(this);
476
- /**
477
- * Initiates a checkout flow for a product purchase.
478
- *
479
- * The checkout function handles the purchase process for products with pricing.
480
- * It determines whether to show a dialog for user input or redirect directly
481
- * to Stripe based on the customer's state and product requirements.
482
- *
483
- * @param params - Checkout parameters including product ID, customer data, and options
484
- * @returns Promise resolving to checkout details including pricing, prorations, and URLs
485
- *
486
- * @example
487
- * ```typescript
488
- * const result = await autumn.checkout({
489
- * customer_id: "user_123",
490
- * product_id: "pro",
491
- * success_url: "https://myapp.com/success"
492
- * });
493
- *
494
- * if (result.url) {
495
- * // Redirect to Stripe checkout
496
- * window.location.href = result.url;
497
- * }
498
- * ```
499
- */
500
- async checkout(params) {
501
- return handleCheckout({
502
- instance: this,
503
- params
504
- });
505
- }
506
- static checkout = (params) => staticWrapper(handleCheckout, void 0, { params });
507
- static usage = (params) => staticWrapper(handleUsage, void 0, { params });
508
- /**
509
- * Attaches a product to a customer, enabling access and handling billing.
510
- *
511
- * The attach function activates a product for a customer and applies all product items.
512
- * When you attach a product:
513
- * - The customer gains access to all features in the product
514
- * - If the product has prices, the customer will be billed accordingly
515
- * - If there's no existing payment method, a checkout URL will be generated
516
- *
517
- * @param params - Attach parameters including customer ID, product ID, and options
518
- * @returns Promise resolving to attachment result with checkout URL if needed
519
- *
520
- * @example
521
- * ```typescript
522
- * const result = await autumn.attach({
523
- * customer_id: "user_123",
524
- * product_id: "pro",
525
- * success_url: "https://myapp.com/success"
526
- * });
527
- *
528
- * if (result.checkout_url) {
529
- * // Payment required - redirect to checkout
530
- * window.location.href = result.checkout_url;
531
- * } else {
532
- * // Product successfully attached
533
- * console.log("Access granted:", result.message);
534
- * }
535
- * ```
536
- */
537
- async attach(params) {
538
- return handleAttach({
539
- instance: this,
540
- params
541
- });
542
- }
543
- static attach = (params) => staticWrapper(handleAttach, void 0, { params });
544
- static setupPayment = (params) => staticWrapper(handleSetupPayment, void 0, { params });
545
- /**
546
- * Sets up a payment method for a customer.
547
- *
548
- * This method allows you to set up payment methods for customers without
549
- * immediately charging them. Useful for collecting payment information
550
- * before product attachment or for updating existing payment methods.
551
- *
552
- * @param params - Setup payment parameters including customer information
553
- * @returns Promise resolving to setup payment result
554
- *
555
- * @example
556
- * ```typescript
557
- * const result = await autumn.setupPayment({
558
- * customer_id: "user_123"
559
- * });
560
- * ```
561
- */
562
- async setupPayment(params) {
563
- return handleSetupPayment({
564
- instance: this,
565
- params
566
- });
567
- }
568
- static cancel = (params) => staticWrapper(handleCancel, void 0, { params });
569
- /**
570
- * Cancels a customer's subscription or product attachment.
571
- *
572
- * This method allows you to cancel a customer's subscription to a specific product.
573
- * You can choose to cancel immediately or at the end of the billing cycle.
574
- *
575
- * @param params - Cancel parameters including customer ID and product ID
576
- * @returns Promise resolving to cancellation result
577
- *
578
- * @example
579
- * ```typescript
580
- * const result = await autumn.cancel({
581
- * customer_id: "user_123",
582
- * product_id: "pro",
583
- * cancel_immediately: false // Cancel at end of billing cycle
584
- * });
585
- * ```
586
- */
587
- async cancel(params) {
588
- return handleCancel({
589
- instance: this,
590
- params
591
- });
592
- }
593
- static check = (params) => staticWrapper(handleCheck, void 0, { params });
594
- /**
595
- * Checks if a customer has access to a specific feature.
596
- *
597
- * This method verifies whether a customer has permission to use a feature
598
- * and checks their remaining balance/usage limits. It can be used to gate
599
- * features and determine when to show upgrade prompts.
600
- *
601
- * @param params - Check parameters including customer ID and feature ID
602
- * @returns Promise resolving to access check result with allowed status and balance info
603
- *
604
- * @example
605
- * ```typescript
606
- * const result = await autumn.check({
607
- * customer_id: "user_123",
608
- * feature_id: "messages",
609
- * required_balance: 1
610
- * });
611
- *
612
- * if (!result.allowed) {
613
- * console.log("Feature access denied - upgrade required");
614
- * }
615
- * ```
616
- */
617
- async check(params) {
618
- return handleCheck({
619
- instance: this,
620
- params
621
- });
622
- }
623
- static track = (params) => staticWrapper(handleTrack, void 0, { params });
624
- /**
625
- * Tracks usage events for features or analytics.
626
- *
627
- * This method records usage events for metered features, updating the customer's
628
- * balance and usage statistics. It's typically used server-side to ensure
629
- * accurate tracking that cannot be manipulated by users.
630
- *
631
- * @param params - Track parameters including customer ID, feature ID, and usage value
632
- * @returns Promise resolving to tracking result
633
- *
634
- * @example
635
- * ```typescript
636
- * const result = await autumn.track({
637
- * customer_id: "user_123",
638
- * feature_id: "messages",
639
- * value: 1 // Track 1 message sent
640
- * });
641
- * ```
642
- */
643
- async track(params) {
644
- return handleTrack({
645
- instance: this,
646
- params
647
- });
648
- }
649
- /**
650
- * Retrieves usage statistics and analytics for a customer.
651
- *
652
- * This method fetches detailed usage information for a customer's features,
653
- * including current balances, usage history, and analytics data. Useful
654
- * for displaying usage dashboards or generating reports.
655
- *
656
- * @param params - Usage parameters including customer ID and optional filters
657
- * @returns Promise resolving to usage statistics and analytics data
658
- *
659
- * @example
660
- * ```typescript
661
- * const result = await autumn.usage({
662
- * customer_id: "user_123",
663
- * feature_id: "messages"
664
- * value: 20 // Usage value
665
- * });
666
- * ```
667
- */
668
- async usage(params) {
669
- return handleUsage({
670
- instance: this,
671
- params
672
- });
673
- }
674
- static query = (params) => staticWrapper(handleQuery, void 0, { params });
675
- /**
676
- * Performs advanced queries on customer data and analytics.
677
- *
678
- * This method allows you to run complex queries against customer data,
679
- * usage patterns, and billing information. Useful for generating reports,
680
- * analytics, and custom data insights.
681
- *
682
- * @param params - Query parameters including customer ID and query specifications
683
- * @returns Promise resolving to query results with requested data
684
- *
685
- * @example
686
- * ```typescript
687
- * const result = await autumn.query({
688
- * customer_id: "user_123",
689
- * feature_id: "messages" // feature id to fetch for query, can also be an array
690
- * });
691
- *
692
- * ```
693
- */
694
- async query(params) {
695
- return handleQuery({
696
- instance: this,
697
- params
698
- });
699
- }
700
- };
701
-
702
- // src/sdk/products/prodEnums.ts
703
- var ProductItemInterval = /* @__PURE__ */ ((ProductItemInterval2) => {
704
- ProductItemInterval2["Minute"] = "minute";
705
- ProductItemInterval2["Hour"] = "hour";
706
- ProductItemInterval2["Day"] = "day";
707
- ProductItemInterval2["Week"] = "week";
708
- ProductItemInterval2["Month"] = "month";
709
- ProductItemInterval2["Quarter"] = "quarter";
710
- ProductItemInterval2["SemiAnnual"] = "semi_annual";
711
- ProductItemInterval2["Year"] = "year";
712
- ProductItemInterval2["Multiple"] = "multiple";
713
- return ProductItemInterval2;
714
- })(ProductItemInterval || {});
715
-
716
- // src/sdk/customers/cusEnums.ts
717
- var import_v4 = require("zod/v4");
718
- var CustomerExpandEnum = import_v4.z.enum([
719
- "invoices",
720
- "rewards",
721
- "trials_used",
722
- "entities",
723
- "referrals",
724
- "payment_method"
725
- ]);
726
-
727
- // src/sdk/customers/cusTypes.ts
728
- var import_v42 = require("zod/v4");
729
- var CoreCusFeatureSchema = import_v42.z.object({
730
- unlimited: import_v42.z.boolean().optional(),
731
- interval: import_v42.z.enum(ProductItemInterval).optional(),
732
- balance: import_v42.z.number().nullish(),
733
- usage: import_v42.z.number().optional(),
734
- included_usage: import_v42.z.number().optional(),
735
- next_reset_at: import_v42.z.number().nullish(),
736
- overage_allowed: import_v42.z.boolean().optional(),
737
- usage_limit: import_v42.z.number().optional(),
738
- rollovers: import_v42.z.object({
739
- balance: import_v42.z.number(),
740
- expires_at: import_v42.z.number()
741
- }).optional(),
742
- breakdown: import_v42.z.array(
743
- import_v42.z.object({
744
- interval: import_v42.z.enum(ProductItemInterval),
745
- balance: import_v42.z.number().optional(),
746
- usage: import_v42.z.number().optional(),
747
- included_usage: import_v42.z.number().optional(),
748
- next_reset_at: import_v42.z.number().optional()
749
- })
750
- ).optional(),
751
- credit_schema: import_v42.z.array(
752
- import_v42.z.object({
753
- feature_id: import_v42.z.string(),
754
- credit_amount: import_v42.z.number()
755
- })
756
- ).optional()
757
- });
758
- var CustomerDataSchema = import_v42.z.object({
759
- name: import_v42.z.string().nullish(),
760
- email: import_v42.z.string().nullish(),
761
- fingerprint: import_v42.z.string().nullish()
762
- });
763
- var CreateCustomerParamsSchema = import_v42.z.object({
764
- id: import_v42.z.string().nullish(),
765
- email: import_v42.z.string().nullish(),
766
- name: import_v42.z.string().nullish(),
767
- fingerprint: import_v42.z.string().nullish(),
768
- metadata: import_v42.z.record(import_v42.z.string(), import_v42.z.any()).optional(),
769
- expand: import_v42.z.array(CustomerExpandEnum).optional(),
770
- stripe_id: import_v42.z.string().nullish()
771
- });
772
- var BillingPortalParamsSchema = import_v42.z.object({
773
- return_url: import_v42.z.string().optional()
774
- });
775
- var UpdateBalancesParamsSchema = import_v42.z.object({
776
- feature_id: import_v42.z.string(),
777
- balance: import_v42.z.number()
778
- }).or(
779
- import_v42.z.array(
780
- import_v42.z.object({
781
- feature_id: import_v42.z.string(),
782
- balance: import_v42.z.number()
783
- })
784
- )
785
- );
786
-
787
- // src/sdk/general/checkTypes.ts
788
- var import_v43 = require("zod/v4");
789
- var CheckFeatureResultSchema = import_v43.z.object({
790
- allowed: import_v43.z.boolean(),
791
- feature_id: import_v43.z.string(),
792
- customer_id: import_v43.z.string(),
793
- entity_id: import_v43.z.string().optional(),
794
- required_balance: import_v43.z.number()
795
- }).extend(CoreCusFeatureSchema.shape);
796
-
797
- // src/sdk/customers/entities/entTypes.ts
798
- var import_v44 = require("zod/v4");
799
- var EntityDataSchema = import_v44.z.object({
800
- name: import_v44.z.string().optional(),
801
- feature_id: import_v44.z.string()
802
- });
803
- var TransferProductParamsSchema = import_v44.z.object({
804
- from_entity_id: import_v44.z.string(),
805
- to_entity_id: import_v44.z.string(),
806
- product_id: import_v44.z.string()
807
- });
808
-
809
- // src/sdk/general/genTypes.ts
810
- var import_v45 = require("zod/v4");
811
- var CancelParamsSchema = import_v45.z.object({
812
- customer_id: import_v45.z.string(),
813
- product_id: import_v45.z.string(),
814
- entity_id: import_v45.z.string().optional(),
815
- cancel_immediately: import_v45.z.boolean().optional()
816
- });
817
- var CancelResultSchema = import_v45.z.object({
818
- success: import_v45.z.boolean(),
819
- customer_id: import_v45.z.string(),
820
- product_id: import_v45.z.string()
821
- });
822
- var TrackParamsSchema = import_v45.z.object({
823
- customer_id: import_v45.z.string(),
824
- value: import_v45.z.number().optional(),
825
- feature_id: import_v45.z.string().optional(),
826
- event_name: import_v45.z.string().optional(),
827
- entity_id: import_v45.z.string().optional(),
828
- customer_data: import_v45.z.any().optional(),
829
- idempotency_key: import_v45.z.string().optional(),
830
- entity_data: import_v45.z.any().optional()
831
- });
832
- var TrackResultSchema = import_v45.z.object({
833
- id: import_v45.z.string(),
834
- code: import_v45.z.string(),
835
- customer_id: import_v45.z.string(),
836
- feature_id: import_v45.z.string().optional(),
837
- event_name: import_v45.z.string().optional()
838
- });
839
- var CheckParamsSchema = import_v45.z.object({
840
- customer_id: import_v45.z.string(),
841
- feature_id: import_v45.z.string().optional(),
842
- product_id: import_v45.z.string().optional(),
843
- entity_id: import_v45.z.string().optional(),
844
- customer_data: import_v45.z.any().optional(),
845
- required_balance: import_v45.z.number().optional(),
846
- send_event: import_v45.z.boolean().optional(),
847
- with_preview: import_v45.z.boolean().optional(),
848
- entity_data: EntityDataSchema.optional()
849
- });
850
- var QueryRangeEnum = import_v45.z.enum(["24h", "7d", "30d", "90d", "last_cycle"]);
851
- var QueryParamsSchema = import_v45.z.object({
852
- customer_id: import_v45.z.string(),
853
- feature_id: import_v45.z.string().or(import_v45.z.array(import_v45.z.string())),
854
- range: QueryRangeEnum.optional()
855
- });
856
-
857
- // src/sdk/components/componentMethods.ts
858
- var fetchPricingTable = async ({
859
- instance,
860
- params
861
- }) => {
862
- let path = "/components/pricing_table";
863
- if (params) {
864
- const queryParams = new URLSearchParams();
865
- for (const [key, value] of Object.entries(params)) {
866
- if (key === "products") {
867
- continue;
868
- }
869
- if (value !== void 0) {
870
- queryParams.append(key, String(value));
871
- }
872
- }
873
- const queryString = queryParams.toString();
874
- if (queryString) {
875
- path += `?${queryString}`;
876
- }
877
- }
878
- return await instance.get(path);
879
- };
880
-
881
- // src/sdk/referrals/referralTypes.ts
882
- var import_v46 = require("zod/v4");
883
- var CreateReferralCodeParamsSchema = import_v46.z.object({
884
- customer_id: import_v46.z.string(),
885
- program_id: import_v46.z.string()
886
- });
887
- var RedeemReferralCodeParamsSchema = import_v46.z.object({
888
- code: import_v46.z.string(),
889
- customer_id: import_v46.z.string()
890
- });
891
-
892
- // src/sdk/general/attachTypes.ts
893
- var import_v47 = require("zod/v4");
894
- var AttachFeatureOptionsSchema = import_v47.z.object({
895
- feature_id: import_v47.z.string(),
896
- quantity: import_v47.z.number()
897
- });
898
- var AttachParamsSchema = import_v47.z.object({
899
- customer_id: import_v47.z.string(),
900
- product_id: import_v47.z.string().optional(),
901
- entity_id: import_v47.z.string().optional(),
902
- options: import_v47.z.array(AttachFeatureOptionsSchema).optional(),
903
- product_ids: import_v47.z.array(import_v47.z.string()).optional(),
904
- free_trial: import_v47.z.boolean().optional(),
905
- success_url: import_v47.z.string().optional(),
906
- metadata: import_v47.z.record(import_v47.z.string(), import_v47.z.string()).optional(),
907
- force_checkout: import_v47.z.boolean().optional(),
908
- customer_data: CustomerDataSchema.optional(),
909
- entity_data: import_v47.z.any().optional(),
910
- checkout_session_params: import_v47.z.record(import_v47.z.string(), import_v47.z.any()).optional(),
911
- reward: import_v47.z.string().optional(),
912
- invoice: import_v47.z.boolean().optional()
913
- });
914
- var AttachResultSchema = import_v47.z.object({
915
- checkout_url: import_v47.z.string().optional(),
916
- customer_id: import_v47.z.string(),
917
- product_ids: import_v47.z.array(import_v47.z.string()),
918
- code: import_v47.z.string(),
919
- message: import_v47.z.string(),
920
- customer_data: import_v47.z.any().optional(),
921
- invoice: import_v47.z.object({
922
- status: import_v47.z.string(),
923
- stripe_id: import_v47.z.string(),
924
- hosted_invoice_url: import_v47.z.string().nullable(),
925
- total: import_v47.z.number(),
926
- currency: import_v47.z.string()
927
- }).optional()
928
- });
929
- var CheckoutParamsSchema = import_v47.z.object({
930
- customer_id: import_v47.z.string(),
931
- product_id: import_v47.z.string(),
932
- product_ids: import_v47.z.array(import_v47.z.string()).optional(),
933
- entity_id: import_v47.z.string().optional(),
934
- options: import_v47.z.array(AttachFeatureOptionsSchema).optional(),
935
- force_checkout: import_v47.z.boolean().optional(),
936
- invoice: import_v47.z.boolean().optional(),
937
- success_url: import_v47.z.string().optional(),
938
- customer_data: CustomerDataSchema.optional(),
939
- entity_data: import_v47.z.any().optional(),
940
- checkout_session_params: import_v47.z.record(import_v47.z.string(), import_v47.z.any()).optional(),
941
- reward: import_v47.z.string().optional()
942
- });
943
-
944
- // src/libraries/backend/utils/backendRes.ts
945
- var toBackendRes = ({ res }) => {
946
- let statusCode = res.statusCode ? res.statusCode : res.error ? 500 : 200;
947
- return {
948
- body: res.data ? res.data : res.error,
949
- statusCode
950
- };
951
- };
952
- var toBackendError = ({
953
- path,
954
- message,
955
- code,
956
- statusCode = 500
957
- }) => {
958
- return {
959
- statusCode,
960
- body: new AutumnError({
961
- message: message || "Internal server error",
962
- code: code || "internal_server_error"
963
- })
964
- };
965
- };
966
-
967
- // src/libraries/backend/utils/withAuth.ts
968
- var withAuth = ({
969
- fn,
970
- requireCustomer = true
971
- }) => {
972
- return async ({
973
- autumn,
974
- body,
975
- path,
976
- getCustomer: getCustomer2,
977
- pathParams,
978
- searchParams
979
- }) => {
980
- let authResult = await getCustomer2();
981
- let customerId = authResult?.customerId;
982
- if (!customerId && requireCustomer) {
983
- if (body?.errorOnNotFound === false) {
984
- return {
985
- statusCode: 202,
986
- body: null
987
- };
988
- } else {
989
- logger.error(
990
- `[Autumn]: customerId returned from identify function is ${customerId}`
991
- );
992
- return toBackendError({
993
- path,
994
- message: `customerId returned from identify function is ${customerId}`,
995
- code: "no_customer_id",
996
- statusCode: 401
997
- });
998
- }
999
- }
1000
- let cusData = authResult?.customerData || body?.customer_data;
1001
- try {
1002
- let res = await fn({
1003
- body,
1004
- autumn,
1005
- customer_id: customerId,
1006
- customer_data: cusData,
1007
- pathParams,
1008
- searchParams
1009
- });
1010
- return toBackendRes({ res });
1011
- } catch (error) {
1012
- logger.error(`${error.message}`);
1013
- return toBackendError({
1014
- path,
1015
- message: error.message || "unknown error",
1016
- code: "internal_error"
1017
- });
1018
- }
1019
- };
1020
- };
1021
-
1022
- // src/libraries/backend/routes/genRoutes.ts
1023
- var import_rou3 = require("rou3");
1024
-
1025
- // src/libraries/react/utils/toSnakeCase.ts
1026
- function stringToSnakeCase(str) {
1027
- return str.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase();
1028
- }
1029
- var toSnakeCase = (obj, excludeKeys) => {
1030
- if (Array.isArray(obj)) {
1031
- return obj.map((item) => toSnakeCase(item, excludeKeys));
1032
- } else if (obj !== null && typeof obj === "object") {
1033
- return Object.fromEntries(
1034
- Object.entries(obj).map(([key, value]) => {
1035
- const snakeKey = stringToSnakeCase(key);
1036
- if (excludeKeys && excludeKeys.includes(key)) {
1037
- return [snakeKey, value];
1038
- }
1039
- return [snakeKey, toSnakeCase(value, excludeKeys)];
1040
- })
1041
- );
1042
- }
1043
- return obj;
1044
- };
1045
-
1046
- // src/libraries/backend/routes/genRoutes.ts
1047
- var sanitizeBody = (body) => {
1048
- let bodyCopy = { ...body };
1049
- delete bodyCopy.customer_id;
1050
- delete bodyCopy.customer_data;
1051
- return bodyCopy;
1052
- };
1053
- var checkoutHandler = withAuth({
1054
- fn: async ({
1055
- autumn,
1056
- customer_id,
1057
- customer_data,
1058
- body
1059
- }) => {
1060
- return await autumn.checkout({
1061
- ...sanitizeBody(body),
1062
- customer_id,
1063
- customer_data
1064
- });
1065
- }
1066
- });
1067
- var attachHandler = withAuth({
1068
- fn: async ({
1069
- autumn,
1070
- customer_id,
1071
- customer_data,
1072
- body
1073
- }) => {
1074
- return await autumn.attach({
1075
- ...sanitizeBody(body),
1076
- customer_id,
1077
- customer_data
1078
- });
1079
- }
1080
- });
1081
- var setupPaymentHandler = withAuth({
1082
- fn: async ({
1083
- autumn,
1084
- customer_id,
1085
- customer_data,
1086
- body
1087
- }) => {
1088
- return await autumn.setupPayment({
1089
- ...sanitizeBody(body),
1090
- customer_id,
1091
- customer_data
1092
- });
1093
- }
1094
- });
1095
- var cancelHandler = withAuth({
1096
- fn: async ({
1097
- autumn,
1098
- customer_id,
1099
- body
1100
- }) => {
1101
- return await autumn.cancel({
1102
- ...sanitizeBody(body),
1103
- customer_id
1104
- });
1105
- }
1106
- });
1107
- var checkHandler = withAuth({
1108
- fn: async ({
1109
- autumn,
1110
- customer_id,
1111
- customer_data,
1112
- body
1113
- }) => {
1114
- const result = await autumn.check({
1115
- ...sanitizeBody(body),
1116
- customer_id,
1117
- customer_data
1118
- });
1119
- return result;
1120
- }
1121
- });
1122
- var trackHandler = withAuth({
1123
- fn: async ({
1124
- autumn,
1125
- customer_id,
1126
- customer_data,
1127
- body
1128
- }) => {
1129
- return await autumn.track({
1130
- ...sanitizeBody(body),
1131
- customer_id,
1132
- customer_data
1133
- });
1134
- }
1135
- });
1136
- var openBillingPortalHandler = withAuth({
1137
- fn: async ({
1138
- autumn,
1139
- customer_id,
1140
- body
1141
- }) => {
1142
- return await autumn.customers.billingPortal(customer_id, body);
1143
- }
1144
- });
1145
- var queryHandler = withAuth({
1146
- fn: async ({
1147
- autumn,
1148
- customer_id,
1149
- body
1150
- }) => {
1151
- return await autumn.query({ customer_id, ...toSnakeCase(body) });
1152
- }
1153
- });
1154
- var addGenRoutes = (router) => {
1155
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/checkout`, {
1156
- handler: checkoutHandler
1157
- });
1158
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/attach`, {
1159
- handler: attachHandler
1160
- });
1161
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/cancel`, {
1162
- handler: cancelHandler
1163
- });
1164
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/check`, {
1165
- handler: checkHandler
1166
- });
1167
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/track`, {
1168
- handler: trackHandler
1169
- });
1170
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/billing_portal`, {
1171
- handler: openBillingPortalHandler
1172
- });
1173
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/setup_payment`, {
1174
- handler: setupPaymentHandler
1175
- });
1176
- (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/query`, {
1177
- handler: queryHandler
1178
- });
1179
- };
1180
-
1181
- // src/libraries/backend/routes/backendRouter.ts
1182
- var import_rou35 = require("rou3");
1183
-
1184
- // src/libraries/backend/routes/entityRoutes.ts
1185
- var import_rou32 = require("rou3");
1186
- var createEntityHandler = withAuth({
1187
- fn: async ({
1188
- autumn,
1189
- customer_id,
1190
- body
1191
- }) => {
1192
- return await autumn.entities.create(customer_id, body);
1193
- }
1194
- });
1195
- var getEntityHandler = withAuth({
1196
- fn: async ({
1197
- autumn,
1198
- customer_id,
1199
- pathParams,
1200
- searchParams
1201
- }) => {
1202
- if (!pathParams?.entityId) {
1203
- return {
1204
- statusCode: 400,
1205
- body: {
1206
- error: "no_entity_id",
1207
- message: "Entity ID is required"
1208
- }
1209
- };
1210
- }
1211
- let params = {
1212
- expand: searchParams?.expand?.split(",")
1213
- };
1214
- let res = await autumn.entities.get(
1215
- customer_id,
1216
- pathParams.entityId,
1217
- params
1218
- );
1219
- return res;
1220
- }
1221
- });
1222
- var deleteEntityHandler = withAuth({
1223
- fn: async ({
1224
- autumn,
1225
- customer_id,
1226
- pathParams
1227
- }) => {
1228
- if (!pathParams?.entityId) {
1229
- return {
1230
- statusCode: 400,
1231
- body: {
1232
- error: "no_entity_id",
1233
- message: "Entity ID is required"
1234
- }
1235
- };
1236
- }
1237
- return await autumn.entities.delete(customer_id, pathParams.entityId);
1238
- }
1239
- });
1240
- var addEntityRoutes = async (router) => {
1241
- (0, import_rou32.addRoute)(router, "POST", "/api/autumn/entities", {
1242
- handler: createEntityHandler
1243
- });
1244
- (0, import_rou32.addRoute)(router, "GET", "/api/autumn/entities/:entityId", {
1245
- handler: getEntityHandler
1246
- });
1247
- (0, import_rou32.addRoute)(router, "DELETE", "/api/autumn/entities/:entityId", {
1248
- handler: deleteEntityHandler
1249
- });
1250
- };
1251
-
1252
- // src/libraries/backend/routes/referralRoutes.ts
1253
- var import_rou33 = require("rou3");
1254
- var createReferralCodeHandler = withAuth({
1255
- fn: async ({
1256
- autumn,
1257
- customer_id,
1258
- body
1259
- }) => {
1260
- return await autumn.referrals.createCode({
1261
- ...body,
1262
- customer_id
1263
- });
1264
- }
1265
- });
1266
- var redeemReferralCodeHandler = withAuth({
1267
- fn: async ({
1268
- autumn,
1269
- customer_id,
1270
- body
1271
- }) => {
1272
- return await autumn.referrals.redeemCode({
1273
- ...body,
1274
- customer_id
1275
- });
1276
- }
1277
- });
1278
- var addReferralRoutes = async (router) => {
1279
- (0, import_rou33.addRoute)(router, "POST", `${BASE_PATH}/referrals/code`, {
1280
- handler: createReferralCodeHandler
1281
- });
1282
- (0, import_rou33.addRoute)(router, "POST", `${BASE_PATH}/referrals/redeem`, {
1283
- handler: redeemReferralCodeHandler
1284
- });
1285
- };
1286
-
1287
- // src/libraries/backend/routes/productRoutes.ts
1288
- var import_rou34 = require("rou3");
1289
- var listProductsHandler = withAuth({
1290
- fn: async ({
1291
- autumn,
1292
- customer_id
1293
- }) => {
1294
- return await autumn.products.list({
1295
- customer_id
1296
- });
1297
- },
1298
- requireCustomer: false
1299
- });
1300
- var addProductRoutes = async (router) => {
1301
- (0, import_rou34.addRoute)(router, "GET", `${BASE_PATH}/products`, {
1302
- handler: listProductsHandler
1303
- });
1304
- };
1305
-
1306
- // src/libraries/backend/routes/backendRouter.ts
1307
- var sanitizeCustomerBody = (body) => {
1308
- let bodyCopy = { ...body };
1309
- delete bodyCopy.id;
1310
- delete bodyCopy.name;
1311
- delete bodyCopy.email;
1312
- return bodyCopy;
1313
- };
1314
- var createCustomerHandler = withAuth({
1315
- fn: async ({
1316
- autumn,
1317
- customer_id,
1318
- customer_data = {},
1319
- body
1320
- }) => {
1321
- let res = await autumn.customers.create({
1322
- id: customer_id,
1323
- ...customer_data,
1324
- ...sanitizeCustomerBody(body)
1325
- });
1326
- return res;
1327
- }
1328
- });
1329
- var getPricingTableHandler = withAuth({
1330
- fn: async ({
1331
- autumn,
1332
- customer_id
1333
- }) => {
1334
- return await fetchPricingTable({
1335
- instance: autumn,
1336
- params: {
1337
- customer_id: customer_id || void 0
1338
- }
1339
- });
1340
- },
1341
- requireCustomer: false
1342
- });
1343
- var createRouterWithOptions = () => {
1344
- const router = (0, import_rou35.createRouter)();
1345
- (0, import_rou35.addRoute)(router, "POST", `${BASE_PATH}/cors`, {
1346
- handler: () => {
1347
- return {
1348
- body: {
1349
- message: "OK"
1350
- },
1351
- statusCode: 200
1352
- };
1353
- }
1354
- });
1355
- (0, import_rou35.addRoute)(router, "POST", `${BASE_PATH}/customers`, {
1356
- handler: createCustomerHandler
1357
- });
1358
- (0, import_rou35.addRoute)(router, "GET", `${BASE_PATH}/components/pricing_table`, {
1359
- handler: getPricingTableHandler,
1360
- requireCustomer: false
1361
- });
1362
- addGenRoutes(router);
1363
- addEntityRoutes(router);
1364
- addReferralRoutes(router);
1365
- addProductRoutes(router);
1366
- return router;
1367
- };
1368
-
1369
- // src/libraries/backend/utils/secretKeyCheck.ts
1370
- var secretKeyCheck = (secretKey) => {
1371
- if (!secretKey && !process.env.AUTUMN_SECRET_KEY) {
1372
- return {
1373
- found: false,
1374
- error: {
1375
- statusCode: 500,
1376
- message: `Autumn secret key not found in ENV variables or passed into autumnHandler`,
1377
- code: "no_secret_key"
1378
- }
1379
- };
1380
- }
1381
- return { found: true, error: null };
1382
- };
1383
-
1384
- // src/libraries/backend/convex.ts
1385
- var import_rou36 = require("rou3");
1386
- function autumnHandler(options) {
1387
- const router = createRouterWithOptions();
1388
- return options.httpAction(async (ctx, request) => {
1389
- const headers = request.headers;
1390
- if (headers.get("Origin") !== null && headers.get("Access-Control-Request-Method") !== null && headers.get("Access-Control-Request-Headers") !== null) {
1391
- return new Response(null, {
1392
- headers: new Headers({
1393
- // e.g. https://mywebsite.com, configured on your Convex dashboard, or passed in as an option
1394
- "Access-Control-Allow-Origin": process.env.CLIENT_ORIGIN ?? "http://localhost:3000",
1395
- "Access-Control-Allow-Methods": "POST, GET, PATCH, DELETE, OPTIONS",
1396
- "Access-Control-Allow-Headers": "Content-Type, Digest, Authorization, Cookie",
1397
- "Access-Control-Allow-Credentials": "true",
1398
- "Access-Control-Max-Age": "86400"
1399
- })
1400
- });
1401
- }
1402
- let { found, error: resError } = secretKeyCheck(options.secretKey);
1403
- if (!found && !options.secretKey) {
1404
- return Response.json(resError, { status: resError.statusCode });
1405
- }
1406
- const method = request.method;
1407
- const url = new URL(request.url);
1408
- const searchParams = Object.fromEntries(url.searchParams);
1409
- const pathname = url.pathname;
1410
- const match = (0, import_rou36.findRoute)(router, method, pathname);
1411
- if (!match) {
1412
- return Response.json({ error: "Not found" }, { status: 404 });
1413
- }
1414
- const { data, params: pathParams } = match;
1415
- const { handler } = data;
1416
- const autumn = new Autumn({
1417
- secretKey: options.secretKey || void 0,
1418
- url: options.url
1419
- });
1420
- let body = null;
1421
- if (method === "POST" || method === "PUT" || method === "PATCH") {
1422
- try {
1423
- body = await request.json();
1424
- } catch (error) {
1425
- }
1426
- }
1427
- const result = await handler({
1428
- autumn,
1429
- body,
1430
- path: url.pathname,
1431
- getCustomer: async () => await options.identify(ctx, request),
1432
- pathParams,
1433
- searchParams
1434
- });
1435
- return Response.json(result.body, {
1436
- status: result.statusCode,
1437
- headers: new Headers({
1438
- "Access-Control-Allow-Origin": process.env.CLIENT_ORIGIN ?? "http://localhost:3000",
1439
- "Access-Control-Allow-Credentials": "true",
1440
- Vary: "origin"
1441
- })
1442
- });
1443
- });
1444
- }
1445
- // Annotate the CommonJS export names for ESM import in node:
1446
- 0 && (module.exports = {
1447
- autumnHandler
1448
- });