autumn-js 0.1.48 → 0.1.50

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 (245) hide show
  1. package/dist/libraries/backend/better-auth.d.mts +120 -1
  2. package/dist/libraries/backend/better-auth.d.ts +120 -1
  3. package/dist/libraries/backend/better-auth.js +306 -109
  4. package/dist/libraries/backend/better-auth.mjs +99 -16
  5. package/dist/libraries/backend/{chunk-56DMVCCC.mjs → chunk-3JZSANJ2.mjs} +12 -8
  6. package/dist/libraries/backend/{chunk-IVBYU3TD.mjs → chunk-ARO7WTGD.mjs} +1 -1
  7. package/dist/libraries/backend/{chunk-RN3IUPE5.mjs → chunk-CCYASXMA.mjs} +1 -1
  8. package/dist/libraries/backend/{chunk-N3VJUVPG.mjs → chunk-DRJWJ2E6.mjs} +1 -1
  9. package/dist/libraries/backend/chunk-GESUQTT6.mjs +51 -0
  10. package/dist/libraries/backend/{chunk-DKXKK76P.mjs → chunk-KWEMYBZN.mjs} +1 -1
  11. package/dist/libraries/backend/{chunk-7MOIXHFG.mjs → chunk-R6O4QEGY.mjs} +1 -1
  12. package/dist/libraries/backend/{chunk-AMSY36CS.mjs → chunk-SJD7DSMP.mjs} +93 -20
  13. package/dist/libraries/backend/convex.js +142 -27
  14. package/dist/libraries/backend/convex.mjs +8 -7
  15. package/dist/libraries/backend/elysia.js +141 -26
  16. package/dist/libraries/backend/elysia.mjs +8 -7
  17. package/dist/libraries/backend/express.d.mts +1 -1
  18. package/dist/libraries/backend/express.d.ts +1 -1
  19. package/dist/libraries/backend/express.js +141 -26
  20. package/dist/libraries/backend/express.mjs +8 -7
  21. package/dist/libraries/backend/fastify.js +141 -26
  22. package/dist/libraries/backend/fastify.mjs +8 -7
  23. package/dist/libraries/backend/hono.js +141 -26
  24. package/dist/libraries/backend/hono.mjs +8 -7
  25. package/dist/libraries/backend/index.d.mts +1 -1
  26. package/dist/libraries/backend/index.d.ts +1 -1
  27. package/dist/libraries/backend/index.js +141 -26
  28. package/dist/libraries/backend/index.mjs +8 -7
  29. package/dist/libraries/backend/next.js +141 -26
  30. package/dist/libraries/backend/next.mjs +8 -7
  31. package/dist/libraries/backend/react-router.js +141 -26
  32. package/dist/libraries/backend/react-router.mjs +8 -7
  33. package/dist/libraries/backend/{referralTypes-DRXeHK7Z.d.ts → referralTypes-C9qHeYGO.d.ts} +72 -19
  34. package/dist/libraries/backend/{referralTypes-BqCy0z20.d.mts → referralTypes-D7oP-WMD.d.mts} +72 -19
  35. package/dist/libraries/backend/remix_dep.js +141 -26
  36. package/dist/libraries/backend/remix_dep.mjs +8 -7
  37. package/dist/libraries/backend/routes/analyticsRoutes.d.mts +5 -0
  38. package/dist/libraries/backend/routes/analyticsRoutes.d.ts +5 -0
  39. package/dist/libraries/backend/routes/analyticsRoutes.js +1240 -0
  40. package/dist/libraries/backend/routes/analyticsRoutes.mjs +10 -0
  41. package/dist/libraries/backend/routes/backendRouter.js +139 -24
  42. package/dist/libraries/backend/routes/backendRouter.mjs +8 -7
  43. package/dist/libraries/backend/routes/entityRoutes.js +92 -19
  44. package/dist/libraries/backend/routes/entityRoutes.mjs +3 -3
  45. package/dist/libraries/backend/routes/genRoutes.js +92 -19
  46. package/dist/libraries/backend/routes/genRoutes.mjs +3 -3
  47. package/dist/libraries/backend/routes/productRoutes.js +92 -19
  48. package/dist/libraries/backend/routes/productRoutes.mjs +3 -3
  49. package/dist/libraries/backend/routes/referralRoutes.js +92 -19
  50. package/dist/libraries/backend/routes/referralRoutes.mjs +3 -3
  51. package/dist/libraries/backend/supabase.js +141 -26
  52. package/dist/libraries/backend/supabase.mjs +8 -7
  53. package/dist/libraries/backend/tanstack.js +141 -26
  54. package/dist/libraries/backend/tanstack.mjs +8 -7
  55. package/dist/libraries/backend/utils/backendRes.js +92 -19
  56. package/dist/libraries/backend/utils/backendRes.mjs +1 -1
  57. package/dist/libraries/backend/utils/withAuth.d.mts +1 -1
  58. package/dist/libraries/backend/utils/withAuth.d.ts +1 -1
  59. package/dist/libraries/backend/utils/withAuth.js +92 -19
  60. package/dist/libraries/backend/utils/withAuth.mjs +2 -2
  61. package/dist/libraries/react/AutumnContext.d.mts +7 -6
  62. package/dist/libraries/react/AutumnContext.d.ts +7 -6
  63. package/dist/libraries/react/AutumnContext.js +106 -19
  64. package/dist/libraries/react/AutumnContext.mjs +6 -5
  65. package/dist/libraries/react/BaseAutumnProvider.d.mts +7 -6
  66. package/dist/libraries/react/BaseAutumnProvider.d.ts +7 -6
  67. package/dist/libraries/react/BaseAutumnProvider.js +106 -19
  68. package/dist/libraries/react/BaseAutumnProvider.mjs +11 -10
  69. package/dist/libraries/react/{ReactAutumnClient-CbVApkWG.d.ts → ReactAutumnClient-ByLjLgNq.d.ts} +45 -6
  70. package/dist/libraries/react/{ReactAutumnClient-BJDtE2am.d.mts → ReactAutumnClient-CRqMIWBm.d.mts} +45 -6
  71. package/dist/libraries/react/ReactAutumnProvider.d.mts +2 -2
  72. package/dist/libraries/react/ReactAutumnProvider.d.ts +2 -2
  73. package/dist/libraries/react/ReactAutumnProvider.js +142 -19
  74. package/dist/libraries/react/ReactAutumnProvider.mjs +13 -12
  75. package/dist/libraries/react/{attachTypes-DbuZWzAP.d.mts → attachTypes-LC2oFUhU.d.mts} +1 -1
  76. package/dist/libraries/react/{attachTypes-CKp1KMwX.d.ts → attachTypes-LWj2dkge.d.ts} +1 -1
  77. package/dist/libraries/react/{chunk-4XXJ4V7H.mjs → chunk-36VHLX44.mjs} +1 -1
  78. package/dist/libraries/react/{chunk-JXIJRXXO.mjs → chunk-44N7NFQE.mjs} +1 -1
  79. package/dist/libraries/react/{chunk-5HXYQHAH.mjs → chunk-6RYHL5YC.mjs} +4 -4
  80. package/dist/libraries/react/{chunk-XCKJBGJ3.mjs → chunk-G6FXYR4B.mjs} +1 -1
  81. package/dist/libraries/react/chunk-GLEGQFJL.mjs +47 -0
  82. package/dist/libraries/react/{chunk-DOFQBXNO.mjs → chunk-GNQFXLIJ.mjs} +2 -2
  83. package/dist/libraries/react/{chunk-V4RYP3EY.mjs → chunk-H4IXGV3L.mjs} +1 -1
  84. package/dist/libraries/react/{chunk-32BXVAYB.mjs → chunk-IF6IRI5K.mjs} +37 -1
  85. package/dist/libraries/react/{chunk-KDWU3NXR.mjs → chunk-JX5R5JG5.mjs} +2 -2
  86. package/dist/libraries/react/{chunk-KBAOWIBN.mjs → chunk-KR7BWKK3.mjs} +2 -2
  87. package/dist/libraries/react/{chunk-RLUPTZ2E.mjs → chunk-M3CQSMV6.mjs} +2 -2
  88. package/dist/libraries/react/{chunk-IXIFYTKC.mjs → chunk-OMSHSISK.mjs} +16 -8
  89. package/dist/libraries/react/{chunk-AOH5T4UB.mjs → chunk-SP5G7NCG.mjs} +182 -109
  90. package/dist/libraries/react/{chunk-4CVRCTEQ.mjs → chunk-SQUHU2A6.mjs} +1 -1
  91. package/dist/libraries/react/chunk-XDQLJ7QR.mjs +17 -0
  92. package/dist/libraries/react/{chunk-XJ3IEXOB.mjs → chunk-XKLGBOXB.mjs} +16 -16
  93. package/dist/libraries/react/{chunk-POGRWGHO.mjs → chunk-XVE6NBEM.mjs} +5 -5
  94. package/dist/libraries/react/{chunk-TFTS75VA.mjs → chunk-YQPZAVM5.mjs} +5 -5
  95. package/dist/libraries/react/chunk-ZKEN5P26.mjs +48 -0
  96. package/dist/libraries/react/{chunk-UIB27I46.mjs → chunk-ZTM7O3QH.mjs} +1 -1
  97. package/dist/libraries/react/client/ConvexAutumnClient.d.mts +11 -6
  98. package/dist/libraries/react/client/ConvexAutumnClient.d.ts +11 -6
  99. package/dist/libraries/react/client/ConvexAutumnClient.js +128 -19
  100. package/dist/libraries/react/client/ConvexAutumnClient.mjs +2 -2
  101. package/dist/libraries/react/client/ReactAutumnClient.d.mts +7 -6
  102. package/dist/libraries/react/client/ReactAutumnClient.d.ts +7 -6
  103. package/dist/libraries/react/client/ReactAutumnClient.js +106 -19
  104. package/dist/libraries/react/client/ReactAutumnClient.mjs +5 -4
  105. package/dist/libraries/react/client/clientAnalyticsMethods.d.mts +14 -0
  106. package/dist/libraries/react/client/clientAnalyticsMethods.d.ts +14 -0
  107. package/dist/libraries/react/client/clientAnalyticsMethods.js +41 -0
  108. package/dist/libraries/react/client/clientAnalyticsMethods.mjs +10 -0
  109. package/dist/libraries/react/client/clientCompMethods.d.mts +7 -6
  110. package/dist/libraries/react/client/clientCompMethods.d.ts +7 -6
  111. package/dist/libraries/react/client/clientCusMethods.d.mts +7 -6
  112. package/dist/libraries/react/client/clientCusMethods.d.ts +7 -6
  113. package/dist/libraries/react/client/clientEntityMethods.d.mts +7 -6
  114. package/dist/libraries/react/client/clientEntityMethods.d.ts +7 -6
  115. package/dist/libraries/react/client/clientGenMethods.d.mts +7 -6
  116. package/dist/libraries/react/client/clientGenMethods.d.ts +7 -6
  117. package/dist/libraries/react/client/clientProdMethods.d.mts +7 -6
  118. package/dist/libraries/react/client/clientProdMethods.d.ts +7 -6
  119. package/dist/libraries/react/client/clientReferralMethods.d.mts +7 -6
  120. package/dist/libraries/react/client/clientReferralMethods.d.ts +7 -6
  121. package/dist/libraries/react/client/types/clientAnalyticsTypes.d.mts +102 -0
  122. package/dist/libraries/react/client/types/clientAnalyticsTypes.d.ts +102 -0
  123. package/dist/libraries/react/client/types/clientAnalyticsTypes.js +109 -0
  124. package/dist/libraries/react/client/types/clientAnalyticsTypes.mjs +77 -0
  125. package/dist/libraries/react/client/types/clientGenTypes.d.mts +2 -0
  126. package/dist/libraries/react/client/types/clientGenTypes.d.ts +2 -0
  127. package/dist/libraries/react/client/types/clientGenTypes.js +123 -50
  128. package/dist/libraries/react/client/types/clientGenTypes.mjs +1 -1
  129. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.d.mts +2 -2
  130. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.d.ts +2 -2
  131. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.js +112 -19
  132. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.mjs +27 -24
  133. package/dist/libraries/react/components/checkout-dialog/lib/checkout-content.d.mts +2 -2
  134. package/dist/libraries/react/components/checkout-dialog/lib/checkout-content.d.ts +2 -2
  135. package/dist/libraries/react/components/paywall-dialog/lib/paywall-content.d.mts +1 -1
  136. package/dist/libraries/react/components/paywall-dialog/lib/paywall-content.d.ts +1 -1
  137. package/dist/libraries/react/components/paywall-dialog/paywall-dialog-synced.js +112 -19
  138. package/dist/libraries/react/components/paywall-dialog/paywall-dialog-synced.mjs +27 -24
  139. package/dist/libraries/react/components/pricing-table/lib/pricing-table-content.d.mts +1 -1
  140. package/dist/libraries/react/components/pricing-table/lib/pricing-table-content.d.ts +1 -1
  141. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.mts +1 -1
  142. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.ts +1 -1
  143. package/dist/libraries/react/components/pricing-table/pricing-table-synced.js +112 -19
  144. package/dist/libraries/react/components/pricing-table/pricing-table-synced.mjs +27 -24
  145. package/dist/libraries/react/components/ui/popover.mjs +2 -2
  146. package/dist/libraries/react/{cusTypes-RU0fmR-t.d.mts → cusTypes-BugnOlMR.d.mts} +1 -1
  147. package/dist/libraries/react/{cusTypes-D3QQXjif.d.ts → cusTypes-DjKY5YzO.d.ts} +1 -1
  148. package/dist/libraries/react/{genTypes-B5_6Pu_4.d.mts → entTypes-Dk2qzC19.d.ts} +17 -9
  149. package/dist/libraries/react/{genTypes-CY6GNiAn.d.ts → entTypes-DnM96qsh.d.mts} +17 -9
  150. package/dist/libraries/react/eventTypes-MwzIb0X5.d.mts +9 -0
  151. package/dist/libraries/react/eventTypes-MwzIb0X5.d.ts +9 -0
  152. package/dist/libraries/react/hooks/helpers/handleCheck.d.mts +7 -6
  153. package/dist/libraries/react/hooks/helpers/handleCheck.d.ts +7 -6
  154. package/dist/libraries/react/hooks/helpers/handleCheck.js +92 -19
  155. package/dist/libraries/react/hooks/helpers/handleCheck.mjs +2 -2
  156. package/dist/libraries/react/hooks/helpers/useAutumnBase.d.mts +7 -6
  157. package/dist/libraries/react/hooks/helpers/useAutumnBase.d.ts +7 -6
  158. package/dist/libraries/react/hooks/helpers/useAutumnBase.js +92 -19
  159. package/dist/libraries/react/hooks/helpers/useAutumnBase.mjs +3 -3
  160. package/dist/libraries/react/hooks/useAggregateEvents.d.mts +17 -0
  161. package/dist/libraries/react/hooks/useAggregateEvents.d.ts +17 -0
  162. package/dist/libraries/react/hooks/useAggregateEvents.js +1499 -0
  163. package/dist/libraries/react/hooks/useAggregateEvents.mjs +19 -0
  164. package/dist/libraries/react/hooks/useAnalytics.d.mts +2 -3
  165. package/dist/libraries/react/hooks/useAnalytics.d.ts +2 -3
  166. package/dist/libraries/react/hooks/useAnalytics.js +106 -19
  167. package/dist/libraries/react/hooks/useAnalytics.mjs +7 -6
  168. package/dist/libraries/react/hooks/useCustomer.d.mts +7 -6
  169. package/dist/libraries/react/hooks/useCustomer.d.ts +7 -6
  170. package/dist/libraries/react/hooks/useCustomer.js +106 -19
  171. package/dist/libraries/react/hooks/useCustomer.mjs +11 -10
  172. package/dist/libraries/react/hooks/useCustomerBase.d.mts +7 -6
  173. package/dist/libraries/react/hooks/useCustomerBase.d.ts +7 -6
  174. package/dist/libraries/react/hooks/useCustomerBase.js +106 -19
  175. package/dist/libraries/react/hooks/useCustomerBase.mjs +10 -9
  176. package/dist/libraries/react/hooks/useEntity.d.mts +3 -4
  177. package/dist/libraries/react/hooks/useEntity.d.ts +3 -4
  178. package/dist/libraries/react/hooks/useEntity.js +106 -19
  179. package/dist/libraries/react/hooks/useEntity.mjs +11 -10
  180. package/dist/libraries/react/hooks/useEntityBase.d.mts +7 -6
  181. package/dist/libraries/react/hooks/useEntityBase.d.ts +7 -6
  182. package/dist/libraries/react/hooks/useEntityBase.js +106 -19
  183. package/dist/libraries/react/hooks/useEntityBase.mjs +10 -9
  184. package/dist/libraries/react/hooks/useListEvents.d.mts +33 -0
  185. package/dist/libraries/react/hooks/useListEvents.d.ts +33 -0
  186. package/dist/libraries/react/hooks/useListEvents.js +1500 -0
  187. package/dist/libraries/react/hooks/useListEvents.mjs +19 -0
  188. package/dist/libraries/react/hooks/usePaywall.d.mts +1 -1
  189. package/dist/libraries/react/hooks/usePaywall.d.ts +1 -1
  190. package/dist/libraries/react/hooks/usePaywall.js +106 -19
  191. package/dist/libraries/react/hooks/usePaywall.mjs +7 -6
  192. package/dist/libraries/react/hooks/usePricingTable.d.mts +1 -1
  193. package/dist/libraries/react/hooks/usePricingTable.d.ts +1 -1
  194. package/dist/libraries/react/hooks/usePricingTable.js +106 -19
  195. package/dist/libraries/react/hooks/usePricingTable.mjs +8 -7
  196. package/dist/libraries/react/hooks/usePricingTableBase.d.mts +7 -6
  197. package/dist/libraries/react/hooks/usePricingTableBase.d.ts +7 -6
  198. package/dist/libraries/react/hooks/usePricingTableBase.js +92 -19
  199. package/dist/libraries/react/hooks/usePricingTableBase.mjs +2 -2
  200. package/dist/libraries/react/hooks/useProductsBase.d.mts +7 -6
  201. package/dist/libraries/react/hooks/useProductsBase.d.ts +7 -6
  202. package/dist/libraries/react/index.d.mts +104 -9
  203. package/dist/libraries/react/index.d.ts +104 -9
  204. package/dist/libraries/react/index.js +215 -19
  205. package/dist/libraries/react/index.mjs +213 -19
  206. package/dist/libraries/react/{prodTypes-C4aZSZfO.d.mts → prodTypes-DVvNGoR7.d.mts} +1 -1
  207. package/dist/libraries/react/{prodTypes-C4aZSZfO.d.ts → prodTypes-DVvNGoR7.d.ts} +1 -1
  208. package/dist/next/client/NextAutumnClient.d.mts +120 -7
  209. package/dist/next/client/NextAutumnClient.d.ts +120 -7
  210. package/dist/next/client/NextAutumnProvider.d.mts +2 -2
  211. package/dist/next/client/NextAutumnProvider.d.ts +2 -2
  212. package/dist/next/client/{clientAttachTypes-BEgqHiPe.d.ts → clientAttachTypes-D-DJLqdl.d.mts} +2 -9
  213. package/dist/next/client/{clientAttachTypes-Bii5Xkzu.d.mts → clientAttachTypes-DjHP_QGK.d.ts} +2 -9
  214. package/dist/next/client/{clientEntTypes-aLfa3lyP.d.mts → clientEntTypes--IF-i2B5.d.mts} +2 -2
  215. package/dist/next/client/{clientEntTypes-Bsi7ciUF.d.ts → clientEntTypes-DtmpIviv.d.ts} +2 -2
  216. package/dist/next/client/clientUtils.d.mts +3 -3
  217. package/dist/next/client/clientUtils.d.ts +3 -3
  218. package/dist/next/client/{cusTypes-CXjHwB-c.d.mts → cusTypes-Cny6ELGC.d.mts} +2 -2
  219. package/dist/next/client/{cusTypes-B-rJwpui.d.ts → cusTypes-DJ8I9f_a.d.ts} +2 -2
  220. package/dist/next/client/{entTypes-BkN-Puru.d.mts → entTypes-2N5YUUiP.d.mts} +1 -1
  221. package/dist/next/client/{entTypes-DjKFS-Zk.d.ts → entTypes-D04IFxc9.d.ts} +1 -1
  222. package/dist/next/client/hooks/useAutumn.d.mts +3 -3
  223. package/dist/next/client/hooks/useAutumn.d.ts +3 -3
  224. package/dist/next/client/hooks/useCustomer.d.mts +5 -5
  225. package/dist/next/client/hooks/useCustomer.d.ts +5 -5
  226. package/dist/next/client/hooks/useEntity.d.mts +4 -4
  227. package/dist/next/client/hooks/useEntity.d.ts +4 -4
  228. package/dist/next/client/hooks/usePricingTable.d.mts +1 -1
  229. package/dist/next/client/hooks/usePricingTable.d.ts +1 -1
  230. package/dist/next/client/{prodTypes-B_VMILpU.d.mts → prodTypes-HrKk7bUE.d.mts} +1 -1
  231. package/dist/next/client/{prodTypes-B_VMILpU.d.ts → prodTypes-HrKk7bUE.d.ts} +1 -1
  232. package/dist/next/client/types.d.mts +3 -3
  233. package/dist/next/client/types.d.ts +3 -3
  234. package/dist/next/server/cusActions.d.mts +72 -19
  235. package/dist/next/server/cusActions.d.ts +72 -19
  236. package/dist/sdk/index.d.mts +104 -27
  237. package/dist/sdk/index.d.ts +104 -27
  238. package/dist/sdk/index.js +76 -6
  239. package/dist/sdk/index.mjs +74 -7
  240. package/dist/utils/encryptUtils.js +92 -19
  241. package/dist/utils/encryptUtils.mjs +92 -19
  242. package/package.json +1 -1
  243. package/dist/libraries/react/entTypes-CiODXSok.d.ts +0 -17
  244. package/dist/libraries/react/entTypes-SfJb3hb2.d.mts +0 -17
  245. package/dist/libraries/react/{chunk-AHFPBGNV.mjs → chunk-MM4LTFTB.mjs} +3 -3
