@vandenberghinc/volt 1.2.5 → 1.2.6

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 (489) hide show
  1. package/frontend/assets/admin/admin.png +0 -0
  2. package/frontend/assets/admin/password.webp +0 -0
  3. package/frontend/assets/icons/arrow.v1.webp +0 -0
  4. package/frontend/assets/icons/copy.webp +0 -0
  5. package/frontend/assets/payments/arrow.long.webp +0 -0
  6. package/frontend/assets/payments/arrow.long2.webp +0 -0
  7. package/frontend/assets/payments/cancelled.webp +0 -0
  8. package/frontend/assets/payments/check.sign.webp +0 -0
  9. package/frontend/assets/payments/check.webp +0 -0
  10. package/frontend/assets/payments/close.webp +0 -0
  11. package/frontend/assets/payments/error.webp +0 -0
  12. package/frontend/assets/payments/exclamation.webp +0 -0
  13. package/frontend/assets/payments/minus.webp +0 -0
  14. package/frontend/assets/payments/party.webp +0 -0
  15. package/frontend/assets/payments/plus.webp +0 -0
  16. package/frontend/assets/payments/shopping_cart.webp +0 -0
  17. package/frontend/assets/payments/trash.webp +0 -0
  18. package/package.json +5 -1
  19. package/.libris/config.json +0 -82
  20. package/backend/dist/cjs/backend/src/blacklist.d.ts +0 -12
  21. package/backend/dist/cjs/backend/src/blacklist.js +0 -78
  22. package/backend/dist/cjs/backend/src/cli.d.ts +0 -2
  23. package/backend/dist/cjs/backend/src/cli.js +0 -198
  24. package/backend/dist/cjs/backend/src/database/collection.d.ts +0 -1765
  25. package/backend/dist/cjs/backend/src/database/collection.js +0 -3301
  26. package/backend/dist/cjs/backend/src/database/database.d.ts +0 -92
  27. package/backend/dist/cjs/backend/src/database/database.js +0 -170
  28. package/backend/dist/cjs/backend/src/database/document.d.ts +0 -1
  29. package/backend/dist/cjs/backend/src/database/document.js +0 -15
  30. package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +0 -6
  31. package/backend/dist/cjs/backend/src/database/filters/filters.js +0 -15
  32. package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +0 -223
  33. package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +0 -15
  34. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.d.ts +0 -1
  35. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +0 -443
  36. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.d.ts +0 -1
  37. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +0 -15
  38. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +0 -50
  39. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +0 -15
  40. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +0 -76
  41. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +0 -15
  42. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +0 -75
  43. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +0 -15
  44. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +0 -219
  45. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +0 -15
  46. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +0 -165
  47. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +0 -15
  48. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +0 -5
  49. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +0 -355
  50. package/backend/dist/cjs/backend/src/database/flatten.d.ts +0 -78
  51. package/backend/dist/cjs/backend/src/database/flatten.js +0 -53
  52. package/backend/dist/cjs/backend/src/database/flatten_test.d.ts +0 -1
  53. package/backend/dist/cjs/backend/src/database/flatten_test.js +0 -175
  54. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.d.ts +0 -533
  55. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.js +0 -1046
  56. package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +0 -551
  57. package/backend/dist/cjs/backend/src/database/quota/quota.js +0 -1108
  58. package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +0 -534
  59. package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +0 -1087
  60. package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +0 -412
  61. package/backend/dist/cjs/backend/src/database/quota/safe_int.js +0 -745
  62. package/backend/dist/cjs/backend/src/endpoint.d.ts +0 -346
  63. package/backend/dist/cjs/backend/src/endpoint.js +0 -468
  64. package/backend/dist/cjs/backend/src/errors/index.d.ts +0 -7
  65. package/backend/dist/cjs/backend/src/errors/index.js +0 -25
  66. package/backend/dist/cjs/backend/src/errors/internal_external.d.ts +0 -52
  67. package/backend/dist/cjs/backend/src/errors/internal_external.js +0 -95
  68. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +0 -41
  69. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.js +0 -47
  70. package/backend/dist/cjs/backend/src/errors/system_error.d.ts +0 -261
  71. package/backend/dist/cjs/backend/src/errors/system_error.js +0 -436
  72. package/backend/dist/cjs/backend/src/events.d.ts +0 -97
  73. package/backend/dist/cjs/backend/src/events.js +0 -15
  74. package/backend/dist/cjs/backend/src/frontend.d.ts +0 -11
  75. package/backend/dist/cjs/backend/src/frontend.js +0 -37
  76. package/backend/dist/cjs/backend/src/image_endpoint.d.ts +0 -44
  77. package/backend/dist/cjs/backend/src/image_endpoint.js +0 -185
  78. package/backend/dist/cjs/backend/src/index.d.ts +0 -23
  79. package/backend/dist/cjs/backend/src/index.js +0 -70
  80. package/backend/dist/cjs/backend/src/logger.d.ts +0 -5
  81. package/backend/dist/cjs/backend/src/logger.js +0 -15
  82. package/backend/dist/cjs/backend/src/meta.d.ts +0 -112
  83. package/backend/dist/cjs/backend/src/meta.js +0 -181
  84. package/backend/dist/cjs/backend/src/payments/paddle.d.ts +0 -329
  85. package/backend/dist/cjs/backend/src/payments/paddle.js +0 -1996
  86. package/backend/dist/cjs/backend/src/payments/stripe/checkout.d.ts +0 -113
  87. package/backend/dist/cjs/backend/src/payments/stripe/checkout.js +0 -295
  88. package/backend/dist/cjs/backend/src/payments/stripe/customers.d.ts +0 -17
  89. package/backend/dist/cjs/backend/src/payments/stripe/customers.js +0 -164
  90. package/backend/dist/cjs/backend/src/payments/stripe/error.d.ts +0 -74
  91. package/backend/dist/cjs/backend/src/payments/stripe/error.js +0 -64
  92. package/backend/dist/cjs/backend/src/payments/stripe/events.d.ts +0 -155
  93. package/backend/dist/cjs/backend/src/payments/stripe/events.js +0 -15
  94. package/backend/dist/cjs/backend/src/payments/stripe/meters.d.ts +0 -105
  95. package/backend/dist/cjs/backend/src/payments/stripe/meters.js +0 -230
  96. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.d.ts +0 -58
  97. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.js +0 -109
  98. package/backend/dist/cjs/backend/src/payments/stripe/products.d.ts +0 -519
  99. package/backend/dist/cjs/backend/src/payments/stripe/products.js +0 -650
  100. package/backend/dist/cjs/backend/src/payments/stripe/stripe.d.ts +0 -215
  101. package/backend/dist/cjs/backend/src/payments/stripe/stripe.js +0 -468
  102. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.d.ts +0 -172
  103. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.js +0 -557
  104. package/backend/dist/cjs/backend/src/payments/stripe/utils.d.ts +0 -63
  105. package/backend/dist/cjs/backend/src/payments/stripe/utils.js +0 -118
  106. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.d.ts +0 -105
  107. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.js +0 -627
  108. package/backend/dist/cjs/backend/src/plugins/browser.d.ts +0 -1
  109. package/backend/dist/cjs/backend/src/plugins/browser.js +0 -15
  110. package/backend/dist/cjs/backend/src/plugins/communication.d.ts +0 -70
  111. package/backend/dist/cjs/backend/src/plugins/communication.js +0 -196
  112. package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +0 -255
  113. package/backend/dist/cjs/backend/src/plugins/mail/mail.js +0 -381
  114. package/backend/dist/cjs/backend/src/plugins/mail/ui.d.ts +0 -297
  115. package/backend/dist/cjs/backend/src/plugins/mail/ui.js +0 -1370
  116. package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +0 -1
  117. package/backend/dist/cjs/backend/src/plugins/pdf.js +0 -1456
  118. package/backend/dist/cjs/backend/src/plugins/thread_monitor.d.ts +0 -18
  119. package/backend/dist/cjs/backend/src/plugins/thread_monitor.js +0 -116
  120. package/backend/dist/cjs/backend/src/rate_limit.d.ts +0 -148
  121. package/backend/dist/cjs/backend/src/rate_limit.js +0 -543
  122. package/backend/dist/cjs/backend/src/route.d.ts +0 -39
  123. package/backend/dist/cjs/backend/src/route.js +0 -172
  124. package/backend/dist/cjs/backend/src/server.d.ts +0 -502
  125. package/backend/dist/cjs/backend/src/server.js +0 -1713
  126. package/backend/dist/cjs/backend/src/server.old.d.ts +0 -594
  127. package/backend/dist/cjs/backend/src/server.old.js +0 -2058
  128. package/backend/dist/cjs/backend/src/splash_screen.d.ts +0 -93
  129. package/backend/dist/cjs/backend/src/splash_screen.js +0 -119
  130. package/backend/dist/cjs/backend/src/status.d.ts +0 -89
  131. package/backend/dist/cjs/backend/src/status.js +0 -211
  132. package/backend/dist/cjs/backend/src/stream.d.ts +0 -494
  133. package/backend/dist/cjs/backend/src/stream.js +0 -1370
  134. package/backend/dist/cjs/backend/src/users.d.ts +0 -926
  135. package/backend/dist/cjs/backend/src/users.js +0 -2223
  136. package/backend/dist/cjs/backend/src/utils.d.ts +0 -22
  137. package/backend/dist/cjs/backend/src/utils.js +0 -626
  138. package/backend/dist/cjs/backend/src/view.d.ts +0 -115
  139. package/backend/dist/cjs/backend/src/view.js +0 -519
  140. package/backend/dist/cjs/backend/src/vinc.d.ts +0 -6
  141. package/backend/dist/cjs/backend/src/vinc.js +0 -40
  142. package/backend/dist/cjs/backend/src/volt.d.ts +0 -24
  143. package/backend/dist/cjs/backend/src/volt.js +0 -72
  144. package/backend/dist/cjs/frontend/src/modules/request.d.ts +0 -70
  145. package/backend/dist/cjs/frontend/src/modules/request.js +0 -99
  146. package/backend/dist/cjs/package.json +0 -1
  147. package/backend/dist/esm/backend/src/blacklist.d.ts +0 -12
  148. package/backend/dist/esm/backend/src/blacklist.js +0 -52
  149. package/backend/dist/esm/backend/src/cli.d.ts +0 -2
  150. package/backend/dist/esm/backend/src/cli.js +0 -211
  151. package/backend/dist/esm/backend/src/database/collection.d.ts +0 -1765
  152. package/backend/dist/esm/backend/src/database/collection.js +0 -3779
  153. package/backend/dist/esm/backend/src/database/database.d.ts +0 -92
  154. package/backend/dist/esm/backend/src/database/database.js +0 -214
  155. package/backend/dist/esm/backend/src/database/document.d.ts +0 -1
  156. package/backend/dist/esm/backend/src/database/document.js +0 -558
  157. package/backend/dist/esm/backend/src/database/filters/filters.d.ts +0 -6
  158. package/backend/dist/esm/backend/src/database/filters/filters.js +0 -1
  159. package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +0 -223
  160. package/backend/dist/esm/backend/src/database/filters/strict_filter.js +0 -3
  161. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +0 -1
  162. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +0 -505
  163. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +0 -1
  164. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +0 -712
  165. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +0 -50
  166. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +0 -5
  167. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +0 -76
  168. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +0 -44
  169. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +0 -75
  170. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +0 -5
  171. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +0 -219
  172. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +0 -1
  173. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +0 -165
  174. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +0 -5
  175. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +0 -5
  176. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +0 -415
  177. package/backend/dist/esm/backend/src/database/flatten.d.ts +0 -78
  178. package/backend/dist/esm/backend/src/database/flatten.js +0 -22
  179. package/backend/dist/esm/backend/src/database/flatten_test.d.ts +0 -1
  180. package/backend/dist/esm/backend/src/database/flatten_test.js +0 -174
  181. package/backend/dist/esm/backend/src/database/quota/quoata_v2.d.ts +0 -533
  182. package/backend/dist/esm/backend/src/database/quota/quoata_v2.js +0 -1155
  183. package/backend/dist/esm/backend/src/database/quota/quota.d.ts +0 -551
  184. package/backend/dist/esm/backend/src/database/quota/quota.js +0 -1219
  185. package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +0 -534
  186. package/backend/dist/esm/backend/src/database/quota/quota_v1.js +0 -1242
  187. package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +0 -412
  188. package/backend/dist/esm/backend/src/database/quota/safe_int.js +0 -810
  189. package/backend/dist/esm/backend/src/endpoint.d.ts +0 -346
  190. package/backend/dist/esm/backend/src/endpoint.js +0 -479
  191. package/backend/dist/esm/backend/src/errors/index.d.ts +0 -7
  192. package/backend/dist/esm/backend/src/errors/index.js +0 -7
  193. package/backend/dist/esm/backend/src/errors/internal_external.d.ts +0 -52
  194. package/backend/dist/esm/backend/src/errors/internal_external.js +0 -86
  195. package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +0 -41
  196. package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +0 -33
  197. package/backend/dist/esm/backend/src/errors/system_error.d.ts +0 -261
  198. package/backend/dist/esm/backend/src/errors/system_error.js +0 -444
  199. package/backend/dist/esm/backend/src/events.d.ts +0 -97
  200. package/backend/dist/esm/backend/src/events.js +0 -5
  201. package/backend/dist/esm/backend/src/frontend.d.ts +0 -11
  202. package/backend/dist/esm/backend/src/frontend.js +0 -12
  203. package/backend/dist/esm/backend/src/image_endpoint.d.ts +0 -44
  204. package/backend/dist/esm/backend/src/image_endpoint.js +0 -196
  205. package/backend/dist/esm/backend/src/index.d.ts +0 -23
  206. package/backend/dist/esm/backend/src/index.js +0 -26
  207. package/backend/dist/esm/backend/src/logger.d.ts +0 -5
  208. package/backend/dist/esm/backend/src/logger.js +0 -8
  209. package/backend/dist/esm/backend/src/meta.d.ts +0 -112
  210. package/backend/dist/esm/backend/src/meta.js +0 -152
  211. package/backend/dist/esm/backend/src/payments/paddle.d.ts +0 -329
  212. package/backend/dist/esm/backend/src/payments/paddle.js +0 -2276
  213. package/backend/dist/esm/backend/src/payments/stripe/checkout.d.ts +0 -113
  214. package/backend/dist/esm/backend/src/payments/stripe/checkout.js +0 -356
  215. package/backend/dist/esm/backend/src/payments/stripe/customers.d.ts +0 -17
  216. package/backend/dist/esm/backend/src/payments/stripe/customers.js +0 -193
  217. package/backend/dist/esm/backend/src/payments/stripe/error.d.ts +0 -74
  218. package/backend/dist/esm/backend/src/payments/stripe/error.js +0 -51
  219. package/backend/dist/esm/backend/src/payments/stripe/events.d.ts +0 -155
  220. package/backend/dist/esm/backend/src/payments/stripe/events.js +0 -5
  221. package/backend/dist/esm/backend/src/payments/stripe/meters.d.ts +0 -105
  222. package/backend/dist/esm/backend/src/payments/stripe/meters.js +0 -318
  223. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.d.ts +0 -58
  224. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.js +0 -135
  225. package/backend/dist/esm/backend/src/payments/stripe/products.d.ts +0 -519
  226. package/backend/dist/esm/backend/src/payments/stripe/products.js +0 -896
  227. package/backend/dist/esm/backend/src/payments/stripe/stripe.d.ts +0 -215
  228. package/backend/dist/esm/backend/src/payments/stripe/stripe.js +0 -464
  229. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.d.ts +0 -172
  230. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.js +0 -754
  231. package/backend/dist/esm/backend/src/payments/stripe/utils.d.ts +0 -63
  232. package/backend/dist/esm/backend/src/payments/stripe/utils.js +0 -131
  233. package/backend/dist/esm/backend/src/payments/stripe/webhooks.d.ts +0 -105
  234. package/backend/dist/esm/backend/src/payments/stripe/webhooks.js +0 -752
  235. package/backend/dist/esm/backend/src/plugins/browser.d.ts +0 -1
  236. package/backend/dist/esm/backend/src/plugins/browser.js +0 -170
  237. package/backend/dist/esm/backend/src/plugins/communication.d.ts +0 -70
  238. package/backend/dist/esm/backend/src/plugins/communication.js +0 -169
  239. package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +0 -255
  240. package/backend/dist/esm/backend/src/plugins/mail/mail.js +0 -396
  241. package/backend/dist/esm/backend/src/plugins/mail/ui.d.ts +0 -297
  242. package/backend/dist/esm/backend/src/plugins/mail/ui.js +0 -1400
  243. package/backend/dist/esm/backend/src/plugins/pdf.d.ts +0 -1
  244. package/backend/dist/esm/backend/src/plugins/pdf.js +0 -1694
  245. package/backend/dist/esm/backend/src/plugins/thread_monitor.d.ts +0 -18
  246. package/backend/dist/esm/backend/src/plugins/thread_monitor.js +0 -120
  247. package/backend/dist/esm/backend/src/rate_limit.d.ts +0 -148
  248. package/backend/dist/esm/backend/src/rate_limit.js +0 -667
  249. package/backend/dist/esm/backend/src/route.d.ts +0 -39
  250. package/backend/dist/esm/backend/src/route.js +0 -222
  251. package/backend/dist/esm/backend/src/server.d.ts +0 -502
  252. package/backend/dist/esm/backend/src/server.js +0 -2034
  253. package/backend/dist/esm/backend/src/server.old.d.ts +0 -594
  254. package/backend/dist/esm/backend/src/server.old.js +0 -2630
  255. package/backend/dist/esm/backend/src/splash_screen.d.ts +0 -93
  256. package/backend/dist/esm/backend/src/splash_screen.js +0 -156
  257. package/backend/dist/esm/backend/src/status.d.ts +0 -89
  258. package/backend/dist/esm/backend/src/status.js +0 -213
  259. package/backend/dist/esm/backend/src/stream.d.ts +0 -494
  260. package/backend/dist/esm/backend/src/stream.js +0 -1611
  261. package/backend/dist/esm/backend/src/users.d.ts +0 -926
  262. package/backend/dist/esm/backend/src/users.js +0 -2423
  263. package/backend/dist/esm/backend/src/utils.d.ts +0 -22
  264. package/backend/dist/esm/backend/src/utils.js +0 -463
  265. package/backend/dist/esm/backend/src/view.d.ts +0 -115
  266. package/backend/dist/esm/backend/src/view.js +0 -584
  267. package/backend/dist/esm/backend/src/vinc.d.ts +0 -6
  268. package/backend/dist/esm/backend/src/vinc.js +0 -6
  269. package/backend/dist/esm/backend/src/volt.d.ts +0 -24
  270. package/backend/dist/esm/backend/src/volt.js +0 -27
  271. package/backend/dist/esm/frontend/src/modules/request.d.ts +0 -70
  272. package/backend/dist/esm/frontend/src/modules/request.js +0 -117
  273. package/backend/old/file_watcher.ts +0 -359
  274. package/backend/old/request.deprc.js +0 -626
  275. package/backend/old/response.deprc.js +0 -354
  276. package/frontend/dist/backend/src/database/collection.d.ts +0 -1765
  277. package/frontend/dist/backend/src/database/collection.js +0 -3779
  278. package/frontend/dist/backend/src/database/database.d.ts +0 -92
  279. package/frontend/dist/backend/src/database/database.js +0 -214
  280. package/frontend/dist/backend/src/database/filters/filters.d.ts +0 -6
  281. package/frontend/dist/backend/src/database/filters/filters.js +0 -1
  282. package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +0 -223
  283. package/frontend/dist/backend/src/database/filters/strict_filter.js +0 -3
  284. package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +0 -165
  285. package/frontend/dist/backend/src/database/filters/strict_update_filter.js +0 -5
  286. package/frontend/dist/backend/src/database/flatten.d.ts +0 -78
  287. package/frontend/dist/backend/src/database/flatten.js +0 -22
  288. package/frontend/dist/backend/src/endpoint.d.ts +0 -346
  289. package/frontend/dist/backend/src/endpoint.js +0 -479
  290. package/frontend/dist/backend/src/errors/index.d.ts +0 -7
  291. package/frontend/dist/backend/src/errors/index.js +0 -7
  292. package/frontend/dist/backend/src/errors/internal_external.d.ts +0 -52
  293. package/frontend/dist/backend/src/errors/internal_external.js +0 -86
  294. package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +0 -41
  295. package/frontend/dist/backend/src/errors/invalid_usage_error.js +0 -33
  296. package/frontend/dist/backend/src/errors/system_error.d.ts +0 -261
  297. package/frontend/dist/backend/src/errors/system_error.js +0 -444
  298. package/frontend/dist/backend/src/events.d.ts +0 -97
  299. package/frontend/dist/backend/src/events.js +0 -5
  300. package/frontend/dist/backend/src/frontend.d.ts +0 -11
  301. package/frontend/dist/backend/src/frontend.js +0 -12
  302. package/frontend/dist/backend/src/image_endpoint.d.ts +0 -44
  303. package/frontend/dist/backend/src/image_endpoint.js +0 -196
  304. package/frontend/dist/backend/src/meta.d.ts +0 -112
  305. package/frontend/dist/backend/src/meta.js +0 -152
  306. package/frontend/dist/backend/src/payments/paddle.d.ts +0 -329
  307. package/frontend/dist/backend/src/payments/paddle.js +0 -2276
  308. package/frontend/dist/backend/src/payments/stripe/checkout.d.ts +0 -113
  309. package/frontend/dist/backend/src/payments/stripe/checkout.js +0 -356
  310. package/frontend/dist/backend/src/payments/stripe/customers.d.ts +0 -17
  311. package/frontend/dist/backend/src/payments/stripe/customers.js +0 -193
  312. package/frontend/dist/backend/src/payments/stripe/error.d.ts +0 -74
  313. package/frontend/dist/backend/src/payments/stripe/error.js +0 -51
  314. package/frontend/dist/backend/src/payments/stripe/events.d.ts +0 -155
  315. package/frontend/dist/backend/src/payments/stripe/events.js +0 -5
  316. package/frontend/dist/backend/src/payments/stripe/meters.d.ts +0 -105
  317. package/frontend/dist/backend/src/payments/stripe/meters.js +0 -318
  318. package/frontend/dist/backend/src/payments/stripe/payment_methods.d.ts +0 -58
  319. package/frontend/dist/backend/src/payments/stripe/payment_methods.js +0 -135
  320. package/frontend/dist/backend/src/payments/stripe/products.d.ts +0 -519
  321. package/frontend/dist/backend/src/payments/stripe/products.js +0 -896
  322. package/frontend/dist/backend/src/payments/stripe/stripe.d.ts +0 -215
  323. package/frontend/dist/backend/src/payments/stripe/stripe.js +0 -464
  324. package/frontend/dist/backend/src/payments/stripe/subscriptions.d.ts +0 -172
  325. package/frontend/dist/backend/src/payments/stripe/subscriptions.js +0 -754
  326. package/frontend/dist/backend/src/payments/stripe/utils.d.ts +0 -63
  327. package/frontend/dist/backend/src/payments/stripe/utils.js +0 -131
  328. package/frontend/dist/backend/src/payments/stripe/webhooks.d.ts +0 -105
  329. package/frontend/dist/backend/src/payments/stripe/webhooks.js +0 -752
  330. package/frontend/dist/backend/src/plugins/mail/mail.d.ts +0 -255
  331. package/frontend/dist/backend/src/plugins/mail/mail.js +0 -396
  332. package/frontend/dist/backend/src/plugins/mail/ui.d.ts +0 -297
  333. package/frontend/dist/backend/src/plugins/mail/ui.js +0 -1400
  334. package/frontend/dist/backend/src/rate_limit.d.ts +0 -148
  335. package/frontend/dist/backend/src/rate_limit.js +0 -667
  336. package/frontend/dist/backend/src/route.d.ts +0 -39
  337. package/frontend/dist/backend/src/route.js +0 -222
  338. package/frontend/dist/backend/src/server.d.ts +0 -502
  339. package/frontend/dist/backend/src/server.js +0 -2034
  340. package/frontend/dist/backend/src/splash_screen.d.ts +0 -93
  341. package/frontend/dist/backend/src/splash_screen.js +0 -156
  342. package/frontend/dist/backend/src/status.d.ts +0 -89
  343. package/frontend/dist/backend/src/status.js +0 -213
  344. package/frontend/dist/backend/src/stream.d.ts +0 -494
  345. package/frontend/dist/backend/src/stream.js +0 -1611
  346. package/frontend/dist/backend/src/users.d.ts +0 -926
  347. package/frontend/dist/backend/src/users.js +0 -2423
  348. package/frontend/dist/backend/src/utils.d.ts +0 -22
  349. package/frontend/dist/backend/src/utils.js +0 -463
  350. package/frontend/dist/backend/src/view.d.ts +0 -115
  351. package/frontend/dist/backend/src/view.js +0 -584
  352. package/frontend/dist/frontend/src/elements/base.d.ts +0 -3743
  353. package/frontend/dist/frontend/src/elements/base.js +0 -12151
  354. package/frontend/dist/frontend/src/elements/module.d.ts +0 -95
  355. package/frontend/dist/frontend/src/elements/module.js +0 -216
  356. package/frontend/dist/frontend/src/elements/register_element.d.ts +0 -3
  357. package/frontend/dist/frontend/src/elements/register_element.js +0 -22
  358. package/frontend/dist/frontend/src/elements/resize_query_manager.d.ts +0 -0
  359. package/frontend/dist/frontend/src/elements/resize_query_manager.js +0 -150
  360. package/frontend/dist/frontend/src/elements/types.d.ts +0 -52
  361. package/frontend/dist/frontend/src/elements/types.js +0 -5
  362. package/frontend/dist/frontend/src/index.d.ts +0 -21
  363. package/frontend/dist/frontend/src/index.js +0 -29
  364. package/frontend/dist/frontend/src/modules/attachment.d.ts +0 -126
  365. package/frontend/dist/frontend/src/modules/attachment.js +0 -306
  366. package/frontend/dist/frontend/src/modules/auth.d.ts +0 -44
  367. package/frontend/dist/frontend/src/modules/auth.js +0 -80
  368. package/frontend/dist/frontend/src/modules/color.d.ts +0 -160
  369. package/frontend/dist/frontend/src/modules/color.js +0 -316
  370. package/frontend/dist/frontend/src/modules/compression.d.ts +0 -39
  371. package/frontend/dist/frontend/src/modules/compression.js +0 -102
  372. package/frontend/dist/frontend/src/modules/cookies.d.ts +0 -44
  373. package/frontend/dist/frontend/src/modules/cookies.js +0 -143
  374. package/frontend/dist/frontend/src/modules/events.d.ts +0 -31
  375. package/frontend/dist/frontend/src/modules/events.js +0 -79
  376. package/frontend/dist/frontend/src/modules/google.d.ts +0 -23
  377. package/frontend/dist/frontend/src/modules/google.js +0 -52
  378. package/frontend/dist/frontend/src/modules/meta.d.ts +0 -14
  379. package/frontend/dist/frontend/src/modules/meta.js +0 -48
  380. package/frontend/dist/frontend/src/modules/paddle.d.ts +0 -1207
  381. package/frontend/dist/frontend/src/modules/paddle.js +0 -2594
  382. package/frontend/dist/frontend/src/modules/request.d.ts +0 -70
  383. package/frontend/dist/frontend/src/modules/request.js +0 -117
  384. package/frontend/dist/frontend/src/modules/settings.d.ts +0 -3
  385. package/frontend/dist/frontend/src/modules/settings.js +0 -5
  386. package/frontend/dist/frontend/src/modules/statics.d.ts +0 -21
  387. package/frontend/dist/frontend/src/modules/statics.js +0 -43
  388. package/frontend/dist/frontend/src/modules/stripe/cart.d.ts +0 -112
  389. package/frontend/dist/frontend/src/modules/stripe/cart.js +0 -321
  390. package/frontend/dist/frontend/src/modules/stripe/checkout.d.ts +0 -7
  391. package/frontend/dist/frontend/src/modules/stripe/checkout.js +0 -37
  392. package/frontend/dist/frontend/src/modules/stripe/index.m.d.ts +0 -6
  393. package/frontend/dist/frontend/src/modules/stripe/index.m.js +0 -6
  394. package/frontend/dist/frontend/src/modules/stripe/payments.d.ts +0 -58
  395. package/frontend/dist/frontend/src/modules/stripe/payments.js +0 -92
  396. package/frontend/dist/frontend/src/modules/support.d.ts +0 -30
  397. package/frontend/dist/frontend/src/modules/support.js +0 -53
  398. package/frontend/dist/frontend/src/modules/theme.d.ts +0 -133
  399. package/frontend/dist/frontend/src/modules/theme.js +0 -406
  400. package/frontend/dist/frontend/src/modules/themes.d.ts +0 -12
  401. package/frontend/dist/frontend/src/modules/themes.js +0 -22
  402. package/frontend/dist/frontend/src/modules/user.d.ts +0 -164
  403. package/frontend/dist/frontend/src/modules/user.js +0 -270
  404. package/frontend/dist/frontend/src/modules/utils.d.ts +0 -176
  405. package/frontend/dist/frontend/src/modules/utils.js +0 -569
  406. package/frontend/dist/frontend/src/types/gradient.d.ts +0 -29
  407. package/frontend/dist/frontend/src/types/gradient.js +0 -79
  408. package/frontend/dist/frontend/src/ui/border_button.d.ts +0 -94
  409. package/frontend/dist/frontend/src/ui/border_button.js +0 -228
  410. package/frontend/dist/frontend/src/ui/button.d.ts +0 -241
  411. package/frontend/dist/frontend/src/ui/button.js +0 -682
  412. package/frontend/dist/frontend/src/ui/canvas.d.ts +0 -138
  413. package/frontend/dist/frontend/src/ui/canvas.js +0 -444
  414. package/frontend/dist/frontend/src/ui/checkbox.d.ts +0 -74
  415. package/frontend/dist/frontend/src/ui/checkbox.js +0 -321
  416. package/frontend/dist/frontend/src/ui/code.d.ts +0 -235
  417. package/frontend/dist/frontend/src/ui/code.js +0 -1007
  418. package/frontend/dist/frontend/src/ui/context_menu.d.ts +0 -36
  419. package/frontend/dist/frontend/src/ui/context_menu.js +0 -205
  420. package/frontend/dist/frontend/src/ui/css.d.ts +0 -16
  421. package/frontend/dist/frontend/src/ui/css.js +0 -48
  422. package/frontend/dist/frontend/src/ui/divider.d.ts +0 -15
  423. package/frontend/dist/frontend/src/ui/divider.js +0 -78
  424. package/frontend/dist/frontend/src/ui/dropdown.d.ts +0 -176
  425. package/frontend/dist/frontend/src/ui/dropdown.js +0 -481
  426. package/frontend/dist/frontend/src/ui/for_each.d.ts +0 -37
  427. package/frontend/dist/frontend/src/ui/for_each.js +0 -92
  428. package/frontend/dist/frontend/src/ui/form.d.ts +0 -34
  429. package/frontend/dist/frontend/src/ui/form.js +0 -233
  430. package/frontend/dist/frontend/src/ui/frame_modes.d.ts +0 -37
  431. package/frontend/dist/frontend/src/ui/frame_modes.js +0 -108
  432. package/frontend/dist/frontend/src/ui/google_map.d.ts +0 -24
  433. package/frontend/dist/frontend/src/ui/google_map.js +0 -106
  434. package/frontend/dist/frontend/src/ui/gradient.d.ts +0 -25
  435. package/frontend/dist/frontend/src/ui/gradient.js +0 -131
  436. package/frontend/dist/frontend/src/ui/image.d.ts +0 -111
  437. package/frontend/dist/frontend/src/ui/image.js +0 -576
  438. package/frontend/dist/frontend/src/ui/input.d.ts +0 -392
  439. package/frontend/dist/frontend/src/ui/input.js +0 -1201
  440. package/frontend/dist/frontend/src/ui/link.d.ts +0 -25
  441. package/frontend/dist/frontend/src/ui/link.js +0 -140
  442. package/frontend/dist/frontend/src/ui/list.d.ts +0 -37
  443. package/frontend/dist/frontend/src/ui/list.js +0 -170
  444. package/frontend/dist/frontend/src/ui/loader_button.d.ts +0 -80
  445. package/frontend/dist/frontend/src/ui/loader_button.js +0 -193
  446. package/frontend/dist/frontend/src/ui/loaders.d.ts +0 -57
  447. package/frontend/dist/frontend/src/ui/loaders.js +0 -157
  448. package/frontend/dist/frontend/src/ui/popup.d.ts +0 -94
  449. package/frontend/dist/frontend/src/ui/popup.js +0 -510
  450. package/frontend/dist/frontend/src/ui/pseudo.d.ts +0 -44
  451. package/frontend/dist/frontend/src/ui/pseudo.js +0 -154
  452. package/frontend/dist/frontend/src/ui/scroller.d.ts +0 -105
  453. package/frontend/dist/frontend/src/ui/scroller.js +0 -1253
  454. package/frontend/dist/frontend/src/ui/slider.d.ts +0 -45
  455. package/frontend/dist/frontend/src/ui/slider.js +0 -217
  456. package/frontend/dist/frontend/src/ui/spacer.d.ts +0 -15
  457. package/frontend/dist/frontend/src/ui/spacer.js +0 -78
  458. package/frontend/dist/frontend/src/ui/span.d.ts +0 -15
  459. package/frontend/dist/frontend/src/ui/span.js +0 -73
  460. package/frontend/dist/frontend/src/ui/stack.d.ts +0 -66
  461. package/frontend/dist/frontend/src/ui/stack.js +0 -335
  462. package/frontend/dist/frontend/src/ui/steps.d.ts +0 -131
  463. package/frontend/dist/frontend/src/ui/steps.js +0 -308
  464. package/frontend/dist/frontend/src/ui/style.d.ts +0 -17
  465. package/frontend/dist/frontend/src/ui/style.js +0 -73
  466. package/frontend/dist/frontend/src/ui/switch.d.ts +0 -69
  467. package/frontend/dist/frontend/src/ui/switch.js +0 -357
  468. package/frontend/dist/frontend/src/ui/table.d.ts +0 -100
  469. package/frontend/dist/frontend/src/ui/table.js +0 -405
  470. package/frontend/dist/frontend/src/ui/tabs.d.ts +0 -111
  471. package/frontend/dist/frontend/src/ui/tabs.js +0 -424
  472. package/frontend/dist/frontend/src/ui/text.d.ts +0 -15
  473. package/frontend/dist/frontend/src/ui/text.js +0 -83
  474. package/frontend/dist/frontend/src/ui/title.d.ts +0 -91
  475. package/frontend/dist/frontend/src/ui/title.js +0 -272
  476. package/frontend/dist/frontend/src/ui/ui.d.ts +0 -35
  477. package/frontend/dist/frontend/src/ui/ui.js +0 -38
  478. package/frontend/dist/frontend/src/ui/view.d.ts +0 -15
  479. package/frontend/dist/frontend/src/ui/view.js +0 -88
  480. package/frontend/dist/frontend/src/volt.d.ts +0 -20
  481. package/frontend/dist/frontend/src/volt.js +0 -27
  482. package/frontend/examples/theme/theme.ts +0 -58
  483. package/frontend/tools/bundle_d_ts.js +0 -71
  484. package/frontend/tools/convert_to_jsdoc_input.txt +0 -9452
  485. package/frontend/tools/convert_to_jsdoc_output.txt +0 -7626
  486. package/frontend/tools/convert_to_jsdoc_tmp.js +0 -345
  487. package/frontend/tools/scan_mixed_imports.js +0 -69
  488. /package/frontend/{dist/frontend/src/css → css}/adyen.css +0 -0
  489. /package/frontend/{dist/frontend/src/css → css}/volt.css +0 -0
