@vandenberghinc/volt 1.2.6 → 1.2.8

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 (472) hide show
  1. package/.libris/config.json +82 -0
  2. package/backend/dist/cjs/backend/src/blacklist.d.ts +12 -0
  3. package/backend/dist/cjs/backend/src/blacklist.js +78 -0
  4. package/backend/dist/cjs/backend/src/cli.d.ts +2 -0
  5. package/backend/dist/cjs/backend/src/cli.js +198 -0
  6. package/backend/dist/cjs/backend/src/database/collection.d.ts +1765 -0
  7. package/backend/dist/cjs/backend/src/database/collection.js +3301 -0
  8. package/backend/dist/cjs/backend/src/database/database.d.ts +92 -0
  9. package/backend/dist/cjs/backend/src/database/database.js +170 -0
  10. package/backend/dist/cjs/backend/src/database/document.d.ts +1 -0
  11. package/backend/dist/cjs/backend/src/database/document.js +15 -0
  12. package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
  13. package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
  14. package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
  15. package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
  16. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  17. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
  18. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  19. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
  20. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  21. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
  22. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  23. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
  24. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  25. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
  26. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  27. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
  28. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  29. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
  30. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  31. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
  32. package/backend/dist/cjs/backend/src/database/flatten.d.ts +78 -0
  33. package/backend/dist/cjs/backend/src/database/flatten.js +53 -0
  34. package/backend/dist/cjs/backend/src/database/flatten_test.d.ts +1 -0
  35. package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
  36. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.d.ts +533 -0
  37. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.js +1046 -0
  38. package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +551 -0
  39. package/backend/dist/cjs/backend/src/database/quota/quota.js +1108 -0
  40. package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
  41. package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
  42. package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +412 -0
  43. package/backend/dist/cjs/backend/src/database/quota/safe_int.js +745 -0
  44. package/backend/dist/cjs/backend/src/endpoint.d.ts +346 -0
  45. package/backend/dist/cjs/backend/src/endpoint.js +468 -0
  46. package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
  47. package/backend/dist/cjs/backend/src/errors/index.js +25 -0
  48. package/backend/dist/cjs/backend/src/errors/internal_external.d.ts +52 -0
  49. package/backend/dist/cjs/backend/src/errors/internal_external.js +95 -0
  50. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +41 -0
  51. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.js +47 -0
  52. package/backend/dist/cjs/backend/src/errors/system_error.d.ts +261 -0
  53. package/backend/dist/cjs/backend/src/errors/system_error.js +436 -0
  54. package/backend/dist/cjs/backend/src/events.d.ts +97 -0
  55. package/backend/dist/cjs/backend/src/events.js +15 -0
  56. package/backend/dist/cjs/backend/src/frontend.d.ts +13 -0
  57. package/backend/dist/cjs/backend/src/frontend.js +56 -0
  58. package/backend/dist/cjs/backend/src/image_endpoint.d.ts +44 -0
  59. package/backend/dist/cjs/backend/src/image_endpoint.js +185 -0
  60. package/backend/dist/cjs/backend/src/index.d.ts +23 -0
  61. package/backend/dist/cjs/backend/src/index.js +70 -0
  62. package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
  63. package/backend/dist/cjs/backend/src/logger.js +15 -0
  64. package/backend/dist/cjs/backend/src/meta.d.ts +112 -0
  65. package/backend/dist/cjs/backend/src/meta.js +181 -0
  66. package/backend/dist/cjs/backend/src/payments/paddle.d.ts +329 -0
  67. package/backend/dist/cjs/backend/src/payments/paddle.js +1996 -0
  68. package/backend/dist/cjs/backend/src/payments/stripe/checkout.d.ts +113 -0
  69. package/backend/dist/cjs/backend/src/payments/stripe/checkout.js +295 -0
  70. package/backend/dist/cjs/backend/src/payments/stripe/customers.d.ts +17 -0
  71. package/backend/dist/cjs/backend/src/payments/stripe/customers.js +164 -0
  72. package/backend/dist/cjs/backend/src/payments/stripe/error.d.ts +74 -0
  73. package/backend/dist/cjs/backend/src/payments/stripe/error.js +64 -0
  74. package/backend/dist/cjs/backend/src/payments/stripe/events.d.ts +155 -0
  75. package/backend/dist/cjs/backend/src/payments/stripe/events.js +15 -0
  76. package/backend/dist/cjs/backend/src/payments/stripe/meters.d.ts +105 -0
  77. package/backend/dist/cjs/backend/src/payments/stripe/meters.js +230 -0
  78. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  79. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.js +109 -0
  80. package/backend/dist/cjs/backend/src/payments/stripe/products.d.ts +519 -0
  81. package/backend/dist/cjs/backend/src/payments/stripe/products.js +650 -0
  82. package/backend/dist/cjs/backend/src/payments/stripe/stripe.d.ts +215 -0
  83. package/backend/dist/cjs/backend/src/payments/stripe/stripe.js +468 -0
  84. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  85. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.js +557 -0
  86. package/backend/dist/cjs/backend/src/payments/stripe/utils.d.ts +63 -0
  87. package/backend/dist/cjs/backend/src/payments/stripe/utils.js +118 -0
  88. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.d.ts +105 -0
  89. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.js +627 -0
  90. package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
  91. package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
  92. package/backend/dist/cjs/backend/src/plugins/communication.d.ts +70 -0
  93. package/backend/dist/cjs/backend/src/plugins/communication.js +196 -0
  94. package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +255 -0
  95. package/backend/dist/cjs/backend/src/plugins/mail/mail.js +381 -0
  96. package/backend/dist/cjs/backend/src/plugins/mail/ui.d.ts +297 -0
  97. package/backend/dist/cjs/backend/src/plugins/mail/ui.js +1370 -0
  98. package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
  99. package/backend/dist/cjs/backend/src/plugins/pdf.js +1456 -0
  100. package/backend/dist/cjs/backend/src/plugins/thread_monitor.d.ts +18 -0
  101. package/backend/dist/cjs/backend/src/plugins/thread_monitor.js +116 -0
  102. package/backend/dist/cjs/backend/src/rate_limit.d.ts +148 -0
  103. package/backend/dist/cjs/backend/src/rate_limit.js +543 -0
  104. package/backend/dist/cjs/backend/src/route.d.ts +39 -0
  105. package/backend/dist/cjs/backend/src/route.js +172 -0
  106. package/backend/dist/cjs/backend/src/server.d.ts +502 -0
  107. package/backend/dist/cjs/backend/src/server.js +1710 -0
  108. package/backend/dist/cjs/backend/src/server.old.d.ts +594 -0
  109. package/backend/dist/cjs/backend/src/server.old.js +2058 -0
  110. package/backend/dist/cjs/backend/src/splash_screen.d.ts +93 -0
  111. package/backend/dist/cjs/backend/src/splash_screen.js +119 -0
  112. package/backend/dist/cjs/backend/src/status.d.ts +89 -0
  113. package/backend/dist/cjs/backend/src/status.js +211 -0
  114. package/backend/dist/cjs/backend/src/stream.d.ts +494 -0
  115. package/backend/dist/cjs/backend/src/stream.js +1370 -0
  116. package/backend/dist/cjs/backend/src/users.d.ts +926 -0
  117. package/backend/dist/cjs/backend/src/users.js +2223 -0
  118. package/backend/dist/cjs/backend/src/utils.d.ts +22 -0
  119. package/backend/dist/cjs/backend/src/utils.js +626 -0
  120. package/backend/dist/cjs/backend/src/view.d.ts +115 -0
  121. package/backend/dist/cjs/backend/src/view.js +519 -0
  122. package/backend/dist/cjs/backend/src/vinc.d.ts +6 -0
  123. package/backend/dist/cjs/backend/src/vinc.js +40 -0
  124. package/backend/dist/cjs/backend/src/volt.d.ts +24 -0
  125. package/backend/dist/cjs/backend/src/volt.js +72 -0
  126. package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
  127. package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
  128. package/backend/dist/cjs/package.json +1 -0
  129. package/backend/dist/esm/backend/src/blacklist.d.ts +12 -0
  130. package/backend/dist/esm/backend/src/blacklist.js +52 -0
  131. package/backend/dist/esm/backend/src/cli.d.ts +2 -0
  132. package/backend/dist/esm/backend/src/cli.js +211 -0
  133. package/backend/dist/esm/backend/src/database/collection.d.ts +1765 -0
  134. package/backend/dist/esm/backend/src/database/collection.js +3779 -0
  135. package/backend/dist/esm/backend/src/database/database.d.ts +92 -0
  136. package/backend/dist/esm/backend/src/database/database.js +214 -0
  137. package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
  138. package/backend/dist/esm/backend/src/database/document.js +558 -0
  139. package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
  140. package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
  141. package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
  142. package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
  143. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  144. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
  145. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  146. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
  147. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  148. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
  149. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  150. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
  151. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  152. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
  153. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  154. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
  155. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  156. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
  157. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  158. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +415 -0
  159. package/backend/dist/esm/backend/src/database/flatten.d.ts +78 -0
  160. package/backend/dist/esm/backend/src/database/flatten.js +22 -0
  161. package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
  162. package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
  163. package/backend/dist/esm/backend/src/database/quota/quoata_v2.d.ts +533 -0
  164. package/backend/dist/esm/backend/src/database/quota/quoata_v2.js +1155 -0
  165. package/backend/dist/esm/backend/src/database/quota/quota.d.ts +551 -0
  166. package/backend/dist/esm/backend/src/database/quota/quota.js +1219 -0
  167. package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
  168. package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
  169. package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +412 -0
  170. package/backend/dist/esm/backend/src/database/quota/safe_int.js +810 -0
  171. package/backend/dist/esm/backend/src/endpoint.d.ts +346 -0
  172. package/backend/dist/esm/backend/src/endpoint.js +479 -0
  173. package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
  174. package/backend/dist/esm/backend/src/errors/index.js +7 -0
  175. package/backend/dist/esm/backend/src/errors/internal_external.d.ts +52 -0
  176. package/backend/dist/esm/backend/src/errors/internal_external.js +86 -0
  177. package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +41 -0
  178. package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +33 -0
  179. package/backend/dist/esm/backend/src/errors/system_error.d.ts +261 -0
  180. package/backend/dist/esm/backend/src/errors/system_error.js +444 -0
  181. package/backend/dist/esm/backend/src/events.d.ts +97 -0
  182. package/backend/dist/esm/backend/src/events.js +5 -0
  183. package/backend/dist/esm/backend/src/frontend.d.ts +13 -0
  184. package/backend/dist/esm/backend/src/frontend.js +23 -0
  185. package/backend/dist/esm/backend/src/image_endpoint.d.ts +44 -0
  186. package/backend/dist/esm/backend/src/image_endpoint.js +196 -0
  187. package/backend/dist/esm/backend/src/index.d.ts +23 -0
  188. package/backend/dist/esm/backend/src/index.js +26 -0
  189. package/backend/dist/esm/backend/src/logger.d.ts +5 -0
  190. package/backend/dist/esm/backend/src/logger.js +8 -0
  191. package/backend/dist/esm/backend/src/meta.d.ts +112 -0
  192. package/backend/dist/esm/backend/src/meta.js +152 -0
  193. package/backend/dist/esm/backend/src/payments/paddle.d.ts +329 -0
  194. package/backend/dist/esm/backend/src/payments/paddle.js +2276 -0
  195. package/backend/dist/esm/backend/src/payments/stripe/checkout.d.ts +113 -0
  196. package/backend/dist/esm/backend/src/payments/stripe/checkout.js +356 -0
  197. package/backend/dist/esm/backend/src/payments/stripe/customers.d.ts +17 -0
  198. package/backend/dist/esm/backend/src/payments/stripe/customers.js +193 -0
  199. package/backend/dist/esm/backend/src/payments/stripe/error.d.ts +74 -0
  200. package/backend/dist/esm/backend/src/payments/stripe/error.js +51 -0
  201. package/backend/dist/esm/backend/src/payments/stripe/events.d.ts +155 -0
  202. package/backend/dist/esm/backend/src/payments/stripe/events.js +5 -0
  203. package/backend/dist/esm/backend/src/payments/stripe/meters.d.ts +105 -0
  204. package/backend/dist/esm/backend/src/payments/stripe/meters.js +318 -0
  205. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  206. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.js +135 -0
  207. package/backend/dist/esm/backend/src/payments/stripe/products.d.ts +519 -0
  208. package/backend/dist/esm/backend/src/payments/stripe/products.js +896 -0
  209. package/backend/dist/esm/backend/src/payments/stripe/stripe.d.ts +215 -0
  210. package/backend/dist/esm/backend/src/payments/stripe/stripe.js +464 -0
  211. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  212. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.js +754 -0
  213. package/backend/dist/esm/backend/src/payments/stripe/utils.d.ts +63 -0
  214. package/backend/dist/esm/backend/src/payments/stripe/utils.js +131 -0
  215. package/backend/dist/esm/backend/src/payments/stripe/webhooks.d.ts +105 -0
  216. package/backend/dist/esm/backend/src/payments/stripe/webhooks.js +752 -0
  217. package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
  218. package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
  219. package/backend/dist/esm/backend/src/plugins/communication.d.ts +70 -0
  220. package/backend/dist/esm/backend/src/plugins/communication.js +169 -0
  221. package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +255 -0
  222. package/backend/dist/esm/backend/src/plugins/mail/mail.js +396 -0
  223. package/backend/dist/esm/backend/src/plugins/mail/ui.d.ts +297 -0
  224. package/backend/dist/esm/backend/src/plugins/mail/ui.js +1400 -0
  225. package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
  226. package/backend/dist/esm/backend/src/plugins/pdf.js +1694 -0
  227. package/backend/dist/esm/backend/src/plugins/thread_monitor.d.ts +18 -0
  228. package/backend/dist/esm/backend/src/plugins/thread_monitor.js +120 -0
  229. package/backend/dist/esm/backend/src/rate_limit.d.ts +148 -0
  230. package/backend/dist/esm/backend/src/rate_limit.js +667 -0
  231. package/backend/dist/esm/backend/src/route.d.ts +39 -0
  232. package/backend/dist/esm/backend/src/route.js +222 -0
  233. package/backend/dist/esm/backend/src/server.d.ts +502 -0
  234. package/backend/dist/esm/backend/src/server.js +2031 -0
  235. package/backend/dist/esm/backend/src/server.old.d.ts +594 -0
  236. package/backend/dist/esm/backend/src/server.old.js +2630 -0
  237. package/backend/dist/esm/backend/src/splash_screen.d.ts +93 -0
  238. package/backend/dist/esm/backend/src/splash_screen.js +156 -0
  239. package/backend/dist/esm/backend/src/status.d.ts +89 -0
  240. package/backend/dist/esm/backend/src/status.js +213 -0
  241. package/backend/dist/esm/backend/src/stream.d.ts +494 -0
  242. package/backend/dist/esm/backend/src/stream.js +1611 -0
  243. package/backend/dist/esm/backend/src/users.d.ts +926 -0
  244. package/backend/dist/esm/backend/src/users.js +2423 -0
  245. package/backend/dist/esm/backend/src/utils.d.ts +22 -0
  246. package/backend/dist/esm/backend/src/utils.js +463 -0
  247. package/backend/dist/esm/backend/src/view.d.ts +115 -0
  248. package/backend/dist/esm/backend/src/view.js +584 -0
  249. package/backend/dist/esm/backend/src/vinc.d.ts +6 -0
  250. package/backend/dist/esm/backend/src/vinc.js +6 -0
  251. package/backend/dist/esm/backend/src/volt.d.ts +24 -0
  252. package/backend/dist/esm/backend/src/volt.js +27 -0
  253. package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
  254. package/backend/dist/esm/frontend/src/modules/request.js +117 -0
  255. package/backend/old/file_watcher.ts +359 -0
  256. package/backend/old/request.deprc.js +626 -0
  257. package/backend/old/response.deprc.js +354 -0
  258. package/frontend/dist/backend/src/database/collection.d.ts +1765 -0
  259. package/frontend/dist/backend/src/database/collection.js +3779 -0
  260. package/frontend/dist/backend/src/database/database.d.ts +92 -0
  261. package/frontend/dist/backend/src/database/database.js +214 -0
  262. package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
  263. package/frontend/dist/backend/src/database/filters/filters.js +1 -0
  264. package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
  265. package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
  266. package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  267. package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
  268. package/frontend/dist/backend/src/database/flatten.d.ts +78 -0
  269. package/frontend/dist/backend/src/database/flatten.js +22 -0
  270. package/frontend/dist/backend/src/endpoint.d.ts +346 -0
  271. package/frontend/dist/backend/src/endpoint.js +479 -0
  272. package/frontend/dist/backend/src/errors/index.d.ts +7 -0
  273. package/frontend/dist/backend/src/errors/index.js +7 -0
  274. package/frontend/dist/backend/src/errors/internal_external.d.ts +52 -0
  275. package/frontend/dist/backend/src/errors/internal_external.js +86 -0
  276. package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +41 -0
  277. package/frontend/dist/backend/src/errors/invalid_usage_error.js +33 -0
  278. package/frontend/dist/backend/src/errors/system_error.d.ts +261 -0
  279. package/frontend/dist/backend/src/errors/system_error.js +444 -0
  280. package/frontend/dist/backend/src/events.d.ts +97 -0
  281. package/frontend/dist/backend/src/events.js +5 -0
  282. package/frontend/dist/backend/src/frontend.d.ts +13 -0
  283. package/frontend/dist/backend/src/frontend.js +23 -0
  284. package/frontend/dist/backend/src/image_endpoint.d.ts +44 -0
  285. package/frontend/dist/backend/src/image_endpoint.js +196 -0
  286. package/frontend/dist/backend/src/meta.d.ts +112 -0
  287. package/frontend/dist/backend/src/meta.js +152 -0
  288. package/frontend/dist/backend/src/payments/paddle.d.ts +329 -0
  289. package/frontend/dist/backend/src/payments/paddle.js +2276 -0
  290. package/frontend/dist/backend/src/payments/stripe/checkout.d.ts +113 -0
  291. package/frontend/dist/backend/src/payments/stripe/checkout.js +356 -0
  292. package/frontend/dist/backend/src/payments/stripe/customers.d.ts +17 -0
  293. package/frontend/dist/backend/src/payments/stripe/customers.js +193 -0
  294. package/frontend/dist/backend/src/payments/stripe/error.d.ts +74 -0
  295. package/frontend/dist/backend/src/payments/stripe/error.js +51 -0
  296. package/frontend/dist/backend/src/payments/stripe/events.d.ts +155 -0
  297. package/frontend/dist/backend/src/payments/stripe/events.js +5 -0
  298. package/frontend/dist/backend/src/payments/stripe/meters.d.ts +105 -0
  299. package/frontend/dist/backend/src/payments/stripe/meters.js +318 -0
  300. package/frontend/dist/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  301. package/frontend/dist/backend/src/payments/stripe/payment_methods.js +135 -0
  302. package/frontend/dist/backend/src/payments/stripe/products.d.ts +519 -0
  303. package/frontend/dist/backend/src/payments/stripe/products.js +896 -0
  304. package/frontend/dist/backend/src/payments/stripe/stripe.d.ts +215 -0
  305. package/frontend/dist/backend/src/payments/stripe/stripe.js +464 -0
  306. package/frontend/dist/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  307. package/frontend/dist/backend/src/payments/stripe/subscriptions.js +754 -0
  308. package/frontend/dist/backend/src/payments/stripe/utils.d.ts +63 -0
  309. package/frontend/dist/backend/src/payments/stripe/utils.js +131 -0
  310. package/frontend/dist/backend/src/payments/stripe/webhooks.d.ts +105 -0
  311. package/frontend/dist/backend/src/payments/stripe/webhooks.js +752 -0
  312. package/frontend/dist/backend/src/plugins/mail/mail.d.ts +255 -0
  313. package/frontend/dist/backend/src/plugins/mail/mail.js +396 -0
  314. package/frontend/dist/backend/src/plugins/mail/ui.d.ts +297 -0
  315. package/frontend/dist/backend/src/plugins/mail/ui.js +1400 -0
  316. package/frontend/dist/backend/src/rate_limit.d.ts +148 -0
  317. package/frontend/dist/backend/src/rate_limit.js +667 -0
  318. package/frontend/dist/backend/src/route.d.ts +39 -0
  319. package/frontend/dist/backend/src/route.js +222 -0
  320. package/frontend/dist/backend/src/server.d.ts +502 -0
  321. package/frontend/dist/backend/src/server.js +2031 -0
  322. package/frontend/dist/backend/src/splash_screen.d.ts +93 -0
  323. package/frontend/dist/backend/src/splash_screen.js +156 -0
  324. package/frontend/dist/backend/src/status.d.ts +89 -0
  325. package/frontend/dist/backend/src/status.js +213 -0
  326. package/frontend/dist/backend/src/stream.d.ts +494 -0
  327. package/frontend/dist/backend/src/stream.js +1611 -0
  328. package/frontend/dist/backend/src/users.d.ts +926 -0
  329. package/frontend/dist/backend/src/users.js +2423 -0
  330. package/frontend/dist/backend/src/utils.d.ts +22 -0
  331. package/frontend/dist/backend/src/utils.js +463 -0
  332. package/frontend/dist/backend/src/view.d.ts +115 -0
  333. package/frontend/dist/backend/src/view.js +584 -0
  334. package/frontend/dist/frontend/src/css/adyen.css +92 -0
  335. package/frontend/dist/frontend/src/css/volt.css +75 -0
  336. package/frontend/dist/frontend/src/elements/base.d.ts +3743 -0
  337. package/frontend/dist/frontend/src/elements/base.js +12151 -0
  338. package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
  339. package/frontend/dist/frontend/src/elements/module.js +216 -0
  340. package/frontend/dist/frontend/src/elements/register_element.d.ts +3 -0
  341. package/frontend/dist/frontend/src/elements/register_element.js +22 -0
  342. package/frontend/dist/frontend/src/elements/resize_query_manager.d.ts +0 -0
  343. package/frontend/dist/frontend/src/elements/resize_query_manager.js +150 -0
  344. package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
  345. package/frontend/dist/frontend/src/elements/types.js +5 -0
  346. package/frontend/dist/frontend/src/index.d.ts +21 -0
  347. package/frontend/dist/frontend/src/index.js +29 -0
  348. package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
  349. package/frontend/dist/frontend/src/modules/attachment.js +306 -0
  350. package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
  351. package/frontend/dist/frontend/src/modules/auth.js +80 -0
  352. package/frontend/dist/frontend/src/modules/color.d.ts +160 -0
  353. package/frontend/dist/frontend/src/modules/color.js +316 -0
  354. package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
  355. package/frontend/dist/frontend/src/modules/compression.js +102 -0
  356. package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
  357. package/frontend/dist/frontend/src/modules/cookies.js +143 -0
  358. package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
  359. package/frontend/dist/frontend/src/modules/events.js +79 -0
  360. package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
  361. package/frontend/dist/frontend/src/modules/google.js +52 -0
  362. package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
  363. package/frontend/dist/frontend/src/modules/meta.js +48 -0
  364. package/frontend/dist/frontend/src/modules/paddle.d.ts +1207 -0
  365. package/frontend/dist/frontend/src/modules/paddle.js +2594 -0
  366. package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
  367. package/frontend/dist/frontend/src/modules/request.js +117 -0
  368. package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
  369. package/frontend/dist/frontend/src/modules/settings.js +5 -0
  370. package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
  371. package/frontend/dist/frontend/src/modules/statics.js +43 -0
  372. package/frontend/dist/frontend/src/modules/stripe/cart.d.ts +112 -0
  373. package/frontend/dist/frontend/src/modules/stripe/cart.js +321 -0
  374. package/frontend/dist/frontend/src/modules/stripe/checkout.d.ts +7 -0
  375. package/frontend/dist/frontend/src/modules/stripe/checkout.js +37 -0
  376. package/frontend/dist/frontend/src/modules/stripe/index.m.d.ts +6 -0
  377. package/frontend/dist/frontend/src/modules/stripe/index.m.js +6 -0
  378. package/frontend/dist/frontend/src/modules/stripe/payments.d.ts +58 -0
  379. package/frontend/dist/frontend/src/modules/stripe/payments.js +92 -0
  380. package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
  381. package/frontend/dist/frontend/src/modules/support.js +53 -0
  382. package/frontend/dist/frontend/src/modules/theme.d.ts +133 -0
  383. package/frontend/dist/frontend/src/modules/theme.js +406 -0
  384. package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
  385. package/frontend/dist/frontend/src/modules/themes.js +22 -0
  386. package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
  387. package/frontend/dist/frontend/src/modules/user.js +270 -0
  388. package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
  389. package/frontend/dist/frontend/src/modules/utils.js +569 -0
  390. package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
  391. package/frontend/dist/frontend/src/types/gradient.js +79 -0
  392. package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
  393. package/frontend/dist/frontend/src/ui/border_button.js +228 -0
  394. package/frontend/dist/frontend/src/ui/button.d.ts +241 -0
  395. package/frontend/dist/frontend/src/ui/button.js +682 -0
  396. package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
  397. package/frontend/dist/frontend/src/ui/canvas.js +444 -0
  398. package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
  399. package/frontend/dist/frontend/src/ui/checkbox.js +321 -0
  400. package/frontend/dist/frontend/src/ui/code.d.ts +235 -0
  401. package/frontend/dist/frontend/src/ui/code.js +1007 -0
  402. package/frontend/dist/frontend/src/ui/context_menu.d.ts +36 -0
  403. package/frontend/dist/frontend/src/ui/context_menu.js +205 -0
  404. package/frontend/dist/frontend/src/ui/css.d.ts +16 -0
  405. package/frontend/dist/frontend/src/ui/css.js +48 -0
  406. package/frontend/dist/frontend/src/ui/divider.d.ts +15 -0
  407. package/frontend/dist/frontend/src/ui/divider.js +78 -0
  408. package/frontend/dist/frontend/src/ui/dropdown.d.ts +176 -0
  409. package/frontend/dist/frontend/src/ui/dropdown.js +481 -0
  410. package/frontend/dist/frontend/src/ui/for_each.d.ts +37 -0
  411. package/frontend/dist/frontend/src/ui/for_each.js +92 -0
  412. package/frontend/dist/frontend/src/ui/form.d.ts +34 -0
  413. package/frontend/dist/frontend/src/ui/form.js +233 -0
  414. package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
  415. package/frontend/dist/frontend/src/ui/frame_modes.js +108 -0
  416. package/frontend/dist/frontend/src/ui/google_map.d.ts +24 -0
  417. package/frontend/dist/frontend/src/ui/google_map.js +106 -0
  418. package/frontend/dist/frontend/src/ui/gradient.d.ts +25 -0
  419. package/frontend/dist/frontend/src/ui/gradient.js +131 -0
  420. package/frontend/dist/frontend/src/ui/image.d.ts +111 -0
  421. package/frontend/dist/frontend/src/ui/image.js +576 -0
  422. package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
  423. package/frontend/dist/frontend/src/ui/input.js +1201 -0
  424. package/frontend/dist/frontend/src/ui/link.d.ts +25 -0
  425. package/frontend/dist/frontend/src/ui/link.js +140 -0
  426. package/frontend/dist/frontend/src/ui/list.d.ts +37 -0
  427. package/frontend/dist/frontend/src/ui/list.js +170 -0
  428. package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
  429. package/frontend/dist/frontend/src/ui/loader_button.js +193 -0
  430. package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
  431. package/frontend/dist/frontend/src/ui/loaders.js +157 -0
  432. package/frontend/dist/frontend/src/ui/popup.d.ts +94 -0
  433. package/frontend/dist/frontend/src/ui/popup.js +510 -0
  434. package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
  435. package/frontend/dist/frontend/src/ui/pseudo.js +154 -0
  436. package/frontend/dist/frontend/src/ui/scroller.d.ts +105 -0
  437. package/frontend/dist/frontend/src/ui/scroller.js +1253 -0
  438. package/frontend/dist/frontend/src/ui/slider.d.ts +45 -0
  439. package/frontend/dist/frontend/src/ui/slider.js +217 -0
  440. package/frontend/dist/frontend/src/ui/spacer.d.ts +15 -0
  441. package/frontend/dist/frontend/src/ui/spacer.js +78 -0
  442. package/frontend/dist/frontend/src/ui/span.d.ts +15 -0
  443. package/frontend/dist/frontend/src/ui/span.js +73 -0
  444. package/frontend/dist/frontend/src/ui/stack.d.ts +66 -0
  445. package/frontend/dist/frontend/src/ui/stack.js +335 -0
  446. package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
  447. package/frontend/dist/frontend/src/ui/steps.js +308 -0
  448. package/frontend/dist/frontend/src/ui/style.d.ts +17 -0
  449. package/frontend/dist/frontend/src/ui/style.js +73 -0
  450. package/frontend/dist/frontend/src/ui/switch.d.ts +69 -0
  451. package/frontend/dist/frontend/src/ui/switch.js +357 -0
  452. package/frontend/dist/frontend/src/ui/table.d.ts +100 -0
  453. package/frontend/dist/frontend/src/ui/table.js +405 -0
  454. package/frontend/dist/frontend/src/ui/tabs.d.ts +111 -0
  455. package/frontend/dist/frontend/src/ui/tabs.js +424 -0
  456. package/frontend/dist/frontend/src/ui/text.d.ts +15 -0
  457. package/frontend/dist/frontend/src/ui/text.js +83 -0
  458. package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
  459. package/frontend/dist/frontend/src/ui/title.js +272 -0
  460. package/frontend/dist/frontend/src/ui/ui.d.ts +35 -0
  461. package/frontend/dist/frontend/src/ui/ui.js +38 -0
  462. package/frontend/dist/frontend/src/ui/view.d.ts +15 -0
  463. package/frontend/dist/frontend/src/ui/view.js +88 -0
  464. package/frontend/dist/frontend/src/volt.d.ts +20 -0
  465. package/frontend/dist/frontend/src/volt.js +27 -0
  466. package/frontend/examples/theme/theme.ts +58 -0
  467. package/frontend/tools/bundle_d_ts.js +71 -0
  468. package/frontend/tools/convert_to_jsdoc_input.txt +9452 -0
  469. package/frontend/tools/convert_to_jsdoc_output.txt +7626 -0
  470. package/frontend/tools/convert_to_jsdoc_tmp.js +345 -0
  471. package/frontend/tools/scan_mixed_imports.js +69 -0
  472. package/package.json +1 -5