@@ -0,0 +1,1240 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/libraries/backend/routes/analyticsRoutes.ts
31
+ var analyticsRoutes_exports = {};
32
+ __export(analyticsRoutes_exports, {
33
+ addAnalyticsRoutes: () => addAnalyticsRoutes
34
+ });
35
+ module.exports = __toCommonJS(analyticsRoutes_exports);
36
+ var import_rou3 = require("rou3");
37
+
38
+ // src/sdk/error.ts
39
+ var AutumnError = class _AutumnError extends Error {
40
+ message;
41
+ code;
42
+ constructor(response) {
43
+ super(response.message);
44
+ this.message = response.message;
45
+ this.code = response.code;
46
+ }
47
+ static fromError(error) {
48
+ return new _AutumnError({
49
+ message: error.message || "Unknown error",
50
+ code: error.code || "unknown_error"
51
+ });
52
+ }
53
+ toString() {
54
+ return `${this.message} (code: ${this.code})`;
55
+ }
56
+ toJSON() {
57
+ return {
58
+ message: this.message,
59
+ code: this.code
60
+ };
61
+ }
62
+ };
63
+
64
+ // src/sdk/general/genMethods.ts
65
+ var handleCheckout = async ({
66
+ instance,
67
+ params
68
+ }) => {
69
+ const finalParams = {
70
+ ...params,
71
+ success_url: params.success_url ?? instance.defaultReturnUrl
72
+ };
73
+ return instance.post("/checkout", finalParams);
74
+ };
75
+ var handleAttach = async ({
76
+ instance,
77
+ params
78
+ }) => {
79
+ const finalParams = {
80
+ ...params,
81
+ success_url: params.success_url ?? instance.defaultReturnUrl
82
+ };
83
+ return instance.post("/attach", finalParams);
84
+ };
85
+ var handleSetupPayment = async ({
86
+ instance,
87
+ params
88
+ }) => {
89
+ const finalParams = {
90
+ ...params,
91
+ success_url: params.success_url ?? instance.defaultReturnUrl
92
+ };
93
+ return instance.post("/setup_payment", finalParams);
94
+ };
95
+ var handleCancel = async ({
96
+ instance,
97
+ params
98
+ }) => {
99
+ return instance.post("/cancel", params);
100
+ };
101
+ var handleTrack = async ({
102
+ instance,
103
+ params
104
+ }) => {
105
+ return instance.post("/track", params);
106
+ };
107
+ var handleUsage = async ({
108
+ instance,
109
+ params
110
+ }) => {
111
+ return instance.post("/usage", params);
112
+ };
113
+ var handleCheck = async ({
114
+ instance,
115
+ params
116
+ }) => {
117
+ return instance.post("/check", params);
118
+ };
119
+ var handleQuery = async ({
120
+ instance,
121
+ params
122
+ }) => {
123
+ return instance.post("/query", params);
124
+ };
125
+
126
+ // src/libraries/backend/constants.ts
127
+ var autumnApiUrl = "https://api.useautumn.com/v1";
128
+ var BASE_PATH = "/api/autumn";
129
+
130
+ // src/sdk/utils.ts
131
+ var import_query_string = __toESM(require("query-string"));
132
+ var staticWrapper = (callback, instance, args) => {
133
+ if (!instance) {
134
+ instance = new Autumn();
135
+ }
136
+ return callback({ instance, ...args });
137
+ };
138
+ var buildQueryString = (params) => {
139
+ if (!params) return "";
140
+ return import_query_string.default.stringify(params, {
141
+ skipNull: true,
142
+ skipEmptyString: true
143
+ });
144
+ };
145
+ var buildPathWithQuery = (basePath, params) => {
146
+ const query = buildQueryString(params);
147
+ return query ? `${basePath}?${query}` : basePath;
148
+ };
149
+
150
+ // src/sdk/customers/cusMethods.ts
151
+ var customerMethods = (instance) => {
152
+ return {
153
+ list: (params) => staticWrapper(listCustomers, instance, { params }),
154
+ get: (id, params) => staticWrapper(getCustomer, instance, { id, params }),
155
+ create: (params) => staticWrapper(createCustomer, instance, { params }),
156
+ update: (id, params) => staticWrapper(updateCustomer, instance, { id, params }),
157
+ delete: (id, params) => staticWrapper(deleteCustomer, instance, { id, params }),
158
+ billingPortal: (id, params) => staticWrapper(billingPortal, instance, { id, params }),
159
+ updateBalances: (id, params) => staticWrapper(updateBalances, instance, { id, params })
160
+ };
161
+ };
162
+ var getExpandStr = (expand) => {
163
+ if (!expand) {
164
+ return "";
165
+ }
166
+ return `expand=${expand.join(",")}`;
167
+ };
168
+ var listCustomers = async ({
169
+ instance,
170
+ params
171
+ }) => {
172
+ const path = buildPathWithQuery("/customers", params);
173
+ return instance.get(path);
174
+ };
175
+ var getCustomer = async ({
176
+ instance,
177
+ id,
178
+ params
179
+ }) => {
180
+ if (!id) {
181
+ return {
182
+ data: null,
183
+ error: new AutumnError({
184
+ message: "Customer ID is required",
185
+ code: "CUSTOMER_ID_REQUIRED"
186
+ })
187
+ };
188
+ }
189
+ return instance.get(`/customers/${id}?${getExpandStr(params?.expand)}`);
190
+ };
191
+ var createCustomer = async ({
192
+ instance,
193
+ params
194
+ }) => {
195
+ return instance.post(`/customers?${getExpandStr(params?.expand)}`, params);
196
+ };
197
+ var updateCustomer = async ({
198
+ instance,
199
+ id,
200
+ params
201
+ }) => {
202
+ return instance.post(`/customers/${id}`, params);
203
+ };
204
+ var deleteCustomer = async ({
205
+ instance,
206
+ id,
207
+ params
208
+ }) => {
209
+ return instance.delete(`/customers/${id}${params?.delete_in_stripe ? "?delete_in_stripe=true" : ""}`);
210
+ };
211
+ var billingPortal = async ({
212
+ instance,
213
+ id,
214
+ params
215
+ }) => {
216
+ const finalParams = {
217
+ ...params,
218
+ return_url: params?.return_url ?? instance.defaultReturnUrl
219
+ };
220
+ return instance.post(`/customers/${id}/billing_portal`, finalParams);
221
+ };
222
+ var updateBalances = async ({
223
+ instance,
224
+ id,
225
+ params
226
+ }) => {
227
+ return instance.post(`/customers/${id}/balances`, {
228
+ balances: Array.isArray(params) ? params : [params]
229
+ });
230
+ };
231
+
232
+ // src/sdk/customers/entities/entMethods.ts
233
+ var entityMethods = (instance) => {
234
+ return {
235
+ get: (customer_id, entity_id, params) => staticWrapper(getEntity, instance, {
236
+ customer_id,
237
+ entity_id,
238
+ params
239
+ }),
240
+ create: (customer_id, params) => staticWrapper(createEntity, instance, { customer_id, params }),
241
+ transfer: (customer_id, params) => staticWrapper(transferProduct, instance, { customer_id, params }),
242
+ delete: (customer_id, entity_id) => staticWrapper(deleteEntity, instance, { customer_id, entity_id })
243
+ };
244
+ };
245
+ var getExpandStr2 = (expand) => {
246
+ if (!expand) {
247
+ return "";
248
+ }
249
+ return `expand=${expand.join(",")}`;
250
+ };
251
+ var getEntity = async ({
252
+ instance,
253
+ customer_id,
254
+ entity_id,
255
+ params
256
+ }) => {
257
+ return instance.get(
258
+ `/customers/${customer_id}/entities/${entity_id}?${getExpandStr2(
259
+ params?.expand
260
+ )}`
261
+ );
262
+ };
263
+ var createEntity = async ({
264
+ instance,
265
+ customer_id,
266
+ params
267
+ }) => {
268
+ return instance.post(`/customers/${customer_id}/entities`, params);
269
+ };
270
+ var deleteEntity = async ({
271
+ instance,
272
+ customer_id,
273
+ entity_id
274
+ }) => {
275
+ return instance.delete(`/customers/${customer_id}/entities/${entity_id}`);
276
+ };
277
+ var transferProduct = async ({
278
+ instance,
279
+ customer_id,
280
+ params
281
+ }) => {
282
+ return instance.post(`/customers/${customer_id}/transfer`, params);
283
+ };
284
+
285
+ // src/sdk/products/prodMethods.ts
286
+ var productMethods = (instance) => {
287
+ return {
288
+ get: (id) => staticWrapper(getProduct, instance, { id }),
289
+ create: (params) => staticWrapper(createProduct, instance, { params }),
290
+ list: (params) => staticWrapper(listProducts, instance, { params }),
291
+ delete: (id) => staticWrapper(deleteProduct, instance, { id })
292
+ };
293
+ };
294
+ var listProducts = async ({
295
+ instance,
296
+ params
297
+ }) => {
298
+ let path = "/products_beta";
299
+ if (params) {
300
+ const queryParams = new URLSearchParams();
301
+ for (const [key, value] of Object.entries(params)) {
302
+ if (value !== void 0) {
303
+ queryParams.append(key, String(value));
304
+ }
305
+ }
306
+ const queryString2 = queryParams.toString();
307
+ if (queryString2) {
308
+ path += `?${queryString2}`;
309
+ }
310
+ }
311
+ return instance.get(path);
312
+ };
313
+ var getProduct = async ({
314
+ instance,
315
+ id
316
+ }) => {
317
+ return instance.get(`/products/${id}`);
318
+ };
319
+ var createProduct = async ({
320
+ instance,
321
+ params
322
+ }) => {
323
+ return instance.post("/products", params);
324
+ };
325
+ var deleteProduct = async ({
326
+ instance,
327
+ id,
328
+ params
329
+ }) => {
330
+ const path = buildPathWithQuery(`/products/${id}`, params);
331
+ return instance.delete(path);
332
+ };
333
+
334
+ // src/sdk/referrals/referralMethods.ts
335
+ var referralMethods = (instance) => {
336
+ return {
337
+ createCode: (params) => staticWrapper(createReferralCode, instance, { params }),
338
+ redeemCode: (params) => staticWrapper(redeemReferralCode, instance, { params })
339
+ };
340
+ };
341
+ var createReferralCode = async ({
342
+ instance,
343
+ params
344
+ }) => {
345
+ return instance.post("/referrals/code", params);
346
+ };
347
+ var redeemReferralCode = async ({
348
+ instance,
349
+ params
350
+ }) => {
351
+ return instance.post("/referrals/redeem", params);
352
+ };
353
+
354
+ // src/sdk/response.ts
355
+ var toContainerResult = async ({
356
+ response,
357
+ logger: logger2,
358
+ logError = true
359
+ }) => {
360
+ if (response.status < 200 || response.status >= 300) {
361
+ let error;
362
+ try {
363
+ error = await response.json();
364
+ if (logError) {
365
+ logger2.error(`[Autumn] ${error.message}`);
366
+ }
367
+ } catch (error2) {
368
+ throw error2;
369
+ }
370
+ return {
371
+ data: null,
372
+ error: new AutumnError({
373
+ message: error.message,
374
+ code: error.code
375
+ }),
376
+ statusCode: response.status
377
+ };
378
+ }
379
+ try {
380
+ const data = await response.json();
381
+ return {
382
+ data,
383
+ error: null,
384
+ statusCode: response?.status
385
+ };
386
+ } catch (error) {
387
+ throw error;
388
+ }
389
+ };
390
+
391
+ // src/utils/logger.ts
392
+ var getTime = () => {
393
+ let timeString = (/* @__PURE__ */ new Date()).toISOString();
394
+ return `[${timeString.split("T")[1].split(".")[0]}]`;
395
+ };
396
+ var greaterThanLevel = (level) => {
397
+ return levels.indexOf(level) >= levels.indexOf(logger.level);
398
+ };
399
+ var levels = ["debug", "info", "warn", "error", "fatal"];
400
+ var logger = {
401
+ ...console,
402
+ level: "info",
403
+ debug: (...args) => {
404
+ if (greaterThanLevel("debug")) {
405
+ console.log(getTime(), "DEBUG", ...args);
406
+ }
407
+ },
408
+ log: (...args) => {
409
+ console.log(getTime(), "INFO", ...args);
410
+ },
411
+ info: (...args) => {
412
+ if (greaterThanLevel("info")) {
413
+ console.log(getTime(), "INFO", ...args);
414
+ }
415
+ },
416
+ warn: (...args) => {
417
+ if (greaterThanLevel("warn")) {
418
+ console.log(getTime(), "WARN", ...args);
419
+ }
420
+ },
421
+ error: (...args) => {
422
+ if (greaterThanLevel("error")) {
423
+ console.log(getTime(), "ERROR", ...args);
424
+ }
425
+ }
426
+ };
427
+
428
+ // src/sdk/features/featureMethods.ts
429
+ var featureMethods = (instance) => {
430
+ return {
431
+ list: () => staticWrapper(listFeatures, instance, {}),
432
+ get: (id) => staticWrapper(getFeature, instance, { id })
433
+ };
434
+ };
435
+ var listFeatures = async ({
436
+ instance,
437
+ params
438
+ }) => {
439
+ let path = "/features";
440
+ if (params) {
441
+ const queryParams = new URLSearchParams();
442
+ for (const [key, value] of Object.entries(params)) {
443
+ if (value !== void 0) {
444
+ queryParams.append(key, String(value));
445
+ }
446
+ }
447
+ const queryString2 = queryParams.toString();
448
+ if (queryString2) {
449
+ path += `?${queryString2}`;
450
+ }
451
+ }
452
+ return instance.get(path);
453
+ };
454
+ var getFeature = async ({
455
+ instance,
456
+ id
457
+ }) => {
458
+ return instance.get(`/features/${id}`);
459
+ };
460
+
461
+ // src/sdk/events/eventMethods.ts
462
+ var eventMethods = (instance) => {
463
+ return {
464
+ list: (params) => staticWrapper(handleEventList, instance, { params }),
465
+ aggregate: (params) => staticWrapper(handleEventAggregate, instance, { params })
466
+ };
467
+ };
468
+ var handleEventList = async ({
469
+ instance,
470
+ params
471
+ }) => {
472
+ return instance.post("/events/list", params);
473
+ };
474
+ var handleEventAggregate = async ({
475
+ instance,
476
+ params
477
+ }) => {
478
+ return instance.post("/events/aggregate", params);
479
+ };
480
+
481
+ // src/sdk/client.ts
482
+ var LATEST_API_VERSION = "1.2";
483
+ var Autumn = class {
484
+ secretKey;
485
+ publishableKey;
486
+ headers;
487
+ url;
488
+ logger = console;
489
+ defaultReturnUrl;
490
+ constructor(options) {
491
+ try {
492
+ this.secretKey = options?.secretKey || process.env.AUTUMN_SECRET_KEY;
493
+ this.publishableKey = options?.publishableKey || process.env.AUTUMN_PUBLISHABLE_KEY;
494
+ } catch (error) {
495
+ }
496
+ if (!this.secretKey && !this.publishableKey && !options?.headers) {
497
+ throw new Error("Autumn secret key or publishable key is required");
498
+ }
499
+ this.headers = options?.headers || {
500
+ Authorization: `Bearer ${this.secretKey || this.publishableKey}`,
501
+ "Content-Type": "application/json"
502
+ };
503
+ let version = options?.version || LATEST_API_VERSION;
504
+ this.headers["x-api-version"] = version;
505
+ this.url = options?.url || autumnApiUrl;
506
+ this.logger = logger;
507
+ this.logger.level = options?.logLevel || "info";
508
+ this.defaultReturnUrl = options?.defaultReturnUrl;
509
+ }
510
+ async get(path) {
511
+ const response = await fetch(`${this.url}${path}`, {
512
+ headers: this.headers
513
+ });
514
+ return toContainerResult({ response, logger: this.logger });
515
+ }
516
+ async post(path, body) {
517
+ try {
518
+ const response = await fetch(`${this.url}${path}`, {
519
+ method: "POST",
520
+ headers: this.headers,
521
+ body: JSON.stringify(body)
522
+ });
523
+ return toContainerResult({ response, logger: this.logger });
524
+ } catch (error) {
525
+ console.error("Error sending request:", error);
526
+ throw error;
527
+ }
528
+ }
529
+ async delete(path) {
530
+ const response = await fetch(`${this.url}${path}`, {
531
+ method: "DELETE",
532
+ headers: this.headers
533
+ });
534
+ return toContainerResult({ response, logger: this.logger });
535
+ }
536
+ static customers = customerMethods();
537
+ static products = productMethods();
538
+ static entities = entityMethods();
539
+ static referrals = referralMethods();
540
+ static features = featureMethods();
541
+ static events = eventMethods();
542
+ customers = customerMethods(this);
543
+ products = productMethods(this);
544
+ entities = entityMethods(this);
545
+ referrals = referralMethods(this);
546
+ features = featureMethods(this);
547
+ events = eventMethods(this);
548
+ /**
549
+ * Initiates a checkout flow for a product purchase.
550
+ *
551
+ * The checkout function handles the purchase process for products with pricing.
552
+ * It determines whether to show a dialog for user input or redirect directly
553
+ * to Stripe based on the customer's state and product requirements.
554
+ *
555
+ * @param params - Checkout parameters including product ID, customer data, and options
556
+ * @returns Promise resolving to checkout details including pricing, prorations, and URLs
557
+ *
558
+ * @example
559
+ * ```typescript
560
+ * const result = await autumn.checkout({
561
+ * customer_id: "user_123",
562
+ * product_id: "pro",
563
+ * success_url: "https://myapp.com/success"
564
+ * });
565
+ *
566
+ * if (result.url) {
567
+ * // Redirect to Stripe checkout
568
+ * window.location.href = result.url;
569
+ * }
570
+ * ```
571
+ */
572
+ async checkout(params) {
573
+ return handleCheckout({
574
+ instance: this,
575
+ params
576
+ });
577
+ }
578
+ static checkout = (params) => staticWrapper(handleCheckout, void 0, { params });
579
+ static usage = (params) => staticWrapper(handleUsage, void 0, { params });
580
+ /**
581
+ * Attaches a product to a customer, enabling access and handling billing.
582
+ *
583
+ * The attach function activates a product for a customer and applies all product items.
584
+ * When you attach a product:
585
+ * - The customer gains access to all features in the product
586
+ * - If the product has prices, the customer will be billed accordingly
587
+ * - If there's no existing payment method, a checkout URL will be generated
588
+ *
589
+ * @param params - Attach parameters including customer ID, product ID, and options
590
+ * @returns Promise resolving to attachment result with checkout URL if needed
591
+ *
592
+ * @example
593
+ * ```typescript
594
+ * const result = await autumn.attach({
595
+ * customer_id: "user_123",
596
+ * product_id: "pro",
597
+ * success_url: "https://myapp.com/success"
598
+ * });
599
+ *
600
+ * if (result.checkout_url) {
601
+ * // Payment required - redirect to checkout
602
+ * window.location.href = result.checkout_url;
603
+ * } else {
604
+ * // Product successfully attached
605
+ * console.log("Access granted:", result.message);
606
+ * }
607
+ * ```
608
+ */
609
+ async attach(params) {
610
+ return handleAttach({
611
+ instance: this,
612
+ params
613
+ });
614
+ }
615
+ static attach = (params) => staticWrapper(handleAttach, void 0, { params });
616
+ static setupPayment = (params) => staticWrapper(handleSetupPayment, void 0, { params });
617
+ /**
618
+ * Sets up a payment method for a customer.
619
+ *
620
+ * This method allows you to set up payment methods for customers without
621
+ * immediately charging them. Useful for collecting payment information
622
+ * before product attachment or for updating existing payment methods.
623
+ *
624
+ * @param params - Setup payment parameters including customer information
625
+ * @returns Promise resolving to setup payment result
626
+ *
627
+ * @example
628
+ * ```typescript
629
+ * const result = await autumn.setupPayment({
630
+ * customer_id: "user_123"
631
+ * });
632
+ * ```
633
+ */
634
+ async setupPayment(params) {
635
+ return handleSetupPayment({
636
+ instance: this,
637
+ params
638
+ });
639
+ }
640
+ static cancel = (params) => staticWrapper(handleCancel, void 0, { params });
641
+ /**
642
+ * Cancels a customer's subscription or product attachment.
643
+ *
644
+ * This method allows you to cancel a customer's subscription to a specific product.
645
+ * You can choose to cancel immediately or at the end of the billing cycle.
646
+ *
647
+ * @param params - Cancel parameters including customer ID and product ID
648
+ * @returns Promise resolving to cancellation result
649
+ *
650
+ * @example
651
+ * ```typescript
652
+ * const result = await autumn.cancel({
653
+ * customer_id: "user_123",
654
+ * product_id: "pro",
655
+ * cancel_immediately: false // Cancel at end of billing cycle
656
+ * });
657
+ * ```
658
+ */
659
+ async cancel(params) {
660
+ return handleCancel({
661
+ instance: this,
662
+ params
663
+ });
664
+ }
665
+ static check = (params) => staticWrapper(handleCheck, void 0, { params });
666
+ /**
667
+ * Checks if a customer has access to a specific feature.
668
+ *
669
+ * This method verifies whether a customer has permission to use a feature
670
+ * and checks their remaining balance/usage limits. It can be used to gate
671
+ * features and determine when to show upgrade prompts.
672
+ *
673
+ * @param params - Check parameters including customer ID and feature ID
674
+ * @returns Promise resolving to access check result with allowed status and balance info
675
+ *
676
+ * @example
677
+ * ```typescript
678
+ * const result = await autumn.check({
679
+ * customer_id: "user_123",
680
+ * feature_id: "messages",
681
+ * required_balance: 1
682
+ * });
683
+ *
684
+ * if (!result.allowed) {
685
+ * console.log("Feature access denied - upgrade required");
686
+ * }
687
+ * ```
688
+ */
689
+ async check(params) {
690
+ return handleCheck({
691
+ instance: this,
692
+ params
693
+ });
694
+ }
695
+ static track = (params) => staticWrapper(handleTrack, void 0, { params });
696
+ /**
697
+ * Tracks usage events for features or analytics.
698
+ *
699
+ * This method records usage events for metered features, updating the customer's
700
+ * balance and usage statistics. It's typically used server-side to ensure
701
+ * accurate tracking that cannot be manipulated by users.
702
+ *
703
+ * @param params - Track parameters including customer ID, feature ID, and usage value
704
+ * @returns Promise resolving to tracking result
705
+ *
706
+ * @example
707
+ * ```typescript
708
+ * const result = await autumn.track({
709
+ * customer_id: "user_123",
710
+ * feature_id: "messages",
711
+ * value: 1 // Track 1 message sent
712
+ * });
713
+ * ```
714
+ */
715
+ async track(params) {
716
+ return handleTrack({
717
+ instance: this,
718
+ params
719
+ });
720
+ }
721
+ /**
722
+ * Retrieves usage statistics and analytics for a customer.
723
+ *
724
+ * This method fetches detailed usage information for a customer's features,
725
+ * including current balances, usage history, and analytics data. Useful
726
+ * for displaying usage dashboards or generating reports.
727
+ *
728
+ * @param params - Usage parameters including customer ID and optional filters
729
+ * @returns Promise resolving to usage statistics and analytics data
730
+ *
731
+ * @example
732
+ * ```typescript
733
+ * const result = await autumn.usage({
734
+ * customer_id: "user_123",
735
+ * feature_id: "messages"
736
+ * value: 20 // Usage value
737
+ * });
738
+ * ```
739
+ */
740
+ async usage(params) {
741
+ return handleUsage({
742
+ instance: this,
743
+ params
744
+ });
745
+ }
746
+ static query = (params) => staticWrapper(handleQuery, void 0, { params });
747
+ /**
748
+ * Performs advanced queries on customer data and analytics.
749
+ *
750
+ * This method allows you to run complex queries against customer data,
751
+ * usage patterns, and billing information. Useful for generating reports,
752
+ * analytics, and custom data insights.
753
+ *
754
+ * @param params - Query parameters including customer ID and query specifications
755
+ * @returns Promise resolving to query results with requested data
756
+ *
757
+ * @example
758
+ * ```typescript
759
+ * const result = await autumn.query({
760
+ * customer_id: "user_123",
761
+ * feature_id: "messages" // feature id to fetch for query, can also be an array
762
+ * });
763
+ *
764
+ * ```
765
+ */
766
+ async query(params) {
767
+ return handleQuery({
768
+ instance: this,
769
+ params
770
+ });
771
+ }
772
+ };
773
+
774
+ // src/sdk/products/prodEnums.ts
775
+ var ProductItemInterval = /* @__PURE__ */ ((ProductItemInterval2) => {
776
+ ProductItemInterval2["Minute"] = "minute";
777
+ ProductItemInterval2["Hour"] = "hour";
778
+ ProductItemInterval2["Day"] = "day";
779
+ ProductItemInterval2["Week"] = "week";
780
+ ProductItemInterval2["Month"] = "month";
781
+ ProductItemInterval2["Quarter"] = "quarter";
782
+ ProductItemInterval2["SemiAnnual"] = "semi_annual";
783
+ ProductItemInterval2["Year"] = "year";
784
+ ProductItemInterval2["Multiple"] = "multiple";
785
+ return ProductItemInterval2;
786
+ })(ProductItemInterval || {});
787
+
788
+ // src/sdk/customers/cusEnums.ts
789
+ var import_v4 = require("zod/v4");
790
+ var CustomerExpandEnum = import_v4.z.enum([
791
+ "invoices",
792
+ "rewards",
793
+ "trials_used",
794
+ "entities",
795
+ "referrals",
796
+ "payment_method"
797
+ ]);
798
+
799
+ // src/sdk/customers/cusTypes.ts
800
+ var import_v42 = require("zod/v4");
801
+ var CoreCusFeatureSchema = import_v42.z.object({
802
+ unlimited: import_v42.z.boolean().optional(),
803
+ interval: import_v42.z.enum(ProductItemInterval).optional(),
804
+ balance: import_v42.z.number().nullish(),
805
+ usage: import_v42.z.number().optional(),
806
+ included_usage: import_v42.z.number().optional(),
807
+ next_reset_at: import_v42.z.number().nullish(),
808
+ overage_allowed: import_v42.z.boolean().optional(),
809
+ usage_limit: import_v42.z.number().optional(),
810
+ rollovers: import_v42.z.object({
811
+ balance: import_v42.z.number(),
812
+ expires_at: import_v42.z.number()
813
+ }).optional(),
814
+ breakdown: import_v42.z.array(
815
+ import_v42.z.object({
816
+ interval: import_v42.z.enum(ProductItemInterval),
817
+ balance: import_v42.z.number().optional(),
818
+ usage: import_v42.z.number().optional(),
819
+ included_usage: import_v42.z.number().optional(),
820
+ next_reset_at: import_v42.z.number().optional()
821
+ })
822
+ ).optional(),
823
+ credit_schema: import_v42.z.array(
824
+ import_v42.z.object({
825
+ feature_id: import_v42.z.string(),
826
+ credit_amount: import_v42.z.number()
827
+ })
828
+ ).optional()
829
+ });
830
+ var CustomerDataSchema = import_v42.z.object({
831
+ name: import_v42.z.string().nullish(),
832
+ email: import_v42.z.string().nullish(),
833
+ fingerprint: import_v42.z.string().nullish()
834
+ });
835
+ var CreateCustomerParamsSchema = import_v42.z.object({
836
+ id: import_v42.z.string().nullish(),
837
+ email: import_v42.z.string().nullish(),
838
+ name: import_v42.z.string().nullish(),
839
+ fingerprint: import_v42.z.string().nullish(),
840
+ metadata: import_v42.z.record(import_v42.z.string(), import_v42.z.any()).optional(),
841
+ expand: import_v42.z.array(CustomerExpandEnum).optional(),
842
+ stripe_id: import_v42.z.string().nullish()
843
+ });
844
+ var BillingPortalParamsSchema = import_v42.z.object({
845
+ return_url: import_v42.z.string().optional()
846
+ });
847
+ var UpdateBalancesParamsSchema = import_v42.z.object({
848
+ feature_id: import_v42.z.string(),
849
+ balance: import_v42.z.number()
850
+ }).or(
851
+ import_v42.z.array(
852
+ import_v42.z.object({
853
+ feature_id: import_v42.z.string(),
854
+ balance: import_v42.z.number()
855
+ })
856
+ )
857
+ );
858
+ var DeleteCustomerParamsSchema = import_v42.z.object({
859
+ delete_in_stripe: import_v42.z.boolean().optional()
860
+ });
861
+ var ListCustomersParamsSchema = import_v42.z.object({
862
+ limit: import_v42.z.number().optional(),
863
+ offset: import_v42.z.number().optional()
864
+ });
865
+
866
+ // src/sdk/general/checkTypes.ts
867
+ var import_v43 = require("zod/v4");
868
+ var CheckFeatureResultSchema = import_v43.z.object({
869
+ allowed: import_v43.z.boolean(),
870
+ feature_id: import_v43.z.string(),
871
+ customer_id: import_v43.z.string(),
872
+ entity_id: import_v43.z.string().optional(),
873
+ required_balance: import_v43.z.number()
874
+ }).extend(CoreCusFeatureSchema.shape);
875
+
876
+ // src/sdk/customers/entities/entTypes.ts
877
+ var import_v44 = require("zod/v4");
878
+ var EntityDataSchema = import_v44.z.object({
879
+ name: import_v44.z.string().optional(),
880
+ feature_id: import_v44.z.string()
881
+ });
882
+ var TransferProductParamsSchema = import_v44.z.object({
883
+ from_entity_id: import_v44.z.string(),
884
+ to_entity_id: import_v44.z.string(),
885
+ product_id: import_v44.z.string()
886
+ });
887
+
888
+ // src/sdk/general/genTypes.ts
889
+ var import_v45 = require("zod/v4");
890
+ var CancelParamsSchema = import_v45.z.object({
891
+ customer_id: import_v45.z.string(),
892
+ product_id: import_v45.z.string(),
893
+ entity_id: import_v45.z.string().optional(),
894
+ cancel_immediately: import_v45.z.boolean().optional()
895
+ });
896
+ var CancelResultSchema = import_v45.z.object({
897
+ success: import_v45.z.boolean(),
898
+ customer_id: import_v45.z.string(),
899
+ product_id: import_v45.z.string()
900
+ });
901
+ var TrackParamsSchema = import_v45.z.object({
902
+ customer_id: import_v45.z.string(),
903
+ value: import_v45.z.number().optional(),
904
+ feature_id: import_v45.z.string().optional(),
905
+ event_name: import_v45.z.string().optional(),
906
+ entity_id: import_v45.z.string().optional(),
907
+ customer_data: import_v45.z.any().optional(),
908
+ idempotency_key: import_v45.z.string().optional(),
909
+ entity_data: import_v45.z.any().optional(),
910
+ properties: import_v45.z.record(import_v45.z.string(), import_v45.z.any()).optional()
911
+ });
912
+ var TrackResultSchema = import_v45.z.object({
913
+ id: import_v45.z.string(),
914
+ code: import_v45.z.string(),
915
+ customer_id: import_v45.z.string(),
916
+ feature_id: import_v45.z.string().optional(),
917
+ event_name: import_v45.z.string().optional()
918
+ });
919
+ var CheckParamsSchema = import_v45.z.object({
920
+ customer_id: import_v45.z.string(),
921
+ feature_id: import_v45.z.string().optional(),
922
+ product_id: import_v45.z.string().optional(),
923
+ entity_id: import_v45.z.string().optional(),
924
+ customer_data: import_v45.z.any().optional(),
925
+ required_balance: import_v45.z.number().optional(),
926
+ send_event: import_v45.z.boolean().optional(),
927
+ with_preview: import_v45.z.boolean().optional(),
928
+ entity_data: EntityDataSchema.optional()
929
+ });
930
+
931
+ // src/sdk/referrals/referralTypes.ts
932
+ var import_v46 = require("zod/v4");
933
+ var CreateReferralCodeParamsSchema = import_v46.z.object({
934
+ customer_id: import_v46.z.string(),
935
+ program_id: import_v46.z.string()
936
+ });
937
+ var RedeemReferralCodeParamsSchema = import_v46.z.object({
938
+ code: import_v46.z.string(),
939
+ customer_id: import_v46.z.string()
940
+ });
941
+
942
+ // src/sdk/general/attachTypes.ts
943
+ var import_v47 = require("zod/v4");
944
+ var AttachFeatureOptionsSchema = import_v47.z.object({
945
+ feature_id: import_v47.z.string(),
946
+ quantity: import_v47.z.number()
947
+ });
948
+ var AttachParamsSchema = import_v47.z.object({
949
+ customer_id: import_v47.z.string(),
950
+ product_id: import_v47.z.string().optional(),
951
+ entity_id: import_v47.z.string().optional(),
952
+ options: import_v47.z.array(AttachFeatureOptionsSchema).optional(),
953
+ product_ids: import_v47.z.array(import_v47.z.string()).optional(),
954
+ free_trial: import_v47.z.boolean().optional(),
955
+ success_url: import_v47.z.string().optional(),
956
+ metadata: import_v47.z.record(import_v47.z.string(), import_v47.z.string()).optional(),
957
+ force_checkout: import_v47.z.boolean().optional(),
958
+ customer_data: CustomerDataSchema.optional(),
959
+ entity_data: import_v47.z.any().optional(),
960
+ checkout_session_params: import_v47.z.record(import_v47.z.string(), import_v47.z.any()).optional(),
961
+ reward: import_v47.z.string().optional(),
962
+ invoice: import_v47.z.boolean().optional()
963
+ });
964
+ var AttachResultSchema = import_v47.z.object({
965
+ checkout_url: import_v47.z.string().optional(),
966
+ customer_id: import_v47.z.string(),
967
+ product_ids: import_v47.z.array(import_v47.z.string()),
968
+ code: import_v47.z.string(),
969
+ message: import_v47.z.string(),
970
+ customer_data: import_v47.z.any().optional(),
971
+ invoice: import_v47.z.object({
972
+ status: import_v47.z.string(),
973
+ stripe_id: import_v47.z.string(),
974
+ hosted_invoice_url: import_v47.z.string().nullable(),
975
+ total: import_v47.z.number(),
976
+ currency: import_v47.z.string()
977
+ }).optional()
978
+ });
979
+ var CheckoutParamsSchema = import_v47.z.object({
980
+ customer_id: import_v47.z.string(),
981
+ product_id: import_v47.z.string(),
982
+ product_ids: import_v47.z.array(import_v47.z.string()).optional(),
983
+ entity_id: import_v47.z.string().optional(),
984
+ options: import_v47.z.array(AttachFeatureOptionsSchema).optional(),
985
+ force_checkout: import_v47.z.boolean().optional(),
986
+ invoice: import_v47.z.boolean().optional(),
987
+ success_url: import_v47.z.string().optional(),
988
+ customer_data: CustomerDataSchema.optional(),
989
+ entity_data: import_v47.z.any().optional(),
990
+ checkout_session_params: import_v47.z.record(import_v47.z.string(), import_v47.z.any()).optional(),
991
+ reward: import_v47.z.string().optional()
992
+ });
993
+
994
+ // src/sdk/general/cursorTypes.ts
995
+ var import_v48 = require("zod/v4");
996
+ var PaginationDefaults = {
997
+ Limit: 100,
998
+ MaxLimit: 1e3
999
+ };
1000
+ var CursorPaginationQuerySchema = import_v48.z.object({
1001
+ starting_after: import_v48.z.string().optional(),
1002
+ limit: import_v48.z.coerce.number().int().min(1).max(PaginationDefaults.MaxLimit).default(PaginationDefaults.Limit).optional()
1003
+ });
1004
+ var createCursorPaginatedResponseSchema = (itemSchema) => import_v48.z.object({
1005
+ list: import_v48.z.array(itemSchema),
1006
+ has_more: import_v48.z.boolean(),
1007
+ next_cursor: import_v48.z.string().nullable()
1008
+ });
1009
+
1010
+ // src/sdk/events/eventTypes.ts
1011
+ var import_v49 = require("zod/v4");
1012
+ var QueryRangeEnum = import_v49.z.enum([
1013
+ "24h",
1014
+ "7d",
1015
+ "30d",
1016
+ "90d",
1017
+ "last_cycle",
1018
+ "1bc",
1019
+ "3bc"
1020
+ ]);
1021
+ var BinSizeEnum = import_v49.z.enum(["day", "hour"]);
1022
+ var QueryParamsSchema = import_v49.z.object({
1023
+ customer_id: import_v49.z.string(),
1024
+ feature_id: import_v49.z.string().or(import_v49.z.array(import_v49.z.string())),
1025
+ range: QueryRangeEnum.optional(),
1026
+ group_by: import_v49.z.string().startsWith("properties.").optional(),
1027
+ bin_size: BinSizeEnum.optional(),
1028
+ custom_range: import_v49.z.object({
1029
+ start: import_v49.z.number(),
1030
+ end: import_v49.z.number()
1031
+ }).optional()
1032
+ });
1033
+ var LogParamsSchema = CursorPaginationQuerySchema.extend({
1034
+ customer_id: import_v49.z.string(),
1035
+ feature_id: import_v49.z.string().or(import_v49.z.array(import_v49.z.string())),
1036
+ time_range: import_v49.z.object({
1037
+ start: import_v49.z.coerce.number().optional(),
1038
+ end: import_v49.z.coerce.number().optional()
1039
+ }).optional()
1040
+ });
1041
+ var EventLogSchema = import_v49.z.object({
1042
+ id: import_v49.z.string().describe("Event ID (KSUID)"),
1043
+ timestamp: import_v49.z.number().describe("Event timestamp (epoch milliseconds)"),
1044
+ event_name: import_v49.z.string().describe("Name of the event"),
1045
+ customer_id: import_v49.z.string().describe("Customer identifier"),
1046
+ value: import_v49.z.number().describe("Event value/count"),
1047
+ properties: import_v49.z.object({}).describe("Event properties (JSONB)")
1048
+ });
1049
+ var EventLogResponseSchema = createCursorPaginatedResponseSchema(EventLogSchema);
1050
+
1051
+ // src/sdk/features/featureTypes.ts
1052
+ var import_v410 = require("zod/v4");
1053
+ var FeatureType = /* @__PURE__ */ ((FeatureType2) => {
1054
+ FeatureType2["Boolean"] = "boolean";
1055
+ FeatureType2["SingleUse"] = "single_use";
1056
+ FeatureType2["ContinuousUse"] = "continuous_use";
1057
+ FeatureType2["CreditSystem"] = "credit_system";
1058
+ return FeatureType2;
1059
+ })(FeatureType || {});
1060
+ var FeatureSchema = import_v410.z.object({
1061
+ id: import_v410.z.string(),
1062
+ name: import_v410.z.string(),
1063
+ type: import_v410.z.enum(FeatureType),
1064
+ display: import_v410.z.object({
1065
+ singular: import_v410.z.string(),
1066
+ plural: import_v410.z.string()
1067
+ }).nullish(),
1068
+ credit_schema: import_v410.z.array(
1069
+ import_v410.z.object({
1070
+ metered_feature_id: import_v410.z.string(),
1071
+ credit_cost: import_v410.z.number()
1072
+ })
1073
+ ).nullish(),
1074
+ archived: import_v410.z.boolean()
1075
+ });
1076
+
1077
+ // src/libraries/backend/utils/backendRes.ts
1078
+ var toBackendRes = ({ res }) => {
1079
+ let statusCode = res.statusCode ? res.statusCode : res.error ? 500 : 200;
1080
+ return {
1081
+ body: res.data ? res.data : res.error,
1082
+ statusCode
1083
+ };
1084
+ };
1085
+ var toBackendError = ({
1086
+ path,
1087
+ message,
1088
+ code,
1089
+ statusCode = 500
1090
+ }) => {
1091
+ return {
1092
+ statusCode,
1093
+ body: new AutumnError({
1094
+ message: message || "Internal server error",
1095
+ code: code || "internal_server_error"
1096
+ })
1097
+ };
1098
+ };
1099
+
1100
+ // src/utils/toSnakeCase.ts
1101
+ function stringToSnakeCase(str) {
1102
+ return str.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase();
1103
+ }
1104
+ var toSnakeCase = ({
1105
+ obj,
1106
+ excludeKeys,
1107
+ excludeChildrenOf
1108
+ }) => {
1109
+ if (Array.isArray(obj)) {
1110
+ return obj.map(
1111
+ (item) => toSnakeCase({ obj: item, excludeKeys, excludeChildrenOf })
1112
+ );
1113
+ } else if (obj !== null && typeof obj === "object") {
1114
+ return Object.fromEntries(
1115
+ Object.entries(obj).map(([key, value]) => {
1116
+ const snakeKey = stringToSnakeCase(key);
1117
+ if (excludeKeys?.includes(key)) {
1118
+ return [key, value];
1119
+ }
1120
+ if (excludeChildrenOf?.includes(key)) {
1121
+ return [snakeKey, value];
1122
+ }
1123
+ return [
1124
+ snakeKey,
1125
+ toSnakeCase({
1126
+ obj: value,
1127
+ excludeKeys,
1128
+ excludeChildrenOf
1129
+ })
1130
+ ];
1131
+ })
1132
+ );
1133
+ }
1134
+ return obj;
1135
+ };
1136
+
1137
+ // src/libraries/backend/utils/withAuth.ts
1138
+ var withAuth = ({
1139
+ fn,
1140
+ requireCustomer = true
1141
+ }) => {
1142
+ return async ({
1143
+ autumn,
1144
+ body,
1145
+ path,
1146
+ getCustomer: getCustomer2,
1147
+ pathParams,
1148
+ searchParams
1149
+ }) => {
1150
+ let authResult = await getCustomer2();
1151
+ let customerId = authResult?.customerId;
1152
+ if (!customerId && requireCustomer) {
1153
+ if (body?.errorOnNotFound === false) {
1154
+ return {
1155
+ statusCode: 202,
1156
+ body: null
1157
+ };
1158
+ } else {
1159
+ logger.error(
1160
+ `[Autumn]: customerId returned from identify function is ${customerId}`
1161
+ );
1162
+ return toBackendError({
1163
+ path,
1164
+ message: `customerId returned from identify function is ${customerId}`,
1165
+ code: "no_customer_id",
1166
+ statusCode: 401
1167
+ });
1168
+ }
1169
+ }
1170
+ let cusData = authResult?.customerData || body?.customer_data;
1171
+ if (body) {
1172
+ body = toSnakeCase({
1173
+ obj: body,
1174
+ excludeChildrenOf: ["checkoutSessionParams", "properties"]
1175
+ });
1176
+ }
1177
+ try {
1178
+ let res = await fn({
1179
+ body,
1180
+ autumn,
1181
+ customer_id: customerId,
1182
+ customer_data: cusData,
1183
+ pathParams,
1184
+ searchParams
1185
+ });
1186
+ return toBackendRes({ res });
1187
+ } catch (error) {
1188
+ logger.error(`${error.message}`);
1189
+ return toBackendError({
1190
+ path,
1191
+ message: error.message || "unknown error",
1192
+ code: "internal_error"
1193
+ });
1194
+ }
1195
+ };
1196
+ };
1197
+
1198
+ // src/libraries/backend/routes/analyticsRoutes.ts
1199
+ var sanitizeBody = (body) => {
1200
+ const bodyCopy = { ...body };
1201
+ delete bodyCopy.customer_id;
1202
+ delete bodyCopy.customer_data;
1203
+ return bodyCopy;
1204
+ };
1205
+ var listEventsHandler = withAuth({
1206
+ fn: async ({
1207
+ autumn,
1208
+ customer_id,
1209
+ body
1210
+ }) => {
1211
+ return await autumn.events.list({
1212
+ ...sanitizeBody(body),
1213
+ customer_id
1214
+ });
1215
+ }
1216
+ });
1217
+ var aggregateEventsHandler = withAuth({
1218
+ fn: async ({
1219
+ autumn,
1220
+ customer_id,
1221
+ body
1222
+ }) => {
1223
+ return await autumn.events.aggregate({
1224
+ ...sanitizeBody(body),
1225
+ customer_id
1226
+ });
1227
+ }
1228
+ });
1229
+ var addAnalyticsRoutes = (router) => {
1230
+ (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/events/list`, {
1231
+ handler: listEventsHandler
1232
+ });
1233
+ (0, import_rou3.addRoute)(router, "POST", `${BASE_PATH}/events/aggregate`, {
1234
+ handler: aggregateEventsHandler
1235
+ });
1236
+ };
1237
+ // Annotate the CommonJS export names for ESM import in node:
1238
+ 0 && (module.exports = {
1239
+ addAnalyticsRoutes
1240
+ });