@@ -1,113 +0,0 @@
1
- /**
2
- * @author Daan van den Bergh
3
- * @copyright © 2026 - 2026 Daan van den Bergh. All rights reserved
4
- */
5
- import Stripe from "stripe";
6
- import { type InitializedOneTimeProduct, type InitializedProduct, type InitializedSubscriptionPlan, type InitializedMeterProduct, SubscriptionPlanId, ProductId } from "./products.js";
7
- import { Server } from "../../server.js";
8
- /**
9
- * A checkout line item input accepted by our API.
10
- */
11
- export interface CreateCheckoutLineItem {
12
- /** Product reference: initialized product/plan object OR an id string. */
13
- product: InitializedOneTimeProduct | InitializedSubscriptionPlan | ProductId | SubscriptionPlanId;
14
- /** Quantity to purchase/subscribe with. */
15
- quantity: number;
16
- }
17
- /**
18
- * Options for creating a Stripe Checkout Session.
19
- */
20
- export interface CreateCheckoutSessionOpts {
21
- /**
22
- * The internal user id, used to resolve/ensure Stripe customer.
23
- * The `uid` may be undefined for one-time payment checkouts, but must be defined for subscription checkouts since a Stripe Customer is required. In that case, the user must be authenticated and not "anonymous".
24
- */
25
- uid: string | undefined;
26
- /**
27
- * A caller-provided idempotency key for initialize/start.
28
- * Re-using the same session_id makes `start_checkout_session` idempotent across retries.
29
- */
30
- session_id: string;
31
- /** Items to purchase/subscribe to. */
32
- line_items: CreateCheckoutLineItem[];
33
- /** All initialized products, used to resolve string ids to objects. */
34
- all_products: InitializedProduct[];
35
- /** Where Stripe should redirect after successful payment. */
36
- success_url: string;
37
- /** Where Stripe should redirect when the customer cancels. */
38
- cancel_url: string;
39
- /** Optional: require tax id collection (useful for B2B in EU). */
40
- tax_id_collection_enabled?: boolean;
41
- /** The allowed hosts for redirect URLs. */
42
- allowed_hosts: undefined | string[];
43
- }
44
- /**
45
- * A minimal response payload for a created Checkout Session.
46
- */
47
- export interface CreatedCheckoutSession {
48
- /** The Stripe Checkout Session id. */
49
- id: string;
50
- /** The hosted Checkout URL (only for hosted sessions). */
51
- url: string;
52
- /** The Checkout mode used. */
53
- mode: "payment" | "subscription";
54
- /** Currency used for the session. */
55
- currency: string;
56
- }
57
- /**
58
- * Options for creating a metered Stripe Subscription (MeterProduct).
59
- *
60
- * This is intentionally separate from Checkout because Stripe Checkout is not always
61
- * a good fit for usage-based billing flows where you want to subscribe a customer
62
- * immediately and bill later based on meter events.
63
- */
64
- export interface CreateMeterSubscriptionOpts {
65
- /** The internal user id, used to resolve/ensure Stripe customer. */
66
- uid: string;
67
- /**
68
- * A caller-provided idempotency key.
69
- * Re-using the same subscription_id makes `create_meter_subscription` idempotent across retries.
70
- */
71
- subscription_id: string;
72
- /** The meter product reference: initialized object OR an id string. */
73
- meter_product: InitializedMeterProduct | string;
74
- /** All initialized products, used to resolve string ids to objects. */
75
- all_products: InitializedProduct[];
76
- }
77
- /**
78
- * A minimal response payload for a created metered subscription.
79
- */
80
- export interface CreatedMeterSubscription {
81
- /** The Stripe Subscription id. */
82
- id: string;
83
- /**
84
- * The Stripe Subscription status.
85
- * Note: We only return "active" or "trialing" for success; "incomplete" can be returned when action is required.
86
- */
87
- status: Stripe.Subscription.Status;
88
- /**
89
- * When action is required, Stripe returns a PaymentIntent client_secret.
90
- * This is safe to return to the client to complete SCA/3DS flows.
91
- */
92
- latest_invoice_payment_intent_client_secret?: string;
93
- /** The subscribed meter product id (our internal product id). */
94
- product_id: string;
95
- /** The Stripe price id used by the subscription item. */
96
- stripe_price_id: string;
97
- }
98
- /**
99
- * Create a new session id to ensure idempotency for checkout session creation.
100
- */
101
- export declare function create_checkout_session_id(uid: string | undefined): string;
102
- /**
103
- * Start a Stripe Checkout Session for the provided items.
104
- *
105
- * Stripe docs:
106
- * - Create session: https://docs.stripe.com/api/checkout/sessions/create
107
- * - Mixed cart (subscription + one-time): https://docs.stripe.com/payments/checkout/how-checkout-works
108
- * - Stripe Tax for Checkout: https://docs.stripe.com/tax/checkout
109
- *
110
- * @warning Only one subscription plan per checkout session is supported, due to later subscription cancellation restrictions.
111
- * @warning If subscription mode is used, subscription-level settings (`billing_anchor`, `trial_days`) must be unambiguous.
112
- */
113
- export declare function start_checkout_session(client: Stripe, server: Server, opts: CreateCheckoutSessionOpts): Promise<CreatedCheckoutSession>;
@@ -1,295 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var stdin_exports = {};
29
- __export(stdin_exports, {
30
- create_checkout_session_id: () => create_checkout_session_id,
31
- start_checkout_session: () => start_checkout_session
32
- });
33
- module.exports = __toCommonJS(stdin_exports);
34
- var vlib = __toESM(require("@vandenberghinc/vlib"));
35
- var import_products = require("./products.js");
36
- var import_customers = require("./customers.js");
37
- var import_error = require("./error.js");
38
- var import_utils = require("./utils.js");
39
- var import_collection = require("../../database/collection.js");
40
- var import_subscriptions = require("./subscriptions.js");
41
- function resolve_checkout_item_product(opts) {
42
- const { product_ref, all_products } = opts;
43
- if (typeof product_ref !== "string") {
44
- return product_ref;
45
- }
46
- (0, import_utils.public_assert)((0, import_utils.is_non_empty_string)(product_ref), "checkout_invalid_product_ref", "Invalid product reference.", { product_ref_type: typeof product_ref });
47
- const ref_id = product_ref.trim();
48
- for (const product of all_products) {
49
- if (product.type === "one_time" && product.id === ref_id) {
50
- return product;
51
- }
52
- }
53
- const matching_plans = [];
54
- for (const product of all_products) {
55
- if (product.type !== "subscription") {
56
- continue;
57
- }
58
- for (const plan2 of product.plans) {
59
- if (plan2.id === ref_id) {
60
- matching_plans.push(plan2);
61
- }
62
- }
63
- if (product.id === ref_id) {
64
- throw new import_error.ExternalStripeError("checkout_subscription_plan_ambiguous", "Subscription product id is ambiguous. Please specify a subscription plan id.", { ref_id });
65
- }
66
- }
67
- (0, import_utils.public_assert)(matching_plans.length === 1, matching_plans.length === 0 ? "checkout_invalid_product_ref" : "checkout_subscription_plan_ambiguous", matching_plans.length === 0 ? "Unknown product reference." : "Ambiguous subscription plan reference. Plan id must be unique across products.", { ref_id, matches: matching_plans.length });
68
- const plan = matching_plans[0];
69
- (0, import_utils.assert)(plan !== void 0, "checkout_invalid_product_ref", "Missing plan after plan resolution.", { ref_id });
70
- return plan;
71
- }
72
- function create_checkout_session_db(server) {
73
- return server.db.collection({
74
- name: "Volt.Stripe.CheckoutSessions",
75
- indexes: [
76
- {
77
- keys: { session_id: 1 },
78
- unique: true
79
- },
80
- {
81
- keys: { uid: 1 },
82
- unique: false
83
- // since it might be undefined/anonymous
84
- }
85
- ],
86
- ttl: {
87
- milliseconds: 1e3 * 60 * 60 * 24,
88
- // 24 hours
89
- sliding: false
90
- },
91
- // Ensure its not unique so we retrieve the cached collection if already created.
92
- unique: false
93
- });
94
- }
95
- function assert_https_url(raw, field, allowed_hosts) {
96
- (0, import_utils.public_assert)((0, import_utils.is_non_empty_string)(raw), "invalid_argument", `Property '${field}' must be provided.`);
97
- let url;
98
- try {
99
- url = new URL(raw);
100
- } catch {
101
- throw new import_error.ExternalStripeError("invalid_argument", `Property '${field}' must be a valid absolute URL.`, { field });
102
- }
103
- (0, import_utils.public_assert)(url.protocol === "https:", "invalid_argument", `Property '${field}' must use https.`, { field });
104
- (0, import_utils.public_assert)(allowed_hosts === void 0 || allowed_hosts.includes(url.host), "invalid_argument", `Property '${field}' must use an allowed host.`, { field, host: url.host });
105
- }
106
- function create_checkout_session_id(uid) {
107
- return (0, import_utils.generate_random_idempotency_key)(`checkout_${uid ?? "anonymous"}`, 255);
108
- }
109
- async function start_checkout_session(client, server, opts) {
110
- (0, import_utils.public_assert)((0, import_utils.is_non_empty_string)(opts.session_id), "invalid_argument", "Property 'session_id' must be a non-empty string when provided.");
111
- (0, import_utils.public_assert)(Array.isArray(opts.line_items) && opts.line_items.length > 0, "invalid_argument", "Property 'line_items' must be a non-empty array.");
112
- (0, import_utils.public_assert)(opts.line_items.length <= 50, "invalid_argument", "Too many line items.", { count: opts.line_items.length });
113
- (0, import_utils.assert)(Array.isArray(opts.all_products), "invalid_argument", "Property 'all_products' must be an array.");
114
- assert_https_url(opts.success_url, "success_url", opts.allowed_hosts);
115
- assert_https_url(opts.cancel_url, "cancel_url", opts.allowed_hosts);
116
- const resolved_items = opts.line_items.map((item, index) => {
117
- (0, import_utils.public_assert)(Number.isInteger(item.quantity) && item.quantity >= 1, "checkout_invalid_quantity", "Quantity must be an integer >= 1.", { index, quantity: item.quantity });
118
- const resolved_product = resolve_checkout_item_product({
119
- product_ref: item.product,
120
- all_products: opts.all_products
121
- });
122
- if (resolved_product.type === "one_time" && resolved_product.quantity_rules) {
123
- if (resolved_product.quantity_rules.min !== void 0) {
124
- (0, import_utils.public_assert)(item.quantity >= resolved_product.quantity_rules.min, "checkout_invalid_quantity", "Quantity is below the minimum allowed.", { product_id: resolved_product.id, quantity: item.quantity, min: resolved_product.quantity_rules.min });
125
- }
126
- if (resolved_product.quantity_rules.max !== void 0) {
127
- (0, import_utils.public_assert)(item.quantity <= resolved_product.quantity_rules.max, "checkout_invalid_quantity", "Quantity is above the maximum allowed.", { product_id: resolved_product.id, quantity: item.quantity, max: resolved_product.quantity_rules.max });
128
- }
129
- }
130
- if (resolved_product.type === "subscription_plan") {
131
- (0, import_utils.public_assert)(item.quantity === 1, "checkout_invalid_quantity", "Quantity must be 1 for subscription plans.", { plan_id: resolved_product.id, quantity: item.quantity });
132
- }
133
- return {
134
- product: resolved_product,
135
- quantity: item.quantity
136
- };
137
- });
138
- let subscription_plan_count = 0;
139
- let selected_plan_id;
140
- let selected_subscription_id;
141
- for (const item of resolved_items) {
142
- if (item.product.type !== "subscription_plan") {
143
- continue;
144
- }
145
- subscription_plan_count += 1;
146
- selected_plan_id = item.product.id;
147
- selected_subscription_id = item.product.subscription_id;
148
- (0, import_utils.public_assert)(subscription_plan_count === 1, "checkout_subscription_plan_ambiguous", "Only one subscription plan can be purchased per checkout session.", {
149
- selected_plan_id,
150
- selected_subscription_id,
151
- subscription_plan_count
152
- });
153
- (0, import_utils.public_assert)(opts.uid != null && opts.uid !== "anonymous", "invalid_uid", "You must be authenticated to purchase a subscription, sign in or sign up and try again.", { uid: opts.uid });
154
- const is_already_subscribed = await (0, import_subscriptions.is_user_subscribed_to)(client, server, {
155
- uid: opts.uid,
156
- plan: item.product,
157
- all_products: opts.all_products,
158
- customer_id: void 0
159
- });
160
- (0, import_utils.public_assert)(!is_already_subscribed, "checkout_already_subscribed", "You are already subscribed to this plan.", { uid: opts.uid, plan_id: item.product.id, subscription_id: item.product.subscription_id });
161
- }
162
- const has_subscription_item = resolved_items.some((item) => item.product.type === "subscription_plan");
163
- const mode = has_subscription_item ? "subscription" : "payment";
164
- const currencies = /* @__PURE__ */ new Set();
165
- for (const item of resolved_items) {
166
- if (item.product.type === "subscription_plan") {
167
- const parent_subscription = (0, import_products.resolve_plan_to_parent_subscription)({
168
- plan: item.product,
169
- all_products: opts.all_products
170
- });
171
- currencies.add(parent_subscription.currency);
172
- } else {
173
- currencies.add(item.product.currency);
174
- }
175
- }
176
- (0, import_utils.public_assert)(currencies.size === 1, "checkout_mixed_currency", "All checkout items must use the same currency.", { currencies: Array.from(currencies.values()) });
177
- const currency = Array.from(currencies.values())[0];
178
- (0, import_utils.assert)(currency !== void 0, "checkout_mixed_currency", "Missing currency after currency validation.");
179
- let stripe_customer_id;
180
- if (mode === "subscription" || opts.uid) {
181
- (0, import_utils.public_assert)(opts.uid != null && opts.uid !== "anonymous", "invalid_uid", "You must be authenticated to purchase a subscription, sign in or sign up and try again.", { uid: opts.uid });
182
- (0, import_utils.public_assert)((0, import_utils.is_non_empty_string)(opts.uid), "invalid_argument", "Property 'uid' must be a non-empty string.");
183
- stripe_customer_id = await (0, import_customers.ensure_stripe_customer)(client, server, opts.uid);
184
- }
185
- const stripe_line_items = resolved_items.map((item) => {
186
- (0, import_utils.public_assert)((0, import_utils.is_non_empty_string)(item.product.stripe_price_id), "invalid_product", "Product is missing a Stripe price id.", { product_id: item.product.id, type: item.product.type });
187
- return {
188
- price: item.product.stripe_price_id,
189
- quantity: item.quantity
190
- };
191
- });
192
- let subscription_data;
193
- if (mode === "subscription") {
194
- const trial_days_values = /* @__PURE__ */ new Set();
195
- const billing_anchor_values = /* @__PURE__ */ new Set();
196
- for (const item of resolved_items) {
197
- if (item.product.type !== "subscription_plan") {
198
- continue;
199
- }
200
- const parent_subscription = (0, import_products.resolve_plan_to_parent_subscription)({
201
- plan: item.product,
202
- all_products: opts.all_products
203
- });
204
- if (parent_subscription.trial_days !== void 0) {
205
- trial_days_values.add(parent_subscription.trial_days);
206
- }
207
- const anchor = parent_subscription.billing_anchor ?? "immediately";
208
- billing_anchor_values.add(anchor);
209
- }
210
- (0, import_utils.public_assert)(trial_days_values.size <= 1, "invalid_product", "Conflicting 'trial_days' across subscription products in the same checkout.", { trial_days_values: Array.from(trial_days_values.values()) });
211
- (0, import_utils.public_assert)(billing_anchor_values.size <= 1, "invalid_product", "Conflicting 'billing_anchor' across subscription products in the same checkout.", { billing_anchor_values: Array.from(billing_anchor_values.values()) });
212
- const trial_days = Array.from(trial_days_values.values())[0];
213
- const billing_anchor = Array.from(billing_anchor_values.values())[0] ?? "immediately";
214
- subscription_data = {};
215
- if (trial_days !== void 0) {
216
- subscription_data.trial_period_days = trial_days;
217
- }
218
- if (billing_anchor === "first_of_month") {
219
- const now = /* @__PURE__ */ new Date();
220
- const trial_end_reference = trial_days !== void 0 ? (0, import_utils.add_days_utc)(now, trial_days) : now;
221
- const anchor_date = (0, import_utils.first_day_of_next_month_utc)(trial_end_reference);
222
- subscription_data.billing_cycle_anchor = (0, import_utils.to_unix_seconds)(anchor_date);
223
- subscription_data.proration_behavior = "none";
224
- } else if (billing_anchor === "immediately") {
225
- } else {
226
- throw new import_error.InternalStripeError("invalid_product", "Unsupported billing_anchor value.", { billing_anchor });
227
- }
228
- if (opts.uid) {
229
- subscription_data.metadata = {
230
- __volt_uid: opts.uid
231
- };
232
- }
233
- }
234
- const create_params = {
235
- // Docs: https://docs.stripe.com/api/checkout/sessions/create
236
- mode,
237
- ...stripe_customer_id ? { customer: stripe_customer_id } : {},
238
- success_url: opts.success_url,
239
- cancel_url: opts.cancel_url,
240
- line_items: stripe_line_items,
241
- customer_update: {
242
- address: "auto",
243
- name: "auto",
244
- shipping: "auto"
245
- },
246
- // Stripe Tax: collect address automatically for tax calculation.
247
- // Docs: https://docs.stripe.com/tax/checkout
248
- automatic_tax: { enabled: true },
249
- // Optional: tax id collection is helpful for B2B scenarios (e.g. VAT).
250
- ...opts.tax_id_collection_enabled === true ? { tax_id_collection: { enabled: true } } : {},
251
- // Attach safe session metadata (not secrets).
252
- metadata: {
253
- ...opts.uid ? { __volt_uid: opts.uid } : {},
254
- __volt_mode: mode
255
- },
256
- // Include subscription configuration only in subscription mode.
257
- ...subscription_data ? { subscription_data } : {}
258
- };
259
- const checkout_session_db = create_checkout_session_db(server);
260
- const loaded_session = await checkout_session_db.load({ session_id: opts.session_id }, { throw: false, retry: 3 });
261
- let pinned_session;
262
- if (loaded_session instanceof import_collection.Collection.NotFoundError) {
263
- const record = {
264
- uid: opts.uid,
265
- session_id: opts.session_id,
266
- currency,
267
- create_params
268
- };
269
- await checkout_session_db.set({ session_id: opts.session_id }, record, { throw: true, retry: 3 });
270
- pinned_session = record;
271
- } else if (loaded_session instanceof Error) {
272
- throw new import_error.InternalStripeError("checkout_create_error", "Failed to access checkout session record.", { uid: opts.uid, session_id: opts.session_id }, loaded_session);
273
- } else {
274
- if (loaded_session.currency !== currency || !vlib.Object.deep_eq(loaded_session.create_params, create_params)) {
275
- throw new import_error.ExternalStripeError("checkout_create_error", "A checkout session with the same session_id already exists with different parameters. Please use a unique session_id for each distinct checkout session.", { uid: opts.uid, session_id: opts.session_id });
276
- }
277
- pinned_session = loaded_session;
278
- }
279
- const session = await (0, import_utils.stripe_api_call)(() => client.checkout.sessions.create(pinned_session.create_params, {
280
- idempotencyKey: (0, import_utils.stable_idempotency_key)(`checkout.sessions.create:${pinned_session.session_id}`, 255)
281
- }), { operation: "checkout.sessions.create" });
282
- (0, import_utils.public_assert)((0, import_utils.is_non_empty_string)(session.url), "checkout_create_error", "Stripe did not return a checkout URL.", { session_id: session.id, mode: session.mode });
283
- const session_mode = session.mode === "subscription" ? "subscription" : "payment";
284
- return {
285
- id: session.id,
286
- url: session.url,
287
- mode: session_mode,
288
- currency: pinned_session.currency
289
- };
290
- }
291
- // Annotate the CommonJS export names for ESM import in node:
292
- 0 && (module.exports = {
293
- create_checkout_session_id,
294
- start_checkout_session
295
- });
@@ -1,17 +0,0 @@
1
- /**
2
- * @author Daan van den Bergh
3
- * @copyright © 2026 - 2026 Daan van den Bergh. All rights reserved
4
- */
5
- import Stripe from "stripe";
6
- import { Server } from "../../server.js";
7
- /**
8
- * Ensure a Stripe customer exists for the given `uid`.
9
- * @returns The Stripe customer ID. If a customer already exists for the `uid`, it is returned. Otherwise, a new customer is created and its ID is returned.
10
- */
11
- export declare function ensure_stripe_customer(client: Stripe, server: Server, uid: string): Promise<string>;
12
- /**
13
- * Delete a Stripe customer by their `uid`.
14
- * This operation is best-effort and idempotent: if no Stripe customer exists for the `uid`, it returns without error.
15
- * @see https://docs.stripe.com/api/customers/delete
16
- */
17
- export declare function delete_stripe_customer(client: Stripe, server: Server, uid: string): Promise<void>;
@@ -1,164 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var stdin_exports = {};
29
- __export(stdin_exports, {
30
- delete_stripe_customer: () => delete_stripe_customer,
31
- ensure_stripe_customer: () => ensure_stripe_customer
32
- });
33
- module.exports = __toCommonJS(stdin_exports);
34
- var vlib = __toESM(require("@vandenberghinc/vlib"));
35
- var import_error = require("./error.js");
36
- var import_utils = require("./utils.js");
37
- var import_collection = require("../../database/collection.js");
38
- const stripe_customer_cache = new vlib.Cache({
39
- max_size: 1e5,
40
- ttl: {
41
- sliding: false,
42
- duration: 60 * 60 * 1e3
43
- // 1 hour
44
- }
45
- });
46
- const stripe_customer_uid_metadata_key = "__volt_uid";
47
- function escape_stripe_search_value(value) {
48
- return value.replaceAll("\\", "\\\\").replaceAll("'", "\\'");
49
- }
50
- function assert_uid(uid) {
51
- if (typeof uid !== "string" || uid.length < 16 || uid.length > 128) {
52
- throw new import_error.InternalStripeError("invalid_uid", "Invalid uid for Stripe customer mapping.", { uid_length: typeof uid === "string" ? uid.length : null });
53
- }
54
- if (/[\u0000-\u001F\u007F]/.test(uid)) {
55
- throw new import_error.InternalStripeError("invalid_uid", "uid contains control characters.", {});
56
- }
57
- }
58
- function create_customer_db(server) {
59
- return server.db.collection({
60
- name: "Volt.Stripe.Customers",
61
- indexes: [
62
- {
63
- keys: { customer_id: 1 },
64
- unique: true
65
- },
66
- {
67
- keys: { uid: 1 },
68
- unique: true
69
- }
70
- ],
71
- // Ensure its not unique so we retrieve the cached collection if already created.
72
- unique: false
73
- });
74
- }
75
- async function find_stripe_customer_id(client, uid) {
76
- assert_uid(uid);
77
- const escaped_uid = escape_stripe_search_value(uid);
78
- const query = `metadata['${stripe_customer_uid_metadata_key}']:'${escaped_uid}'`;
79
- const search_result = await (0, import_utils.stripe_api_call)(() => client.customers.search({
80
- query,
81
- limit: 1
82
- }), { uid, query });
83
- const customer = search_result.data[0];
84
- if (!customer) {
85
- return null;
86
- }
87
- return customer.id;
88
- }
89
- async function ensure_stripe_customer(client, server, uid) {
90
- assert_uid(uid);
91
- const cached_customer_id = stripe_customer_cache.get(uid);
92
- if (cached_customer_id) {
93
- return cached_customer_id;
94
- }
95
- const db = create_customer_db(server);
96
- let customer_id;
97
- const record = await db.load({ uid }, {
98
- throw: false,
99
- projection: { customer_id: 1 },
100
- retry: 3
101
- });
102
- if (!(record instanceof Error)) {
103
- customer_id = record.customer_id;
104
- } else if (record instanceof import_collection.Collection.NotFoundError) {
105
- const existing_customer_id = await find_stripe_customer_id(client, uid);
106
- if (existing_customer_id) {
107
- customer_id = existing_customer_id;
108
- } else {
109
- const created_customer = await (0, import_utils.stripe_api_call)(() => client.customers.create({
110
- metadata: {
111
- [stripe_customer_uid_metadata_key]: uid
112
- }
113
- }, {
114
- // Prevent duplicates across concurrent calls / processes.
115
- idempotencyKey: (0, import_utils.stable_idempotency_key)(`customer_create_uid:${uid}`)
116
- }), { uid, metadata_key: stripe_customer_uid_metadata_key });
117
- customer_id = created_customer.id;
118
- }
119
- await db.set({ uid }, { customer_id }, {
120
- upsert: true,
121
- retry: 3
122
- });
123
- const final_record = await db.load({ uid }, {
124
- throw: false,
125
- projection: { customer_id: 1 },
126
- retry: 3
127
- });
128
- if (final_record instanceof Error) {
129
- throw new import_error.InternalStripeError("customer_not_found", "Failed to load Stripe customer from database after creation.", { uid, cause: final_record });
130
- }
131
- customer_id = final_record.customer_id;
132
- } else {
133
- throw new import_error.InternalStripeError("customer_not_found", "Failed to load Stripe customer from database.", { uid, cause: record });
134
- }
135
- stripe_customer_cache.set(uid, customer_id);
136
- return customer_id;
137
- }
138
- async function delete_stripe_customer(client, server, uid) {
139
- assert_uid(uid);
140
- stripe_customer_cache.delete(uid);
141
- const db = create_customer_db(server);
142
- const record = await db.load({ uid }, {
143
- throw: false,
144
- projection: { customer_id: 1 }
145
- });
146
- if (record instanceof import_collection.Collection.NotFoundError) {
147
- return;
148
- } else if (record instanceof Error) {
149
- throw new import_error.InternalStripeError("customer_not_found", "Failed to load Stripe customer from database.", { uid, cause: record });
150
- }
151
- if (!record.customer_id) {
152
- return;
153
- }
154
- const deleted_customer = await (0, import_utils.stripe_api_call)(() => client.customers.del(record.customer_id), { uid, customer_id: record.customer_id });
155
- if (deleted_customer.deleted !== true) {
156
- throw new import_error.InternalStripeError("customer_delete_error", "Stripe customer delete did not return a deleted confirmation.", { uid, customer_id: record.customer_id });
157
- }
158
- await db.delete({ uid });
159
- }
160
- // Annotate the CommonJS export names for ESM import in node:
161
- 0 && (module.exports = {
162
- delete_stripe_customer,
163
- ensure_stripe_customer
164
- });
@@ -1,74 +0,0 @@
1
- /**
2
- * @author Daan van den Bergh
3
- * @copyright © 2026 - 2026 Daan van den Bergh. All rights reserved
4
- */
5
- import { ExternalError, InternalError } from "../../errors/internal_external.js";
6
- /** The available stripe error code. */
7
- export type StripeErrorCode = (
8
- /** An error code indicating an invalid uid for Stripe customer mapping. */
9
- "invalid_uid"
10
- /** An error code indicating a failure to delete a Stripe customer. */
11
- | "customer_delete_error"
12
- /** An error code indicating a Stripe customer was not found. */
13
- | "customer_not_found"
14
- /** Invalid argument error code. */
15
- | "invalid_argument"
16
- /** Error code for an invalid product. */
17
- | "invalid_product"
18
- /** An error code indicating a generic Stripe API failure. */
19
- | "api_error"
20
- /** An error code indicating a failure during checkout session creation. */
21
- | "checkout_create_error"
22
- /** An error code indicating an invalid product reference during checkout session creation. */
23
- | "checkout_invalid_product_ref"
24
- /** An error code indicating a mixed currency error during checkout session creation. */
25
- | "checkout_mixed_currency"
26
- /** An error code indicating an ambiguous subscription plan reference during checkout session creation. */
27
- | "checkout_subscription_plan_ambiguous"
28
- /** An error code indicating an invalid quantity during checkout session creation. */
29
- | "checkout_invalid_quantity"
30
- /** An error code indicating the user is already subscribed to the plan. */
31
- | "checkout_already_subscribed"
32
- /** An error code indicating a subscription is not active and can not be billed. */
33
- | "subscription_not_active"
34
- /** An error code indicating a failure during subscription creation. */
35
- | "subscription_create_error"
36
- /** An error code indicating a subscription payment action is required. */
37
- | "subscription_payment_action_required"
38
- /** An error code indicating a missing payment method. */
39
- | "payment_method_missing"
40
- /** An error code indicating a subscription resolution error */
41
- | "subscription_resolution_error"
42
- /** An error code indicating a missing webhook endpoint secret. */
43
- | "webhook_endpoint_secret_missing"
44
- /** An error code indicating a failure to load webhook endpoint configuration. */
45
- | "webhook_endpoint_load_error"
46
- /** An error code indicating a mismatch between the webhook event's app id and the expected app id. */
47
- | "webhook_endpoint_app_id_mismatch");
48
- /**
49
- * Custom error class to attach safe context while preserving the original cause.
50
- * Internal errors thrown in REST API calls will be presented to the user as
51
- * a generic internal server errog. Therefore the code, message and context
52
- * are never shown to the user.
53
- */
54
- export declare class InternalStripeError extends InternalError {
55
- /** Stable error code for programmatic handling (never include secrets). */
56
- readonly error_code: StripeErrorCode;
57
- /** Optional safe context for debugging (never include secrets). */
58
- readonly context?: Record<string, unknown>;
59
- /** Constructs a StripeWrapperError. */
60
- constructor(code: StripeErrorCode, message: string, context?: Record<string, unknown>, cause?: unknown);
61
- }
62
- /**
63
- * Custom error class to attach safe context while preserving the original cause.
64
- * External errors thrown in REST API calls will be presented to the user with the message and code,
65
- * but context is never shown to the user.
66
- */
67
- export declare class ExternalStripeError extends ExternalError {
68
- /** Stable error code for programmatic handling (never include secrets). */
69
- readonly error_code: StripeErrorCode;
70
- /** Optional safe context for debugging (never include secrets). */
71
- readonly context?: Record<string, unknown>;
72
- /** Constructs a StripeWrapperError. */
73
- constructor(code: StripeErrorCode, message: string, context?: Record<string, unknown>, cause?: unknown);
74
- }