@@ -0,0 +1,627 @@
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
+ handle_stripe_webhook: () => handle_stripe_webhook,
31
+ register_or_update_stripe_webhook_endpoint: () => register_or_update_stripe_webhook_endpoint
32
+ });
33
+ module.exports = __toCommonJS(stdin_exports);
34
+ var vlib = __toESM(require("@vandenberghinc/vlib"));
35
+ var import_collection = require("../../database/collection.js");
36
+ var import_error = require("./error.js");
37
+ var import_utils = require("./utils.js");
38
+ var import_products = require("./products.js");
39
+ var import_subscriptions = require("./subscriptions.js");
40
+ var import_payment_methods = require("./payment_methods.js");
41
+ const stripe_uid_metadata_key = "__volt_uid";
42
+ const processed_event_id_cache = new vlib.Cache({
43
+ max_size: 25e4,
44
+ ttl: {
45
+ sliding: true,
46
+ duration: 10 * 60 * 1e3
47
+ // 10 minutes
48
+ }
49
+ });
50
+ const inflight_event_id_cache = new vlib.Cache({
51
+ max_size: 25e4,
52
+ ttl: {
53
+ sliding: true,
54
+ duration: 60 * 1e3 * 5
55
+ // 5 minutes
56
+ }
57
+ });
58
+ function index_products_by_stripe_price_id(all_products) {
59
+ const plan_by_price_id = /* @__PURE__ */ new Map();
60
+ const meter_by_price_id = /* @__PURE__ */ new Map();
61
+ for (const product of all_products) {
62
+ if (product.type === "subscription") {
63
+ for (const plan of product.plans) {
64
+ plan_by_price_id.set(plan.stripe_price_id, plan);
65
+ }
66
+ } else if (product.type === "meter") {
67
+ meter_by_price_id.set(product.stripe_price_id, product);
68
+ } else if (product.type === "one_time") {
69
+ } else {
70
+ product.type.toString();
71
+ throw new import_error.InternalStripeError("invalid_product", "Unknown product type.", { product_type: product.type });
72
+ }
73
+ }
74
+ return { plan_by_price_id, meter_by_price_id };
75
+ }
76
+ function resolve_subscription_items(opts) {
77
+ const { plan_by_price_id, meter_by_price_id } = index_products_by_stripe_price_id(opts.all_products);
78
+ const resolved = [];
79
+ for (const item of opts.subscription.items.data) {
80
+ const price = item.price;
81
+ if (!price) {
82
+ continue;
83
+ }
84
+ const stripe_price_id = price.id;
85
+ const plan = plan_by_price_id.get(stripe_price_id) ?? void 0;
86
+ const meter_product = meter_by_price_id.get(stripe_price_id) ?? void 0;
87
+ if (plan) {
88
+ const product = (0, import_products.resolve_plan_to_parent_subscription)({
89
+ plan,
90
+ all_products: opts.all_products
91
+ });
92
+ resolved.push({
93
+ stripe_price_id,
94
+ product,
95
+ plan
96
+ });
97
+ } else if (meter_product) {
98
+ resolved.push({
99
+ stripe_price_id,
100
+ product: meter_product
101
+ });
102
+ } else {
103
+ resolved.push({ stripe_price_id });
104
+ }
105
+ }
106
+ return resolved;
107
+ }
108
+ function construct_stripe_event(client, opts) {
109
+ try {
110
+ return client.webhooks.constructEvent(opts.raw_body, opts.stripe_signature_header, opts.webhook_signing_secret);
111
+ } catch (error) {
112
+ throw new import_error.InternalStripeError("invalid_argument", "Invalid Stripe webhook signature.", { has_signature: (0, import_utils.is_non_empty_string)(opts.stripe_signature_header) }, error);
113
+ }
114
+ }
115
+ async function await_event_trigger(response) {
116
+ const promises = response.filter((r) => Boolean(r));
117
+ await Promise.all(promises);
118
+ }
119
+ const required_stripe_webhook_events = [
120
+ "checkout.session.completed",
121
+ "customer.subscription.created",
122
+ "customer.subscription.updated",
123
+ "customer.subscription.deleted",
124
+ "invoice.paid",
125
+ "invoice.payment_failed",
126
+ "payment_intent.succeeded",
127
+ "payment_intent.payment_failed",
128
+ "setup_intent.succeeded"
129
+ ];
130
+ const webhook_metadata_app_id = "__volt_webhook_app_id";
131
+ function create_stripe_webhook_endpoints_db(server) {
132
+ return server.db.collection({
133
+ name: "Volt.Stripe.WebhookEndpoints",
134
+ indexes: [
135
+ {
136
+ keys: { webhook_app_id: 1 },
137
+ unique: true
138
+ }
139
+ ],
140
+ // No TTL: webhook endpoints are long-lived configuration.
141
+ unique: false
142
+ });
143
+ }
144
+ function assert_https_webhook_url(webhook_url) {
145
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(webhook_url), "invalid_argument", "Property 'webhook_url' must be a non-empty string.");
146
+ let parsed;
147
+ try {
148
+ parsed = new URL(webhook_url);
149
+ } catch (error) {
150
+ throw new import_error.InternalStripeError("invalid_argument", "Property 'webhook_url' must be a valid absolute URL.", { webhook_url }, error);
151
+ }
152
+ (0, import_utils.assert)(parsed.protocol === "https:", "invalid_argument", "Property 'webhook_url' must use https.", { webhook_url });
153
+ }
154
+ function same_event_set(a, b) {
155
+ if (a.length !== b.length)
156
+ return false;
157
+ const set_a = new Set(a);
158
+ if (set_a.size !== b.length)
159
+ return false;
160
+ for (const ev of b) {
161
+ if (!set_a.has(ev))
162
+ return false;
163
+ }
164
+ return true;
165
+ }
166
+ function extract_webhook_secret(endpoint) {
167
+ const secret = endpoint.secret;
168
+ return (0, import_utils.is_non_empty_string)(secret) ? secret : void 0;
169
+ }
170
+ async function find_stripe_webhook_by_app_id(client, webhook_app_id) {
171
+ let starting_after;
172
+ for (; ; ) {
173
+ const page = await (0, import_utils.stripe_api_call)(() => client.webhookEndpoints.list({ limit: 100, ...starting_after ? { starting_after } : {} }), { operation: "webhookEndpoints.list", webhook_app_id });
174
+ for (const endpoint of page.data) {
175
+ if (endpoint.metadata?.[webhook_metadata_app_id] === webhook_app_id) {
176
+ return endpoint;
177
+ }
178
+ }
179
+ if (!page.has_more)
180
+ return void 0;
181
+ const last = page.data[page.data.length - 1];
182
+ if (!last)
183
+ return void 0;
184
+ starting_after = last.id;
185
+ }
186
+ }
187
+ async function register_or_update_stripe_webhook_endpoint(client, server, opts) {
188
+ assert_https_webhook_url(opts.webhook_url);
189
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(opts.webhook_app_id), "invalid_argument", "Property 'webhook_app_id' must be a non-empty string.");
190
+ const ensure_enabled = opts.ensure_enabled !== false;
191
+ const enabled_events = Array.from(required_stripe_webhook_events);
192
+ const webhook_endpoints_db = create_stripe_webhook_endpoints_db(server);
193
+ const loaded = await webhook_endpoints_db.load({ webhook_app_id: opts.webhook_app_id }, { throw: false, retry: 3 });
194
+ if (!(loaded instanceof Error)) {
195
+ let endpoint;
196
+ try {
197
+ endpoint = await (0, import_utils.stripe_api_call)(() => client.webhookEndpoints.retrieve(loaded.stripe_webhook_endpoint_id), {
198
+ operation: "webhookEndpoints.retrieve",
199
+ stripe_webhook_endpoint_id: loaded.stripe_webhook_endpoint_id,
200
+ webhook_url: opts.webhook_url
201
+ });
202
+ } catch (error) {
203
+ const by_app_id = await find_stripe_webhook_by_app_id(client, opts.webhook_app_id);
204
+ if (!by_app_id)
205
+ throw error;
206
+ endpoint = by_app_id;
207
+ }
208
+ if (endpoint.metadata?.[webhook_metadata_app_id] !== opts.webhook_app_id) {
209
+ const by_app_id = await find_stripe_webhook_by_app_id(client, opts.webhook_app_id);
210
+ if (!by_app_id) {
211
+ throw new import_error.InternalStripeError("webhook_endpoint_app_id_mismatch", "Webhook endpoint app id does not match and no endpoint was found for webhook_app_id.", { webhook_url: opts.webhook_url, webhook_app_id: opts.webhook_app_id });
212
+ }
213
+ throw new import_error.InternalStripeError("webhook_endpoint_secret_missing", "Stripe webhook endpoint for webhook_app_id exists but signing secret is not available via DB lookup. Store the whsec_ value at creation time.", { webhook_url: opts.webhook_url, stripe_webhook_endpoint_id: by_app_id.id, webhook_app_id: opts.webhook_app_id });
214
+ }
215
+ const needs_event_update = !same_event_set(endpoint.enabled_events ?? [], enabled_events);
216
+ const needs_enable = ensure_enabled && endpoint.status !== "enabled";
217
+ if (needs_event_update || needs_enable) {
218
+ const update_params = {
219
+ enabled_events,
220
+ ...needs_enable ? { disabled: false } : {},
221
+ ...(0, import_utils.is_non_empty_string)(opts.description) ? { description: opts.description.trim() } : {},
222
+ metadata: {
223
+ ...endpoint.metadata ?? {},
224
+ [webhook_metadata_app_id]: opts.webhook_app_id
225
+ }
226
+ };
227
+ await (0, import_utils.stripe_api_call)(() => client.webhookEndpoints.update(endpoint.id, update_params, {
228
+ // Stable idempotency ensures safe retries without duplicating config writes.
229
+ idempotencyKey: (0, import_utils.stable_idempotency_key)(`webhook_endpoints.update:${endpoint.id}:${opts.webhook_url}`, 255)
230
+ }), {
231
+ operation: "webhookEndpoints.update",
232
+ stripe_webhook_endpoint_id: endpoint.id,
233
+ webhook_url: opts.webhook_url
234
+ });
235
+ }
236
+ const updated_record = {
237
+ webhook_url: opts.webhook_url,
238
+ stripe_webhook_endpoint_id: loaded.stripe_webhook_endpoint_id,
239
+ webhook_signing_secret: loaded.webhook_signing_secret,
240
+ enabled_events: enabled_events.slice(),
241
+ updated_at_ms: Date.now(),
242
+ webhook_app_id: opts.webhook_app_id
243
+ };
244
+ await webhook_endpoints_db.set({ webhook_app_id: opts.webhook_app_id }, updated_record, { throw: true, retry: 3 });
245
+ return {
246
+ stripe_webhook_endpoint_id: updated_record.stripe_webhook_endpoint_id,
247
+ webhook_signing_secret: updated_record.webhook_signing_secret,
248
+ enabled_events: updated_record.enabled_events
249
+ };
250
+ }
251
+ if (loaded instanceof Error && !(loaded instanceof import_collection.Collection.NotFoundError)) {
252
+ throw new import_error.InternalStripeError("webhook_endpoint_load_error", "Failed to access webhook endpoints record.", { webhook_url: opts.webhook_url }, loaded);
253
+ }
254
+ const existing = await find_stripe_webhook_by_app_id(client, opts.webhook_app_id);
255
+ if (existing) {
256
+ const needs_event_update = !same_event_set(existing.enabled_events ?? [], enabled_events);
257
+ const needs_enable = ensure_enabled && existing.status !== "enabled";
258
+ const needs_url_update = existing.url !== opts.webhook_url;
259
+ if (needs_event_update || needs_enable || needs_url_update) {
260
+ const update_params = {
261
+ enabled_events,
262
+ ...needs_enable ? { disabled: false } : {},
263
+ ...(0, import_utils.is_non_empty_string)(opts.description) ? { description: opts.description.trim() } : {},
264
+ ...needs_url_update ? { url: opts.webhook_url } : {},
265
+ metadata: {
266
+ ...existing.metadata ?? {},
267
+ [webhook_metadata_app_id]: opts.webhook_app_id
268
+ }
269
+ };
270
+ await (0, import_utils.stripe_api_call)(() => client.webhookEndpoints.update(existing.id, update_params, {
271
+ idempotencyKey: (0, import_utils.stable_idempotency_key)(`webhook_endpoints.update:${existing.id}:${opts.webhook_url}`, 255)
272
+ }), {
273
+ operation: "webhookEndpoints.update",
274
+ stripe_webhook_endpoint_id: existing.id,
275
+ webhook_url: opts.webhook_url
276
+ });
277
+ }
278
+ throw new import_error.InternalStripeError("webhook_endpoint_secret_missing", "Stripe webhook endpoint exists but signing secret is not available. Store the whsec_ value at creation time.", { webhook_url: opts.webhook_url, stripe_webhook_endpoint_id: existing.id });
279
+ }
280
+ const create_params = {
281
+ // Docs: https://docs.stripe.com/api/webhook_endpoints/create
282
+ url: opts.webhook_url,
283
+ enabled_events,
284
+ ...(0, import_utils.is_non_empty_string)(opts.description) ? { description: opts.description.trim() } : {},
285
+ metadata: {
286
+ [webhook_metadata_app_id]: opts.webhook_app_id
287
+ }
288
+ };
289
+ const created = await (0, import_utils.stripe_api_call)(() => client.webhookEndpoints.create(create_params, {
290
+ // Stable idempotency ensures safe retries without creating multiple endpoints.
291
+ idempotencyKey: (0, import_utils.stable_idempotency_key)(`webhook_endpoints.create:${opts.webhook_app_id}:${opts.webhook_url}`, 255)
292
+ }), { operation: "webhookEndpoints.create", webhook_app_id: opts.webhook_app_id });
293
+ const webhook_signing_secret = extract_webhook_secret(created);
294
+ if (!webhook_signing_secret) {
295
+ throw new import_error.InternalStripeError("webhook_endpoint_secret_missing", "Stripe did not return a webhook signing secret on endpoint creation.", { webhook_url: opts.webhook_url, stripe_webhook_endpoint_id: created.id });
296
+ }
297
+ if (ensure_enabled && created.status !== "enabled") {
298
+ await (0, import_utils.stripe_api_call)(() => client.webhookEndpoints.update(created.id, { disabled: false }, {
299
+ idempotencyKey: (0, import_utils.stable_idempotency_key)(`webhook_endpoints.enable:${created.id}:${opts.webhook_url}`, 255)
300
+ }), {
301
+ operation: "webhookEndpoints.update",
302
+ stripe_webhook_endpoint_id: created.id,
303
+ webhook_url: opts.webhook_url
304
+ });
305
+ }
306
+ const record = {
307
+ webhook_url: opts.webhook_url,
308
+ stripe_webhook_endpoint_id: created.id,
309
+ webhook_signing_secret,
310
+ enabled_events: enabled_events.slice(),
311
+ updated_at_ms: Date.now(),
312
+ webhook_app_id: opts.webhook_app_id
313
+ };
314
+ await webhook_endpoints_db.set({ webhook_app_id: opts.webhook_app_id }, record, { throw: true, retry: 3 });
315
+ return {
316
+ stripe_webhook_endpoint_id: record.stripe_webhook_endpoint_id,
317
+ webhook_signing_secret: record.webhook_signing_secret,
318
+ enabled_events: record.enabled_events
319
+ };
320
+ }
321
+ async function handle_stripe_webhook(client, opts) {
322
+ try {
323
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(opts.webhook_signing_secret), "invalid_argument", "webhook_signing_secret must be provided.");
324
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(opts.stripe_signature_header), "invalid_argument", "stripe_signature_header must be provided.");
325
+ (0, import_utils.assert)(Array.isArray(opts.all_products), "invalid_argument", "all_products must be an array.");
326
+ (0, import_utils.assert)(Buffer.isBuffer(opts.raw_body), "invalid_argument", "raw_body must be a Buffer.");
327
+ const event = construct_stripe_event(client, {
328
+ webhook_signing_secret: opts.webhook_signing_secret,
329
+ raw_body: opts.raw_body,
330
+ stripe_signature_header: opts.stripe_signature_header
331
+ });
332
+ if (processed_event_id_cache.get(event.id) === true) {
333
+ opts.server.log(1, "Stripe webhook deduplicated event: ", { event_id: event.id, type: event.type });
334
+ opts.stream.success({ status: 200, data: { received: true, deduplicated: true } });
335
+ return;
336
+ }
337
+ if (inflight_event_id_cache.get(event.id) === true) {
338
+ opts.server.log(1, "Stripe webhook already inflight: ", { event_id: event.id, type: event.type });
339
+ opts.stream.success({ status: 200, data: { received: true, inflight: true } });
340
+ return;
341
+ }
342
+ inflight_event_id_cache.set(event.id, true);
343
+ try {
344
+ switch (event.type) {
345
+ case "checkout.session.completed": {
346
+ opts.server.log(1, "Stripe webhook received checkout.session.completed: ", { event_id: event.id });
347
+ const session = event.data.object;
348
+ const stripe_session_id = session.id;
349
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_session_id), "api_error", "checkout.session.completed missing session.id");
350
+ const uid = session.metadata?.[stripe_uid_metadata_key];
351
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
352
+ throw new import_error.InternalStripeError("invalid_argument", "Checkout session missing uid metadata.", { stripe_session_id });
353
+ }
354
+ const mode = session.mode === "subscription" ? "subscription" : session.mode === "setup" ? "setup" : "payment";
355
+ const stripe_customer_id = typeof session.customer === "string" ? session.customer : session.customer && typeof session.customer === "object" ? session.customer.id : void 0;
356
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_customer_id), "api_error", "Checkout session missing customer id.", {
357
+ uid,
358
+ stripe_session_id
359
+ });
360
+ const stripe_subscription_id = typeof session.subscription === "string" ? session.subscription : void 0;
361
+ const currency = (0, import_utils.is_non_empty_string)(session.currency) ? session.currency : void 0;
362
+ const metadata = session.metadata ?? {};
363
+ (0, import_subscriptions.delete_subscription_caches)(uid);
364
+ await await_event_trigger(opts.server.events.trigger("stripe.checkout_session_completed", {
365
+ uid,
366
+ stripe_session_id,
367
+ mode,
368
+ stripe_customer_id,
369
+ stripe_subscription_id,
370
+ currency,
371
+ metadata
372
+ }));
373
+ processed_event_id_cache.set(event.id, true);
374
+ opts.stream.success({ status: 200, data: { received: true } });
375
+ return;
376
+ }
377
+ case "customer.subscription.created":
378
+ case "customer.subscription.updated":
379
+ case "customer.subscription.deleted": {
380
+ opts.server.log(1, "Stripe webhook received subscription event: ", { event_id: event.id, type: event.type });
381
+ const subscription = event.data.object;
382
+ const stripe_subscription_id = subscription.id;
383
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_subscription_id), "api_error", "Subscription event missing subscription.id");
384
+ const stripe_customer_id_value = subscription.customer;
385
+ const stripe_customer_id = typeof stripe_customer_id_value === "string" ? stripe_customer_id_value : stripe_customer_id_value.id;
386
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_customer_id), "api_error", "Subscription event missing customer id", {
387
+ stripe_subscription_id
388
+ });
389
+ let uid = subscription.metadata?.[stripe_uid_metadata_key];
390
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
391
+ const customer = await (0, import_utils.stripe_api_call)(() => client.customers.retrieve(stripe_customer_id), { operation: "customers.retrieve", stripe_customer_id, reason: "resolve_uid_fallback" });
392
+ if ("deleted" in customer && customer.deleted === true) {
393
+ throw new import_error.InternalStripeError("customer_not_found", "Subscription references a deleted customer.", { stripe_subscription_id, stripe_customer_id });
394
+ }
395
+ uid = customer.metadata?.[stripe_uid_metadata_key];
396
+ }
397
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
398
+ throw new import_error.InternalStripeError("invalid_argument", "Subscription missing uid metadata (subscription + customer).", { stripe_subscription_id, stripe_customer_id });
399
+ }
400
+ const typed_subscription = await (0, import_utils.stripe_api_call)(() => client.subscriptions.retrieve(stripe_subscription_id, {
401
+ expand: ["items.data.price"]
402
+ }), {
403
+ operation: "subscriptions.retrieve",
404
+ stripe_subscription_id,
405
+ stripe_customer_id,
406
+ uid
407
+ });
408
+ (0, import_subscriptions.delete_subscription_caches)(uid);
409
+ if (event.type === "customer.subscription.created" || event.type === "customer.subscription.updated") {
410
+ await (0, import_subscriptions.enforce_single_subscription_plan)(client, opts.server, {
411
+ uid,
412
+ stripe_customer_id,
413
+ new_subscription: typed_subscription,
414
+ all_products: opts.all_products,
415
+ idempotency_key: (0, import_utils.stable_idempotency_key)(`enforce_single_subscription_plan:${event.id}`)
416
+ });
417
+ }
418
+ await (0, import_subscriptions.update_subscription_record)(client, opts.server, {
419
+ uid,
420
+ all_products: opts.all_products
421
+ });
422
+ const items = resolve_subscription_items({
423
+ subscription: typed_subscription,
424
+ all_products: opts.all_products
425
+ });
426
+ const cancel_at_period_end = typed_subscription.cancel_at_period_end ?? void 0;
427
+ if (event.type === "customer.subscription.created") {
428
+ await await_event_trigger(opts.server.events.trigger("stripe.subscription_created", {
429
+ uid,
430
+ stripe_subscription_id: typed_subscription.id,
431
+ stripe_customer_id,
432
+ status: typed_subscription.status,
433
+ items
434
+ }));
435
+ } else if (event.type === "customer.subscription.updated") {
436
+ await await_event_trigger(opts.server.events.trigger("stripe.subscription_updated", {
437
+ uid,
438
+ stripe_subscription_id: typed_subscription.id,
439
+ stripe_customer_id,
440
+ status: typed_subscription.status,
441
+ items,
442
+ cancel_at_period_end
443
+ }));
444
+ } else {
445
+ await await_event_trigger(opts.server.events.trigger("stripe.subscription_deleted", {
446
+ uid,
447
+ stripe_subscription_id: typed_subscription.id,
448
+ stripe_customer_id,
449
+ status: typed_subscription.status,
450
+ items
451
+ }));
452
+ }
453
+ processed_event_id_cache.set(event.id, true);
454
+ opts.stream.success({ status: 200, data: { received: true } });
455
+ return;
456
+ }
457
+ case "invoice.paid":
458
+ case "invoice.payment_failed": {
459
+ opts.server.log(1, "Stripe webhook received invoice event: ", { event_id: event.id, type: event.type });
460
+ const invoice = event.data.object;
461
+ const stripe_invoice_id = invoice.id;
462
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_invoice_id), "api_error", "Invoice event missing invoice.id");
463
+ const stripe_customer_id_value = invoice.customer;
464
+ const stripe_customer_id = typeof stripe_customer_id_value === "string" ? stripe_customer_id_value : stripe_customer_id_value?.id;
465
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_customer_id), "api_error", "Invoice event missing customer id", {
466
+ stripe_invoice_id
467
+ });
468
+ let uid = invoice.metadata?.[stripe_uid_metadata_key];
469
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
470
+ const customer = await (0, import_utils.stripe_api_call)(() => client.customers.retrieve(stripe_customer_id), { operation: "customers.retrieve", stripe_customer_id, reason: "resolve_uid_fallback" });
471
+ if ("deleted" in customer && customer.deleted === true) {
472
+ throw new import_error.InternalStripeError("customer_not_found", "Invoice references a deleted customer.", { stripe_invoice_id, stripe_customer_id });
473
+ }
474
+ uid = customer.metadata?.[stripe_uid_metadata_key];
475
+ }
476
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
477
+ throw new import_error.InternalStripeError("invalid_argument", "Invoice missing uid metadata (invoice + customer).", { stripe_invoice_id, stripe_customer_id });
478
+ }
479
+ (0, import_subscriptions.delete_subscription_caches)(uid);
480
+ const currency = invoice.currency;
481
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(currency), "api_error", "Invoice missing currency", { stripe_invoice_id });
482
+ const hosted_invoice_url = (0, import_utils.is_non_empty_string)(invoice.hosted_invoice_url) ? invoice.hosted_invoice_url : void 0;
483
+ if (event.type === "invoice.paid") {
484
+ const amount_paid = typeof invoice.amount_paid === "number" && Number.isFinite(invoice.amount_paid) ? invoice.amount_paid : 0;
485
+ await await_event_trigger(opts.server.events.trigger("stripe.invoice_paid", {
486
+ uid,
487
+ stripe_invoice_id,
488
+ stripe_customer_id,
489
+ amount_paid,
490
+ currency,
491
+ hosted_invoice_url
492
+ }));
493
+ } else {
494
+ const amount_due = typeof invoice.amount_due === "number" && Number.isFinite(invoice.amount_due) ? invoice.amount_due : 0;
495
+ await await_event_trigger(opts.server.events.trigger("stripe.invoice_payment_failed", {
496
+ uid,
497
+ stripe_invoice_id,
498
+ stripe_customer_id,
499
+ amount_due,
500
+ currency,
501
+ hosted_invoice_url
502
+ }));
503
+ }
504
+ processed_event_id_cache.set(event.id, true);
505
+ opts.stream.success({ status: 200, data: { received: true } });
506
+ return;
507
+ }
508
+ case "payment_intent.succeeded":
509
+ case "payment_intent.payment_failed": {
510
+ opts.server.log(1, "Stripe webhook received payment_intent event: ", { event_id: event.id, type: event.type });
511
+ const pi = event.data.object;
512
+ const stripe_payment_intent_id = pi.id;
513
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_payment_intent_id), "api_error", "PaymentIntent event missing id");
514
+ let uid = pi.metadata?.[stripe_uid_metadata_key];
515
+ const stripe_customer_id_value = pi.customer;
516
+ const stripe_customer_id = typeof stripe_customer_id_value === "string" ? stripe_customer_id_value : stripe_customer_id_value?.id;
517
+ if (!(0, import_utils.is_non_empty_string)(uid) && (0, import_utils.is_non_empty_string)(stripe_customer_id)) {
518
+ const customer = await (0, import_utils.stripe_api_call)(() => client.customers.retrieve(stripe_customer_id), { operation: "customers.retrieve", stripe_customer_id, reason: "resolve_uid_fallback" });
519
+ if ("deleted" in customer && customer.deleted === true) {
520
+ throw new import_error.InternalStripeError("customer_not_found", "PaymentIntent references a deleted customer.", { stripe_payment_intent_id, stripe_customer_id });
521
+ }
522
+ uid = customer.metadata?.[stripe_uid_metadata_key];
523
+ }
524
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
525
+ processed_event_id_cache.set(event.id, true);
526
+ opts.stream.success({ status: 200, data: { received: true } });
527
+ return;
528
+ }
529
+ const currency = pi.currency;
530
+ if (!(0, import_utils.is_non_empty_string)(currency)) {
531
+ throw new import_error.InternalStripeError("api_error", "PaymentIntent missing currency.", { uid, stripe_payment_intent_id });
532
+ }
533
+ const metadata = pi.metadata ?? {};
534
+ if (event.type === "payment_intent.succeeded") {
535
+ const amount_received = typeof pi.amount_received === "number" && Number.isFinite(pi.amount_received) ? pi.amount_received : 0;
536
+ await await_event_trigger(opts.server.events.trigger("stripe.payment_succeeded", {
537
+ uid,
538
+ stripe_payment_intent_id,
539
+ stripe_customer_id,
540
+ amount_received,
541
+ currency,
542
+ metadata
543
+ }));
544
+ } else {
545
+ const amount = typeof pi.amount === "number" && Number.isFinite(pi.amount) ? pi.amount : 0;
546
+ const last_payment_error_message = (0, import_utils.is_non_empty_string)(pi.last_payment_error?.message) ? pi.last_payment_error?.message : void 0;
547
+ await await_event_trigger(opts.server.events.trigger("stripe.payment_failed", {
548
+ uid,
549
+ stripe_payment_intent_id,
550
+ stripe_customer_id,
551
+ amount,
552
+ currency,
553
+ last_payment_error_message,
554
+ metadata
555
+ }));
556
+ }
557
+ processed_event_id_cache.set(event.id, true);
558
+ opts.stream.success({ status: 200, data: { received: true } });
559
+ return;
560
+ }
561
+ case "setup_intent.succeeded": {
562
+ opts.server.log(1, "Stripe webhook received setup_intent.succeeded: ", { event_id: event.id });
563
+ const setup_intent = event.data.object;
564
+ const stripe_setup_intent_id = setup_intent.id;
565
+ (0, import_utils.assert)((0, import_utils.is_non_empty_string)(stripe_setup_intent_id), "api_error", "SetupIntent event missing id");
566
+ const stripe_customer_id_value = setup_intent.customer;
567
+ const stripe_customer_id = typeof stripe_customer_id_value === "string" ? stripe_customer_id_value : stripe_customer_id_value?.id;
568
+ if (!(0, import_utils.is_non_empty_string)(stripe_customer_id)) {
569
+ throw new import_error.InternalStripeError("invalid_argument", "SetupIntent missing customer id.", { stripe_setup_intent_id });
570
+ }
571
+ let uid = setup_intent.metadata?.[stripe_uid_metadata_key];
572
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
573
+ const customer = await (0, import_utils.stripe_api_call)(() => client.customers.retrieve(stripe_customer_id), { operation: "customers.retrieve", stripe_customer_id, reason: "resolve_uid_fallback" });
574
+ if ("deleted" in customer && customer.deleted === true) {
575
+ throw new import_error.InternalStripeError("customer_not_found", "SetupIntent references a deleted customer.", { stripe_setup_intent_id, stripe_customer_id });
576
+ }
577
+ uid = customer.metadata?.[stripe_uid_metadata_key];
578
+ }
579
+ if (!(0, import_utils.is_non_empty_string)(uid)) {
580
+ throw new import_error.InternalStripeError("invalid_argument", "SetupIntent missing uid metadata (intent + customer).", { stripe_setup_intent_id, stripe_customer_id });
581
+ }
582
+ const finalized = await (0, import_payment_methods.finalize_payment_method_setup)(client, opts.server, {
583
+ uid,
584
+ setup_intent_id: stripe_setup_intent_id,
585
+ idempotency_key: (0, import_utils.stable_idempotency_key)(`finalize_payment_method_setup:${event.id}`)
586
+ });
587
+ await await_event_trigger(opts.server.events.trigger("stripe.payment_method_ready", {
588
+ uid,
589
+ stripe_customer_id: finalized.stripe_customer_id,
590
+ stripe_setup_intent_id: finalized.setup_intent_id,
591
+ stripe_payment_method_id: finalized.payment_method_id
592
+ }));
593
+ processed_event_id_cache.set(event.id, true);
594
+ opts.stream.success({ status: 200, data: { received: true } });
595
+ return;
596
+ }
597
+ default: {
598
+ opts.server.log(1, "Stripe webhook received unhandled event type: ", { event_id: event.id, type: event.type });
599
+ processed_event_id_cache.set(event.id, true);
600
+ opts.stream.success({ status: 200, data: { received: true } });
601
+ return;
602
+ }
603
+ }
604
+ } finally {
605
+ inflight_event_id_cache.delete(event.id);
606
+ }
607
+ } catch (error) {
608
+ let status = 500;
609
+ let type = "api_error";
610
+ let message = "Stripe webhook handling failed.";
611
+ if (error instanceof import_error.InternalStripeError) {
612
+ type = error.error_code ?? type;
613
+ if (type === "invalid_argument") {
614
+ status = 400;
615
+ }
616
+ }
617
+ if (!opts.stream.finished) {
618
+ opts.stream.error({ status, type, message });
619
+ }
620
+ return;
621
+ }
622
+ }
623
+ // Annotate the CommonJS export names for ESM import in node:
624
+ 0 && (module.exports = {
625
+ handle_stripe_webhook,
626
+ register_or_update_stripe_webhook_endpoint
627
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var stdin_exports = {};
15
+ module.exports = __toCommonJS(stdin_exports);