@vandenberghinc/volt 1.2.6 → 1.2.7

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 (462) hide show
  1. package/backend/dist/cjs/backend/src/blacklist.d.ts +12 -0
  2. package/backend/dist/cjs/backend/src/blacklist.js +78 -0
  3. package/backend/dist/cjs/backend/src/cli.d.ts +2 -0
  4. package/backend/dist/cjs/backend/src/cli.js +198 -0
  5. package/backend/dist/cjs/backend/src/database/collection.d.ts +1765 -0
  6. package/backend/dist/cjs/backend/src/database/collection.js +3301 -0
  7. package/backend/dist/cjs/backend/src/database/database.d.ts +92 -0
  8. package/backend/dist/cjs/backend/src/database/database.js +170 -0
  9. package/backend/dist/cjs/backend/src/database/document.d.ts +1 -0
  10. package/backend/dist/cjs/backend/src/database/document.js +15 -0
  11. package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
  12. package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
  13. package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
  14. package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
  15. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  16. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
  17. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  18. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
  19. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  20. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
  21. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  22. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
  23. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  24. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
  25. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  26. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
  27. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  28. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
  29. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  30. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
  31. package/backend/dist/cjs/backend/src/database/flatten.d.ts +78 -0
  32. package/backend/dist/cjs/backend/src/database/flatten.js +53 -0
  33. package/backend/dist/cjs/backend/src/database/flatten_test.d.ts +1 -0
  34. package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
  35. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.d.ts +533 -0
  36. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.js +1046 -0
  37. package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +551 -0
  38. package/backend/dist/cjs/backend/src/database/quota/quota.js +1108 -0
  39. package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
  40. package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
  41. package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +412 -0
  42. package/backend/dist/cjs/backend/src/database/quota/safe_int.js +745 -0
  43. package/backend/dist/cjs/backend/src/endpoint.d.ts +346 -0
  44. package/backend/dist/cjs/backend/src/endpoint.js +468 -0
  45. package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
  46. package/backend/dist/cjs/backend/src/errors/index.js +25 -0
  47. package/backend/dist/cjs/backend/src/errors/internal_external.d.ts +52 -0
  48. package/backend/dist/cjs/backend/src/errors/internal_external.js +95 -0
  49. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +41 -0
  50. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.js +47 -0
  51. package/backend/dist/cjs/backend/src/errors/system_error.d.ts +261 -0
  52. package/backend/dist/cjs/backend/src/errors/system_error.js +436 -0
  53. package/backend/dist/cjs/backend/src/events.d.ts +97 -0
  54. package/backend/dist/cjs/backend/src/events.js +15 -0
  55. package/backend/dist/cjs/backend/src/frontend.d.ts +13 -0
  56. package/backend/dist/cjs/backend/src/frontend.js +56 -0
  57. package/backend/dist/cjs/backend/src/image_endpoint.d.ts +44 -0
  58. package/backend/dist/cjs/backend/src/image_endpoint.js +185 -0
  59. package/backend/dist/cjs/backend/src/index.d.ts +23 -0
  60. package/backend/dist/cjs/backend/src/index.js +70 -0
  61. package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
  62. package/backend/dist/cjs/backend/src/logger.js +15 -0
  63. package/backend/dist/cjs/backend/src/meta.d.ts +112 -0
  64. package/backend/dist/cjs/backend/src/meta.js +181 -0
  65. package/backend/dist/cjs/backend/src/payments/paddle.d.ts +329 -0
  66. package/backend/dist/cjs/backend/src/payments/paddle.js +1996 -0
  67. package/backend/dist/cjs/backend/src/payments/stripe/checkout.d.ts +113 -0
  68. package/backend/dist/cjs/backend/src/payments/stripe/checkout.js +295 -0
  69. package/backend/dist/cjs/backend/src/payments/stripe/customers.d.ts +17 -0
  70. package/backend/dist/cjs/backend/src/payments/stripe/customers.js +164 -0
  71. package/backend/dist/cjs/backend/src/payments/stripe/error.d.ts +74 -0
  72. package/backend/dist/cjs/backend/src/payments/stripe/error.js +64 -0
  73. package/backend/dist/cjs/backend/src/payments/stripe/events.d.ts +155 -0
  74. package/backend/dist/cjs/backend/src/payments/stripe/events.js +15 -0
  75. package/backend/dist/cjs/backend/src/payments/stripe/meters.d.ts +105 -0
  76. package/backend/dist/cjs/backend/src/payments/stripe/meters.js +230 -0
  77. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  78. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.js +109 -0
  79. package/backend/dist/cjs/backend/src/payments/stripe/products.d.ts +519 -0
  80. package/backend/dist/cjs/backend/src/payments/stripe/products.js +650 -0
  81. package/backend/dist/cjs/backend/src/payments/stripe/stripe.d.ts +215 -0
  82. package/backend/dist/cjs/backend/src/payments/stripe/stripe.js +468 -0
  83. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  84. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.js +557 -0
  85. package/backend/dist/cjs/backend/src/payments/stripe/utils.d.ts +63 -0
  86. package/backend/dist/cjs/backend/src/payments/stripe/utils.js +118 -0
  87. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.d.ts +105 -0
  88. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.js +627 -0
  89. package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
  90. package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
  91. package/backend/dist/cjs/backend/src/plugins/communication.d.ts +70 -0
  92. package/backend/dist/cjs/backend/src/plugins/communication.js +196 -0
  93. package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +255 -0
  94. package/backend/dist/cjs/backend/src/plugins/mail/mail.js +381 -0
  95. package/backend/dist/cjs/backend/src/plugins/mail/ui.d.ts +297 -0
  96. package/backend/dist/cjs/backend/src/plugins/mail/ui.js +1370 -0
  97. package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
  98. package/backend/dist/cjs/backend/src/plugins/pdf.js +1456 -0
  99. package/backend/dist/cjs/backend/src/plugins/thread_monitor.d.ts +18 -0
  100. package/backend/dist/cjs/backend/src/plugins/thread_monitor.js +116 -0
  101. package/backend/dist/cjs/backend/src/rate_limit.d.ts +148 -0
  102. package/backend/dist/cjs/backend/src/rate_limit.js +543 -0
  103. package/backend/dist/cjs/backend/src/route.d.ts +39 -0
  104. package/backend/dist/cjs/backend/src/route.js +172 -0
  105. package/backend/dist/cjs/backend/src/server.d.ts +502 -0
  106. package/backend/dist/cjs/backend/src/server.js +1710 -0
  107. package/backend/dist/cjs/backend/src/server.old.d.ts +594 -0
  108. package/backend/dist/cjs/backend/src/server.old.js +2058 -0
  109. package/backend/dist/cjs/backend/src/splash_screen.d.ts +93 -0
  110. package/backend/dist/cjs/backend/src/splash_screen.js +119 -0
  111. package/backend/dist/cjs/backend/src/status.d.ts +89 -0
  112. package/backend/dist/cjs/backend/src/status.js +211 -0
  113. package/backend/dist/cjs/backend/src/stream.d.ts +494 -0
  114. package/backend/dist/cjs/backend/src/stream.js +1370 -0
  115. package/backend/dist/cjs/backend/src/users.d.ts +926 -0
  116. package/backend/dist/cjs/backend/src/users.js +2223 -0
  117. package/backend/dist/cjs/backend/src/utils.d.ts +22 -0
  118. package/backend/dist/cjs/backend/src/utils.js +626 -0
  119. package/backend/dist/cjs/backend/src/view.d.ts +115 -0
  120. package/backend/dist/cjs/backend/src/view.js +519 -0
  121. package/backend/dist/cjs/backend/src/vinc.d.ts +6 -0
  122. package/backend/dist/cjs/backend/src/vinc.js +40 -0
  123. package/backend/dist/cjs/backend/src/volt.d.ts +24 -0
  124. package/backend/dist/cjs/backend/src/volt.js +72 -0
  125. package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
  126. package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
  127. package/backend/dist/cjs/package.json +1 -0
  128. package/backend/dist/esm/backend/src/blacklist.d.ts +12 -0
  129. package/backend/dist/esm/backend/src/blacklist.js +52 -0
  130. package/backend/dist/esm/backend/src/cli.d.ts +2 -0
  131. package/backend/dist/esm/backend/src/cli.js +211 -0
  132. package/backend/dist/esm/backend/src/database/collection.d.ts +1765 -0
  133. package/backend/dist/esm/backend/src/database/collection.js +3779 -0
  134. package/backend/dist/esm/backend/src/database/database.d.ts +92 -0
  135. package/backend/dist/esm/backend/src/database/database.js +214 -0
  136. package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
  137. package/backend/dist/esm/backend/src/database/document.js +558 -0
  138. package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
  139. package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
  140. package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
  141. package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
  142. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  143. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
  144. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  145. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
  146. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  147. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
  148. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  149. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
  150. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  151. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
  152. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  153. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
  154. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  155. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
  156. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  157. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +415 -0
  158. package/backend/dist/esm/backend/src/database/flatten.d.ts +78 -0
  159. package/backend/dist/esm/backend/src/database/flatten.js +22 -0
  160. package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
  161. package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
  162. package/backend/dist/esm/backend/src/database/quota/quoata_v2.d.ts +533 -0
  163. package/backend/dist/esm/backend/src/database/quota/quoata_v2.js +1155 -0
  164. package/backend/dist/esm/backend/src/database/quota/quota.d.ts +551 -0
  165. package/backend/dist/esm/backend/src/database/quota/quota.js +1219 -0
  166. package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
  167. package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
  168. package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +412 -0
  169. package/backend/dist/esm/backend/src/database/quota/safe_int.js +810 -0
  170. package/backend/dist/esm/backend/src/endpoint.d.ts +346 -0
  171. package/backend/dist/esm/backend/src/endpoint.js +479 -0
  172. package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
  173. package/backend/dist/esm/backend/src/errors/index.js +7 -0
  174. package/backend/dist/esm/backend/src/errors/internal_external.d.ts +52 -0
  175. package/backend/dist/esm/backend/src/errors/internal_external.js +86 -0
  176. package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +41 -0
  177. package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +33 -0
  178. package/backend/dist/esm/backend/src/errors/system_error.d.ts +261 -0
  179. package/backend/dist/esm/backend/src/errors/system_error.js +444 -0
  180. package/backend/dist/esm/backend/src/events.d.ts +97 -0
  181. package/backend/dist/esm/backend/src/events.js +5 -0
  182. package/backend/dist/esm/backend/src/frontend.d.ts +13 -0
  183. package/backend/dist/esm/backend/src/frontend.js +23 -0
  184. package/backend/dist/esm/backend/src/image_endpoint.d.ts +44 -0
  185. package/backend/dist/esm/backend/src/image_endpoint.js +196 -0
  186. package/backend/dist/esm/backend/src/index.d.ts +23 -0
  187. package/backend/dist/esm/backend/src/index.js +26 -0
  188. package/backend/dist/esm/backend/src/logger.d.ts +5 -0
  189. package/backend/dist/esm/backend/src/logger.js +8 -0
  190. package/backend/dist/esm/backend/src/meta.d.ts +112 -0
  191. package/backend/dist/esm/backend/src/meta.js +152 -0
  192. package/backend/dist/esm/backend/src/payments/paddle.d.ts +329 -0
  193. package/backend/dist/esm/backend/src/payments/paddle.js +2276 -0
  194. package/backend/dist/esm/backend/src/payments/stripe/checkout.d.ts +113 -0
  195. package/backend/dist/esm/backend/src/payments/stripe/checkout.js +356 -0
  196. package/backend/dist/esm/backend/src/payments/stripe/customers.d.ts +17 -0
  197. package/backend/dist/esm/backend/src/payments/stripe/customers.js +193 -0
  198. package/backend/dist/esm/backend/src/payments/stripe/error.d.ts +74 -0
  199. package/backend/dist/esm/backend/src/payments/stripe/error.js +51 -0
  200. package/backend/dist/esm/backend/src/payments/stripe/events.d.ts +155 -0
  201. package/backend/dist/esm/backend/src/payments/stripe/events.js +5 -0
  202. package/backend/dist/esm/backend/src/payments/stripe/meters.d.ts +105 -0
  203. package/backend/dist/esm/backend/src/payments/stripe/meters.js +318 -0
  204. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  205. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.js +135 -0
  206. package/backend/dist/esm/backend/src/payments/stripe/products.d.ts +519 -0
  207. package/backend/dist/esm/backend/src/payments/stripe/products.js +896 -0
  208. package/backend/dist/esm/backend/src/payments/stripe/stripe.d.ts +215 -0
  209. package/backend/dist/esm/backend/src/payments/stripe/stripe.js +464 -0
  210. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  211. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.js +754 -0
  212. package/backend/dist/esm/backend/src/payments/stripe/utils.d.ts +63 -0
  213. package/backend/dist/esm/backend/src/payments/stripe/utils.js +131 -0
  214. package/backend/dist/esm/backend/src/payments/stripe/webhooks.d.ts +105 -0
  215. package/backend/dist/esm/backend/src/payments/stripe/webhooks.js +752 -0
  216. package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
  217. package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
  218. package/backend/dist/esm/backend/src/plugins/communication.d.ts +70 -0
  219. package/backend/dist/esm/backend/src/plugins/communication.js +169 -0
  220. package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +255 -0
  221. package/backend/dist/esm/backend/src/plugins/mail/mail.js +396 -0
  222. package/backend/dist/esm/backend/src/plugins/mail/ui.d.ts +297 -0
  223. package/backend/dist/esm/backend/src/plugins/mail/ui.js +1400 -0
  224. package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
  225. package/backend/dist/esm/backend/src/plugins/pdf.js +1694 -0
  226. package/backend/dist/esm/backend/src/plugins/thread_monitor.d.ts +18 -0
  227. package/backend/dist/esm/backend/src/plugins/thread_monitor.js +120 -0
  228. package/backend/dist/esm/backend/src/rate_limit.d.ts +148 -0
  229. package/backend/dist/esm/backend/src/rate_limit.js +667 -0
  230. package/backend/dist/esm/backend/src/route.d.ts +39 -0
  231. package/backend/dist/esm/backend/src/route.js +222 -0
  232. package/backend/dist/esm/backend/src/server.d.ts +502 -0
  233. package/backend/dist/esm/backend/src/server.js +2031 -0
  234. package/backend/dist/esm/backend/src/server.old.d.ts +594 -0
  235. package/backend/dist/esm/backend/src/server.old.js +2630 -0
  236. package/backend/dist/esm/backend/src/splash_screen.d.ts +93 -0
  237. package/backend/dist/esm/backend/src/splash_screen.js +156 -0
  238. package/backend/dist/esm/backend/src/status.d.ts +89 -0
  239. package/backend/dist/esm/backend/src/status.js +213 -0
  240. package/backend/dist/esm/backend/src/stream.d.ts +494 -0
  241. package/backend/dist/esm/backend/src/stream.js +1611 -0
  242. package/backend/dist/esm/backend/src/users.d.ts +926 -0
  243. package/backend/dist/esm/backend/src/users.js +2423 -0
  244. package/backend/dist/esm/backend/src/utils.d.ts +22 -0
  245. package/backend/dist/esm/backend/src/utils.js +463 -0
  246. package/backend/dist/esm/backend/src/view.d.ts +115 -0
  247. package/backend/dist/esm/backend/src/view.js +584 -0
  248. package/backend/dist/esm/backend/src/vinc.d.ts +6 -0
  249. package/backend/dist/esm/backend/src/vinc.js +6 -0
  250. package/backend/dist/esm/backend/src/volt.d.ts +24 -0
  251. package/backend/dist/esm/backend/src/volt.js +27 -0
  252. package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
  253. package/backend/dist/esm/frontend/src/modules/request.js +117 -0
  254. package/frontend/dist/backend/src/database/collection.d.ts +1765 -0
  255. package/frontend/dist/backend/src/database/collection.js +3779 -0
  256. package/frontend/dist/backend/src/database/database.d.ts +92 -0
  257. package/frontend/dist/backend/src/database/database.js +214 -0
  258. package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
  259. package/frontend/dist/backend/src/database/filters/filters.js +1 -0
  260. package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
  261. package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
  262. package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  263. package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
  264. package/frontend/dist/backend/src/database/flatten.d.ts +78 -0
  265. package/frontend/dist/backend/src/database/flatten.js +22 -0
  266. package/frontend/dist/backend/src/endpoint.d.ts +346 -0
  267. package/frontend/dist/backend/src/endpoint.js +479 -0
  268. package/frontend/dist/backend/src/errors/index.d.ts +7 -0
  269. package/frontend/dist/backend/src/errors/index.js +7 -0
  270. package/frontend/dist/backend/src/errors/internal_external.d.ts +52 -0
  271. package/frontend/dist/backend/src/errors/internal_external.js +86 -0
  272. package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +41 -0
  273. package/frontend/dist/backend/src/errors/invalid_usage_error.js +33 -0
  274. package/frontend/dist/backend/src/errors/system_error.d.ts +261 -0
  275. package/frontend/dist/backend/src/errors/system_error.js +444 -0
  276. package/frontend/dist/backend/src/events.d.ts +97 -0
  277. package/frontend/dist/backend/src/events.js +5 -0
  278. package/frontend/dist/backend/src/frontend.d.ts +13 -0
  279. package/frontend/dist/backend/src/frontend.js +23 -0
  280. package/frontend/dist/backend/src/image_endpoint.d.ts +44 -0
  281. package/frontend/dist/backend/src/image_endpoint.js +196 -0
  282. package/frontend/dist/backend/src/meta.d.ts +112 -0
  283. package/frontend/dist/backend/src/meta.js +152 -0
  284. package/frontend/dist/backend/src/payments/paddle.d.ts +329 -0
  285. package/frontend/dist/backend/src/payments/paddle.js +2276 -0
  286. package/frontend/dist/backend/src/payments/stripe/checkout.d.ts +113 -0
  287. package/frontend/dist/backend/src/payments/stripe/checkout.js +356 -0
  288. package/frontend/dist/backend/src/payments/stripe/customers.d.ts +17 -0
  289. package/frontend/dist/backend/src/payments/stripe/customers.js +193 -0
  290. package/frontend/dist/backend/src/payments/stripe/error.d.ts +74 -0
  291. package/frontend/dist/backend/src/payments/stripe/error.js +51 -0
  292. package/frontend/dist/backend/src/payments/stripe/events.d.ts +155 -0
  293. package/frontend/dist/backend/src/payments/stripe/events.js +5 -0
  294. package/frontend/dist/backend/src/payments/stripe/meters.d.ts +105 -0
  295. package/frontend/dist/backend/src/payments/stripe/meters.js +318 -0
  296. package/frontend/dist/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  297. package/frontend/dist/backend/src/payments/stripe/payment_methods.js +135 -0
  298. package/frontend/dist/backend/src/payments/stripe/products.d.ts +519 -0
  299. package/frontend/dist/backend/src/payments/stripe/products.js +896 -0
  300. package/frontend/dist/backend/src/payments/stripe/stripe.d.ts +215 -0
  301. package/frontend/dist/backend/src/payments/stripe/stripe.js +464 -0
  302. package/frontend/dist/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  303. package/frontend/dist/backend/src/payments/stripe/subscriptions.js +754 -0
  304. package/frontend/dist/backend/src/payments/stripe/utils.d.ts +63 -0
  305. package/frontend/dist/backend/src/payments/stripe/utils.js +131 -0
  306. package/frontend/dist/backend/src/payments/stripe/webhooks.d.ts +105 -0
  307. package/frontend/dist/backend/src/payments/stripe/webhooks.js +752 -0
  308. package/frontend/dist/backend/src/plugins/mail/mail.d.ts +255 -0
  309. package/frontend/dist/backend/src/plugins/mail/mail.js +396 -0
  310. package/frontend/dist/backend/src/plugins/mail/ui.d.ts +297 -0
  311. package/frontend/dist/backend/src/plugins/mail/ui.js +1400 -0
  312. package/frontend/dist/backend/src/rate_limit.d.ts +148 -0
  313. package/frontend/dist/backend/src/rate_limit.js +667 -0
  314. package/frontend/dist/backend/src/route.d.ts +39 -0
  315. package/frontend/dist/backend/src/route.js +222 -0
  316. package/frontend/dist/backend/src/server.d.ts +502 -0
  317. package/frontend/dist/backend/src/server.js +2031 -0
  318. package/frontend/dist/backend/src/splash_screen.d.ts +93 -0
  319. package/frontend/dist/backend/src/splash_screen.js +156 -0
  320. package/frontend/dist/backend/src/status.d.ts +89 -0
  321. package/frontend/dist/backend/src/status.js +213 -0
  322. package/frontend/dist/backend/src/stream.d.ts +494 -0
  323. package/frontend/dist/backend/src/stream.js +1611 -0
  324. package/frontend/dist/backend/src/users.d.ts +926 -0
  325. package/frontend/dist/backend/src/users.js +2423 -0
  326. package/frontend/dist/backend/src/utils.d.ts +22 -0
  327. package/frontend/dist/backend/src/utils.js +463 -0
  328. package/frontend/dist/backend/src/view.d.ts +115 -0
  329. package/frontend/dist/backend/src/view.js +584 -0
  330. package/frontend/dist/frontend/src/css/adyen.css +92 -0
  331. package/frontend/dist/frontend/src/css/volt.css +75 -0
  332. package/frontend/dist/frontend/src/elements/base.d.ts +3743 -0
  333. package/frontend/dist/frontend/src/elements/base.js +12151 -0
  334. package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
  335. package/frontend/dist/frontend/src/elements/module.js +216 -0
  336. package/frontend/dist/frontend/src/elements/register_element.d.ts +3 -0
  337. package/frontend/dist/frontend/src/elements/register_element.js +22 -0
  338. package/frontend/dist/frontend/src/elements/resize_query_manager.d.ts +0 -0
  339. package/frontend/dist/frontend/src/elements/resize_query_manager.js +150 -0
  340. package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
  341. package/frontend/dist/frontend/src/elements/types.js +5 -0
  342. package/frontend/dist/frontend/src/index.d.ts +21 -0
  343. package/frontend/dist/frontend/src/index.js +29 -0
  344. package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
  345. package/frontend/dist/frontend/src/modules/attachment.js +306 -0
  346. package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
  347. package/frontend/dist/frontend/src/modules/auth.js +80 -0
  348. package/frontend/dist/frontend/src/modules/color.d.ts +160 -0
  349. package/frontend/dist/frontend/src/modules/color.js +316 -0
  350. package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
  351. package/frontend/dist/frontend/src/modules/compression.js +102 -0
  352. package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
  353. package/frontend/dist/frontend/src/modules/cookies.js +143 -0
  354. package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
  355. package/frontend/dist/frontend/src/modules/events.js +79 -0
  356. package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
  357. package/frontend/dist/frontend/src/modules/google.js +52 -0
  358. package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
  359. package/frontend/dist/frontend/src/modules/meta.js +48 -0
  360. package/frontend/dist/frontend/src/modules/paddle.d.ts +1207 -0
  361. package/frontend/dist/frontend/src/modules/paddle.js +2594 -0
  362. package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
  363. package/frontend/dist/frontend/src/modules/request.js +117 -0
  364. package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
  365. package/frontend/dist/frontend/src/modules/settings.js +5 -0
  366. package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
  367. package/frontend/dist/frontend/src/modules/statics.js +43 -0
  368. package/frontend/dist/frontend/src/modules/stripe/cart.d.ts +112 -0
  369. package/frontend/dist/frontend/src/modules/stripe/cart.js +321 -0
  370. package/frontend/dist/frontend/src/modules/stripe/checkout.d.ts +7 -0
  371. package/frontend/dist/frontend/src/modules/stripe/checkout.js +37 -0
  372. package/frontend/dist/frontend/src/modules/stripe/index.m.d.ts +6 -0
  373. package/frontend/dist/frontend/src/modules/stripe/index.m.js +6 -0
  374. package/frontend/dist/frontend/src/modules/stripe/payments.d.ts +58 -0
  375. package/frontend/dist/frontend/src/modules/stripe/payments.js +92 -0
  376. package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
  377. package/frontend/dist/frontend/src/modules/support.js +53 -0
  378. package/frontend/dist/frontend/src/modules/theme.d.ts +133 -0
  379. package/frontend/dist/frontend/src/modules/theme.js +406 -0
  380. package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
  381. package/frontend/dist/frontend/src/modules/themes.js +22 -0
  382. package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
  383. package/frontend/dist/frontend/src/modules/user.js +270 -0
  384. package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
  385. package/frontend/dist/frontend/src/modules/utils.js +569 -0
  386. package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
  387. package/frontend/dist/frontend/src/types/gradient.js +79 -0
  388. package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
  389. package/frontend/dist/frontend/src/ui/border_button.js +228 -0
  390. package/frontend/dist/frontend/src/ui/button.d.ts +241 -0
  391. package/frontend/dist/frontend/src/ui/button.js +682 -0
  392. package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
  393. package/frontend/dist/frontend/src/ui/canvas.js +444 -0
  394. package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
  395. package/frontend/dist/frontend/src/ui/checkbox.js +321 -0
  396. package/frontend/dist/frontend/src/ui/code.d.ts +235 -0
  397. package/frontend/dist/frontend/src/ui/code.js +1007 -0
  398. package/frontend/dist/frontend/src/ui/context_menu.d.ts +36 -0
  399. package/frontend/dist/frontend/src/ui/context_menu.js +205 -0
  400. package/frontend/dist/frontend/src/ui/css.d.ts +16 -0
  401. package/frontend/dist/frontend/src/ui/css.js +48 -0
  402. package/frontend/dist/frontend/src/ui/divider.d.ts +15 -0
  403. package/frontend/dist/frontend/src/ui/divider.js +78 -0
  404. package/frontend/dist/frontend/src/ui/dropdown.d.ts +176 -0
  405. package/frontend/dist/frontend/src/ui/dropdown.js +481 -0
  406. package/frontend/dist/frontend/src/ui/for_each.d.ts +37 -0
  407. package/frontend/dist/frontend/src/ui/for_each.js +92 -0
  408. package/frontend/dist/frontend/src/ui/form.d.ts +34 -0
  409. package/frontend/dist/frontend/src/ui/form.js +233 -0
  410. package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
  411. package/frontend/dist/frontend/src/ui/frame_modes.js +108 -0
  412. package/frontend/dist/frontend/src/ui/google_map.d.ts +24 -0
  413. package/frontend/dist/frontend/src/ui/google_map.js +106 -0
  414. package/frontend/dist/frontend/src/ui/gradient.d.ts +25 -0
  415. package/frontend/dist/frontend/src/ui/gradient.js +131 -0
  416. package/frontend/dist/frontend/src/ui/image.d.ts +111 -0
  417. package/frontend/dist/frontend/src/ui/image.js +576 -0
  418. package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
  419. package/frontend/dist/frontend/src/ui/input.js +1201 -0
  420. package/frontend/dist/frontend/src/ui/link.d.ts +25 -0
  421. package/frontend/dist/frontend/src/ui/link.js +140 -0
  422. package/frontend/dist/frontend/src/ui/list.d.ts +37 -0
  423. package/frontend/dist/frontend/src/ui/list.js +170 -0
  424. package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
  425. package/frontend/dist/frontend/src/ui/loader_button.js +193 -0
  426. package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
  427. package/frontend/dist/frontend/src/ui/loaders.js +157 -0
  428. package/frontend/dist/frontend/src/ui/popup.d.ts +94 -0
  429. package/frontend/dist/frontend/src/ui/popup.js +510 -0
  430. package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
  431. package/frontend/dist/frontend/src/ui/pseudo.js +154 -0
  432. package/frontend/dist/frontend/src/ui/scroller.d.ts +105 -0
  433. package/frontend/dist/frontend/src/ui/scroller.js +1253 -0
  434. package/frontend/dist/frontend/src/ui/slider.d.ts +45 -0
  435. package/frontend/dist/frontend/src/ui/slider.js +217 -0
  436. package/frontend/dist/frontend/src/ui/spacer.d.ts +15 -0
  437. package/frontend/dist/frontend/src/ui/spacer.js +78 -0
  438. package/frontend/dist/frontend/src/ui/span.d.ts +15 -0
  439. package/frontend/dist/frontend/src/ui/span.js +73 -0
  440. package/frontend/dist/frontend/src/ui/stack.d.ts +66 -0
  441. package/frontend/dist/frontend/src/ui/stack.js +335 -0
  442. package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
  443. package/frontend/dist/frontend/src/ui/steps.js +308 -0
  444. package/frontend/dist/frontend/src/ui/style.d.ts +17 -0
  445. package/frontend/dist/frontend/src/ui/style.js +73 -0
  446. package/frontend/dist/frontend/src/ui/switch.d.ts +69 -0
  447. package/frontend/dist/frontend/src/ui/switch.js +357 -0
  448. package/frontend/dist/frontend/src/ui/table.d.ts +100 -0
  449. package/frontend/dist/frontend/src/ui/table.js +405 -0
  450. package/frontend/dist/frontend/src/ui/tabs.d.ts +111 -0
  451. package/frontend/dist/frontend/src/ui/tabs.js +424 -0
  452. package/frontend/dist/frontend/src/ui/text.d.ts +15 -0
  453. package/frontend/dist/frontend/src/ui/text.js +83 -0
  454. package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
  455. package/frontend/dist/frontend/src/ui/title.js +272 -0
  456. package/frontend/dist/frontend/src/ui/ui.d.ts +35 -0
  457. package/frontend/dist/frontend/src/ui/ui.js +38 -0
  458. package/frontend/dist/frontend/src/ui/view.d.ts +15 -0
  459. package/frontend/dist/frontend/src/ui/view.js +88 -0
  460. package/frontend/dist/frontend/src/volt.d.ts +20 -0
  461. package/frontend/dist/frontend/src/volt.js +27 -0
  462. package/package.json +7 -2
@@ -0,0 +1,396 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ // imports.
6
+ import * as nodemailer from "nodemailer";
7
+ import * as vlib from "@vandenberghinc/vlib";
8
+ // imports.
9
+ import * as UI from "./ui.js";
10
+ import { ExternalError } from "../../errors/index.js";
11
+ import { Status } from "../../status.js";
12
+ /**
13
+ * The mail class, used to send emails via SMTP.
14
+ *
15
+ * @note This class is initialized under server property `mail` when the server is started with the `smtp` option.
16
+ *
17
+ * @nav Plugins
18
+ * @docs
19
+ */
20
+ export class Mail {
21
+ /** the smpt mailer. */
22
+ smtp;
23
+ /** the smtp sender address. */
24
+ sender; // is defined when `smtp` is defined.
25
+ /** the default mail style. */
26
+ style;
27
+ /** construct a new server instance. */
28
+ constructor({ smtp, style = {
29
+ font: '"Helvetica", sans-serif',
30
+ title_fg: "#121B23",
31
+ subtitle_fg: "#121B23",
32
+ text_fg: "#1F2F3D",
33
+ button_fg: "#FFFFFF",
34
+ footer_fg: "#686B80",
35
+ bg: "#EEEEEE",
36
+ widget_bg: "#FFFFFF",
37
+ widget_border: "#E6E6E6",
38
+ button_bg: "#1F2F3D",
39
+ divider_bg: "#706780",
40
+ }, }) {
41
+ this.style = style;
42
+ this.sender = smtp.sender;
43
+ this.smtp = nodemailer.createTransport({
44
+ ...smtp,
45
+ ...(smtp.override ?? {}),
46
+ });
47
+ }
48
+ // ---------------------------------------------------------
49
+ // public methods.
50
+ /**
51
+ * send one or multiple mails.
52
+ *
53
+ * @note ensure SPF/DKIM are configured when sending attachments.
54
+ * @returns resolves/rejects when the mail has been sent.
55
+ *
56
+ * @param sender optional sender override.
57
+ * @param recipients recipient addresses.
58
+ * @param subject subject line.
59
+ * @param body html string or `UI.MailElement`.
60
+ * @param attachments supported inputs (paths, backend model, REST model, or nodemailer attachment).
61
+ * @param max_attachments limit on number of attachments; -1 disables.
62
+ * @param max_attachment_size max size (bytes) per attachment; -1 disables.
63
+ * @param max_attachments_size max total size (bytes) across attachments; -1 disables.
64
+ *
65
+ * @docs
66
+ */
67
+ async send({ sender = undefined, recipients = [], subject = undefined, body = "", attachments = [], max_attachments = -1, max_attachment_size = -1, max_attachments_size = -1, allow_untrusted_urls = false, }) {
68
+ if (!this.smtp) {
69
+ throw new Error("smtp is not enabled, define the required server argument on initialization to enable smtp.");
70
+ }
71
+ if (body instanceof UI.MailElement) {
72
+ body = body.html();
73
+ }
74
+ if ((sender == null) && (this.sender != null)) {
75
+ sender = this.sender;
76
+ }
77
+ if (!recipients || recipients.length === 0) {
78
+ throw new Error("the mail has no recipients.");
79
+ }
80
+ if (sender == null) {
81
+ throw new Error('parameter "sender" should be a defined value of type "string" or "array".');
82
+ }
83
+ const format_address = (address) => {
84
+ if (Array.isArray(address))
85
+ return `${address[0]} <${address[1]}>`;
86
+ return address;
87
+ };
88
+ const to = [];
89
+ recipients.forEach((address) => to.push(format_address(address)));
90
+ const { nodemailer_attachments } = this.normalize_and_validate_attachments(attachments, {
91
+ max_attachments,
92
+ max_attachment_size,
93
+ max_attachments_size,
94
+ allow_untrusted_urls,
95
+ });
96
+ try {
97
+ await this.smtp.sendMail({
98
+ from: format_address(sender),
99
+ to,
100
+ subject,
101
+ html: body,
102
+ attachments: nodemailer_attachments,
103
+ });
104
+ }
105
+ catch (error) {
106
+ throw new Error(error?.message ?? String(error));
107
+ }
108
+ }
109
+ // ---------------------------------------------------------
110
+ // attachment handling (normalization + validation).
111
+ // ---------------------------------------------------------
112
+ /**
113
+ * convert a single generic attachment input into a nodemailer attachment.
114
+ */
115
+ build_attachment(it, opts = {}) {
116
+ // filesystem path inputs (string | vlib.Path).
117
+ if (typeof it === "string" || (it instanceof vlib.Path)) {
118
+ const path = (it instanceof vlib.Path) ? it : new vlib.Path(it);
119
+ const file_name = path.full_name();
120
+ const buf = path.load_sync();
121
+ return {
122
+ filename: file_name,
123
+ path: path.str(),
124
+ content: buf,
125
+ };
126
+ }
127
+ // rest payload: either { content + encoding } or { url }.
128
+ if (Mail.Attachment.RestAPI.is(it)) {
129
+ const { name, mime_type, charset, compressed } = it;
130
+ // a) content + encoding -> to content Buffer/string for nodemailer.
131
+ if (typeof it.content === "string") {
132
+ const enc = (it.encoding ?? "base64").toLowerCase();
133
+ let payload = it.content;
134
+ if (enc === "base64") {
135
+ payload = Buffer.from(this.normalize_base64(it.content), "base64");
136
+ }
137
+ else if (enc === "hex" || enc === "latin1" || enc === "binary" || enc === "utf8" || enc === "utf-8") {
138
+ const node_enc = enc === "utf-8" ? "utf8" : enc;
139
+ payload = Buffer.from(it.content, node_enc);
140
+ }
141
+ else {
142
+ throw new ExternalError({
143
+ status: Status.bad_request,
144
+ type: "InvalidAttachment",
145
+ message: `Unsupported encoding '${it.encoding}'.`,
146
+ });
147
+ }
148
+ return {
149
+ filename: name ?? "attachment",
150
+ content: payload,
151
+ contentType: mime_type,
152
+ headers: this.build_content_headers({ charset, compressed }),
153
+ };
154
+ }
155
+ // b) url (http/https/data) -> nodemailer streams from path.
156
+ if (it.url) {
157
+ if (!opts.allow_untrusted_urls && this.is_http_url(it.url)) {
158
+ throw new ExternalError({
159
+ status: Status.bad_request,
160
+ type: "UntrustedUrlBlocked",
161
+ message: "http/https attachment urls are blocked by default. set 'allow_untrusted_urls' to true to allow.",
162
+ });
163
+ }
164
+ return {
165
+ filename: name ?? "attachment",
166
+ path: it.url,
167
+ contentType: mime_type,
168
+ headers: this.build_content_headers({ charset, compressed }),
169
+ };
170
+ }
171
+ throw new ExternalError({
172
+ status: Status.bad_request,
173
+ type: "InvalidAttachment",
174
+ message: "Attachment payload missing { content, encoding } or { url }.",
175
+ });
176
+ }
177
+ // backend model: { bytes } or { content + encoding }.
178
+ if (Mail.Attachment.is(it)) {
179
+ const { name, mime_type, charset, compressed } = it;
180
+ if (it.bytes) {
181
+ const buf = Buffer.isBuffer(it.bytes) ? it.bytes : Buffer.from(it.bytes);
182
+ return {
183
+ filename: name ?? "attachment",
184
+ content: buf,
185
+ contentType: mime_type,
186
+ headers: this.build_content_headers({ charset, compressed }),
187
+ };
188
+ }
189
+ if (typeof it.content === "string") {
190
+ const enc = (it.encoding ?? "base64").toLowerCase();
191
+ let payload;
192
+ if (enc === "base64") {
193
+ payload = Buffer.from(this.normalize_base64(it.content), "base64");
194
+ }
195
+ else if (enc === "hex" || enc === "latin1" || enc === "binary" || enc === "utf8" || enc === "utf-8") {
196
+ const node_enc = enc === "utf-8" ? "utf8" : enc;
197
+ payload = Buffer.from(it.content, node_enc);
198
+ }
199
+ else {
200
+ throw new ExternalError({
201
+ status: Status.bad_request,
202
+ type: "InvalidAttachment",
203
+ message: `Unsupported encoding '${it.encoding}'.`,
204
+ });
205
+ }
206
+ return {
207
+ filename: name ?? "attachment",
208
+ content: payload,
209
+ contentType: mime_type,
210
+ headers: this.build_content_headers({ charset, compressed }),
211
+ };
212
+ }
213
+ // passthrough for pre-built nodemailer attachments.
214
+ if (Mail.Attachment.Native.is(it)) {
215
+ return { ...it };
216
+ }
217
+ throw new ExternalError({
218
+ status: Status.bad_request,
219
+ type: "InvalidAttachment",
220
+ message: "Attachment missing content: provide bytes or { content, encoding }.",
221
+ });
222
+ }
223
+ throw new ExternalError({
224
+ status: Status.bad_request,
225
+ type: "InvalidAttachment",
226
+ message: "Unsupported attachment input.",
227
+ });
228
+ }
229
+ /** returns true when url starts with http:// or https:// */
230
+ is_http_url(u) {
231
+ const s = typeof u === "string" ? u : String(u);
232
+ return /^https?:\/\//i.test(s);
233
+ }
234
+ /**
235
+ * normalize and validate a mixed attachment input into nodemailer attachments.
236
+ * @param input mixed list of attachments.
237
+ * @param limits size/count validation limits.
238
+ * @returns normalized nodemailer attachments.
239
+ * @throws {ExternalError} when limits are exceeded.
240
+ */
241
+ normalize_and_validate_attachments(input, limits = {}) {
242
+ const items = input ?? [];
243
+ const nm_attachments = [];
244
+ for (const it of items) {
245
+ const built = this.build_attachment(it, limits);
246
+ nm_attachments.push(built);
247
+ }
248
+ const { max_attachments, max_attachment_size, max_attachments_size, } = limits;
249
+ if (typeof max_attachments === "number" && max_attachments !== -1 && nm_attachments.length > max_attachments) {
250
+ throw new ExternalError({
251
+ status: Status.bad_request,
252
+ type: "TooManyAttachments",
253
+ message: `Too many attachments. max is ${max_attachments}.`,
254
+ });
255
+ }
256
+ if (typeof max_attachment_size === "number" && max_attachment_size !== -1) {
257
+ for (const a of nm_attachments) {
258
+ const size = this.measure_attachment_bytes(a);
259
+ if (size > max_attachment_size) {
260
+ throw new ExternalError({
261
+ status: Status.bad_request,
262
+ type: "AttachmentTooLarge",
263
+ message: `Attachment '${a.filename ?? "unnamed"}' exceeds max size of ${max_attachment_size} bytes.`,
264
+ });
265
+ }
266
+ }
267
+ }
268
+ if (typeof max_attachments_size === "number" && max_attachments_size !== -1) {
269
+ let total = 0;
270
+ for (const a of nm_attachments)
271
+ total += this.measure_attachment_bytes(a);
272
+ if (total > max_attachments_size) {
273
+ throw new ExternalError({
274
+ status: Status.bad_request,
275
+ type: "AttachmentsTooLarge",
276
+ message: `Total attachments size ${total} bytes exceeds max of ${max_attachments_size} bytes.`,
277
+ });
278
+ }
279
+ }
280
+ return { nodemailer_attachments: nm_attachments };
281
+ }
282
+ /**
283
+ * measure the on-wire payload size (approx) of a nodemailer attachment content.
284
+ * note: if `encoding: "base64"` is set, we decode to compute raw byte size.
285
+ */
286
+ measure_attachment_bytes(a) {
287
+ if (a.content) {
288
+ if (Buffer.isBuffer(a.content))
289
+ return a.content.length;
290
+ if (typeof a.content === "string") {
291
+ if (a.encoding === "base64") {
292
+ try {
293
+ return Buffer.from(a.content, "base64").length;
294
+ }
295
+ catch {
296
+ return a.content.length;
297
+ }
298
+ }
299
+ return Buffer.byteLength(a.content);
300
+ }
301
+ // stream size unknown beforehand.
302
+ return 0;
303
+ }
304
+ if (a.path) {
305
+ try {
306
+ const p = new vlib.Path(String(a.path));
307
+ return p.size ?? 0;
308
+ }
309
+ catch {
310
+ return 0;
311
+ }
312
+ }
313
+ return 0;
314
+ }
315
+ /**
316
+ * normalize a base64 or url-safe base64 string to standard base64 (no decoding).
317
+ * trims whitespace and converts url-safe chars.
318
+ */
319
+ normalize_base64(b64) {
320
+ let t = String(b64).trim().replace(/-/g, "+").replace(/_/g, "/");
321
+ const mod = t.length % 4;
322
+ if (mod)
323
+ t += "=".repeat(4 - mod);
324
+ return t;
325
+ }
326
+ /**
327
+ * optional content headers for charset/compression hints.
328
+ * email clients usually ignore custom headers; added for traceability.
329
+ */
330
+ build_content_headers({ charset, compressed }) {
331
+ const headers = {};
332
+ if (charset)
333
+ headers["X-Attachment-Charset"] = charset;
334
+ if (typeof compressed === "boolean")
335
+ headers["X-Attachment-Compressed"] = compressed ? "gzip" : "none";
336
+ return Object.keys(headers).length ? headers : undefined;
337
+ }
338
+ }
339
+ /** nested types for the mail module. */
340
+ (function (Mail) {
341
+ /** Nested attachment types. */
342
+ let Attachment;
343
+ (function (Attachment) {
344
+ Attachment.encodings = new Set(["base64", "hex", "utf8", "utf-8", "binary", "latin1"]);
345
+ /** Type guard. */
346
+ function is(a) {
347
+ return a && typeof a === "object"
348
+ && ("name" in a)
349
+ && (!("path" in a) || typeof a.path === "string")
350
+ && (!("mime_type" in a) || typeof a.mime_type === "string")
351
+ && (!("charset" in a) || typeof a.charset === "string")
352
+ && (!("bytes" in a) || (Buffer.isBuffer(a.bytes) || a.bytes instanceof Uint8Array))
353
+ && (!("content" in a) || typeof a.content === "string")
354
+ && (!("encoding" in a) || Attachment.encodings.has(a.encoding))
355
+ && (!("compressed" in a) || typeof a.compressed === "boolean");
356
+ }
357
+ Attachment.is = is;
358
+ let RestAPI;
359
+ (function (RestAPI) {
360
+ /** Type guard. */
361
+ function is(a) {
362
+ return a && typeof a === "object"
363
+ && ("name" in a)
364
+ && (!("path" in a) || typeof a.path === "string")
365
+ && (!("mime_type" in a) || typeof a.mime_type === "string")
366
+ && (!("charset" in a) || typeof a.charset === "string")
367
+ && (!("compressed" in a) || typeof a.compressed === "boolean")
368
+ && (!("content" in a) || typeof a.content === "string")
369
+ && (!("encoding" in a) || Attachment.encodings.has(a.encoding))
370
+ && (!("url" in a) || typeof a.url === "string");
371
+ }
372
+ RestAPI.is = is;
373
+ /** Schema validation. */
374
+ RestAPI.Schema = {
375
+ name: { type: "string", required: true },
376
+ path: { type: "string", required: false },
377
+ mime_type: { type: "string", required: false },
378
+ charset: { type: "string", required: false },
379
+ compressed: { type: "boolean", required: false },
380
+ content: { type: "string", required: false },
381
+ encoding: { type: "string", enum: Array.from(Attachment.encodings), required: false },
382
+ url: { type: "string", required: false },
383
+ };
384
+ })(RestAPI = Attachment.RestAPI || (Attachment.RestAPI = {}));
385
+ /** Nested native types. */
386
+ let Native;
387
+ (function (Native) {
388
+ /** Simple type guard. */
389
+ function is(a) {
390
+ return a && typeof a === "object"
391
+ && ("content" in a || "path" in a || "filename" in a);
392
+ }
393
+ Native.is = is;
394
+ })(Native = Attachment.Native || (Attachment.Native = {}));
395
+ })(Attachment = Mail.Attachment || (Mail.Attachment = {}));
396
+ })(Mail || (Mail = {}));
@@ -0,0 +1,297 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
5
+ type none = undefined | null;
6
+ export declare class Element {
7
+ type: string;
8
+ element_type: string;
9
+ tag: string;
10
+ _style: Record<string, string>;
11
+ _attrs: Record<string, any>;
12
+ classes: string[];
13
+ _inner_html: string | null;
14
+ children: any[];
15
+ _lang?: string;
16
+ _charset?: string;
17
+ _viewport?: string;
18
+ _title?: string;
19
+ _links?: (string | Record<string, string>)[];
20
+ _disabled?: boolean;
21
+ constructor({ type, tag, default_style, default_attributes, default_events, }: {
22
+ type?: string;
23
+ tag?: string;
24
+ default_style?: Record<string, string> | null;
25
+ default_attributes?: Record<string, string> | null;
26
+ default_events?: Record<string, (event: Event) => any> | null;
27
+ });
28
+ pad_numeric(value: string | number, padding?: string): string;
29
+ html(): string;
30
+ links(links: (string | Record<string, string>)[]): this;
31
+ /**
32
+ * Get or set the background color of the element.
33
+ * @param value The color value to set.
34
+ * @returns The current value when getting, or the element instance when setting.
35
+ * @funcs 3
36
+ */
37
+ background_color(): string | undefined;
38
+ background_color(value: string): this;
39
+ /**
40
+ * Get or set the display property.
41
+ * @funcs 3
42
+ */
43
+ display(): string | undefined;
44
+ display(value: string): this;
45
+ /**
46
+ * Get or set the background image.
47
+ * @funcs 3
48
+ */
49
+ background_image(): string | undefined;
50
+ background_image(value: string): this;
51
+ background_repeat(): string | undefined;
52
+ background_repeat(value: string): this;
53
+ border_top(): string | undefined;
54
+ border_top(value: string): this;
55
+ border_bottom(): string | undefined;
56
+ border_bottom(value: string): this;
57
+ border_right(): string | undefined;
58
+ border_right(value: string): this;
59
+ border_left(): string | undefined;
60
+ border_left(value: string): this;
61
+ border_color(): string | undefined;
62
+ border_color(value: string): this;
63
+ border_style(): string | undefined;
64
+ border_style(value: string): this;
65
+ cursor(): string | undefined;
66
+ cursor(value: string): this;
67
+ justify_items(): string | undefined;
68
+ justify_items(value: string): this;
69
+ letter_spacing(): string | undefined;
70
+ letter_spacing(value: string): this;
71
+ line_height(): string | undefined;
72
+ line_height(value: string): this;
73
+ outline(): string | undefined;
74
+ outline(value: string): this;
75
+ overflow(): string | undefined;
76
+ overflow(value: string): this;
77
+ overflow_x(): string | undefined;
78
+ overflow_x(value: string): this;
79
+ overflow_y(): string | undefined;
80
+ overflow_y(value: string): this;
81
+ text_align(): string | undefined;
82
+ text_align(value: string): this;
83
+ text_align_last(): string | undefined;
84
+ text_align_last(value: string): this;
85
+ text_decoration(): string | undefined;
86
+ text_decoration(value: string): this;
87
+ text_decoration_color(): string | undefined;
88
+ text_decoration_color(value: string): this;
89
+ text_wrap(): string | undefined;
90
+ text_wrap(value: string): this;
91
+ white_space(): string | undefined;
92
+ white_space(value: string): this;
93
+ overflow_wrap(): string | undefined;
94
+ overflow_wrap(value: string): this;
95
+ word_wrap(): string | undefined;
96
+ word_wrap(value: string): this;
97
+ box_shadow(): string | undefined;
98
+ box_shadow(value: string): this;
99
+ drop_shadow(): string | undefined;
100
+ drop_shadow(value: string): this;
101
+ font_size(): string | undefined;
102
+ font_size(value: string | number): this;
103
+ font(): string | undefined;
104
+ font(value: string | number): this;
105
+ font_family(): string | undefined;
106
+ font_family(value: string | number): this;
107
+ font_style(): string | undefined;
108
+ font_style(value: string | number): this;
109
+ font_weight(): string | undefined;
110
+ font_weight(value: string | number): this;
111
+ width(): string | undefined;
112
+ width(value: string | number): this;
113
+ min_width(): string | undefined;
114
+ min_width(value: string | number): this;
115
+ max_width(): string | undefined;
116
+ max_width(value: string | number): this;
117
+ height(): string | undefined;
118
+ height(value: string | number): this;
119
+ min_height(): string | undefined;
120
+ min_height(value: string | number): this;
121
+ max_height(): string | undefined;
122
+ max_height(value: string | number): this;
123
+ margin_top(): string | undefined;
124
+ margin_top(value: string | number): this;
125
+ margin_bottom(): string | undefined;
126
+ margin_bottom(value: string | number): this;
127
+ margin_right(): string | undefined;
128
+ margin_right(value: string | number): this;
129
+ margin_left(): string | undefined;
130
+ margin_left(value: string | number): this;
131
+ padding_top(): string | undefined;
132
+ padding_top(value: string | number): this;
133
+ padding_bottom(): string | undefined;
134
+ padding_bottom(value: string | number): this;
135
+ padding_right(): string | undefined;
136
+ padding_right(value: string | number): this;
137
+ padding_left(): string | undefined;
138
+ padding_left(value: string | number): this;
139
+ border_width(): string | undefined;
140
+ border_width(value: string | number): this;
141
+ align_items(): string | undefined;
142
+ align_items(value: string): this;
143
+ align_content(): string | undefined;
144
+ align_content(value: string): this;
145
+ background_size(): string | undefined;
146
+ background_size(value: string): this;
147
+ box_sizing(): string | undefined;
148
+ box_sizing(value: string): this;
149
+ flex(): string | undefined;
150
+ flex(value: string): this;
151
+ flex_grow(): string | undefined;
152
+ flex_grow(value: string): this;
153
+ flex_shrink(): string | undefined;
154
+ flex_shrink(value: string): this;
155
+ justify_content(): string | undefined;
156
+ justify_content(value: string): this;
157
+ mask(): string | undefined;
158
+ mask(value: string): this;
159
+ user_select(): string | undefined;
160
+ user_select(value: string): this;
161
+ styles(styles: Record<string, string>): this;
162
+ attrs(attrs: Record<string, string>): this;
163
+ events(events: Record<string, (event: Event) => void>): this;
164
+ add_class(name: string): this;
165
+ remove_class(name: string): this;
166
+ append(...children: (Element | any[] | Function | none)[]): this;
167
+ inner_html(): string | null;
168
+ inner_html(value: string): this;
169
+ center(): this;
170
+ padding(): string;
171
+ padding(value: string | number): this;
172
+ padding(top_bottom: string | number, left_right: string | number): this;
173
+ padding(top: string | number, right: string | number, bottom: string | number, left: string | number): this;
174
+ margin(): string | undefined;
175
+ margin(value: string | number): this;
176
+ margin(value: none | string | number, value2: none | string | number): this;
177
+ margin(value: none | string | number, value2: none | string | number, value3: none | string | number, value4: none | string | number): this;
178
+ fixed_width(): string | undefined;
179
+ fixed_width(value: string | number): this;
180
+ fixed_height(): string | undefined;
181
+ fixed_height(value: string | number): this;
182
+ frame(width: string | number | undefined, height: string | number | undefined): this;
183
+ min_frame(width: string | number | undefined, height: string | number | undefined): this;
184
+ max_frame(width: string | number | undefined, height: string | number | undefined): this;
185
+ fixed_frame(width: string | number | undefined, height: string | number | undefined): this;
186
+ color(): string | undefined;
187
+ color(value: string): this;
188
+ border(): string | undefined;
189
+ border(a: string): this;
190
+ border(a: string | number, b: string | number): this;
191
+ border(a: string | number, b: string | number, c: string | number): this;
192
+ border_radius(): string | undefined;
193
+ border_radius(value: string | number): this;
194
+ background(): string | undefined;
195
+ background(value: string): this;
196
+ ellipsis_overflow(): boolean | undefined;
197
+ ellipsis_overflow(to: boolean): this;
198
+ on_click(): ((e: this, t: Event) => void) | undefined;
199
+ on_click(callback: (e: this, t: Event) => void): this;
200
+ lang(): string | undefined;
201
+ lang(value: string): this;
202
+ charset(): string | undefined;
203
+ charset(value: string): this;
204
+ viewport(): string | undefined;
205
+ viewport(value: string): this;
206
+ title(): string | undefined;
207
+ title(value: string): this;
208
+ }
209
+ export declare class TitleElement extends Element {
210
+ constructor(text?: string);
211
+ }
212
+ export declare const Title: <Extensions extends object = {}>(text?: string | undefined) => TitleElement & Extensions;
213
+ export declare const NullTitle: <Extensions extends object = {}>() => TitleElement & Extensions;
214
+ export declare class SubtitleElement extends Element {
215
+ constructor(text?: string);
216
+ }
217
+ export declare const Subtitle: <Extensions extends object = {}>(text?: string | undefined) => SubtitleElement & Extensions;
218
+ export declare const NullSubtitle: <Extensions extends object = {}>() => SubtitleElement & Extensions;
219
+ export declare class TextElement extends Element {
220
+ constructor(text?: string);
221
+ }
222
+ export declare const Text: <Extensions extends object = {}>(text?: string | undefined) => TextElement & Extensions;
223
+ export declare const NullText: <Extensions extends object = {}>() => TextElement & Extensions;
224
+ export declare class ImageElement extends Element {
225
+ constructor(src?: string);
226
+ }
227
+ export declare const Image: <Extensions extends object = {}>(src?: string | undefined) => ImageElement & Extensions;
228
+ export declare const NullImageElement: <Extensions extends object = {}>() => ImageElement & Extensions;
229
+ export declare class ImageMaskElement extends Element {
230
+ mask_child: VStackElement;
231
+ _src?: string;
232
+ constructor(src?: string);
233
+ mask_color(): string | undefined;
234
+ mask_color(value: string): this;
235
+ src(): string | undefined;
236
+ src(value: string): this;
237
+ mask(): string | undefined;
238
+ mask(value: string): this;
239
+ }
240
+ export declare const ImageMask: <Extensions extends object = {}>(src?: string | undefined) => ImageMaskElement & Extensions;
241
+ export declare const NullImageMaskElement: <Extensions extends object = {}>() => ImageMaskElement & Extensions;
242
+ export declare class VStackElement extends Element {
243
+ constructor(...children: any[]);
244
+ }
245
+ export declare const VStack: <Extensions extends object = {}>(...args: any[]) => VStackElement & Extensions;
246
+ export declare const NullVStackElement: <Extensions extends object = {}>() => VStackElement & Extensions;
247
+ export declare class DividerElement extends Element {
248
+ constructor(text?: string);
249
+ }
250
+ export declare const Divider: <Extensions extends object = {}>(text?: string | undefined) => DividerElement & Extensions;
251
+ export declare const NullDividerElement: <Extensions extends object = {}>() => DividerElement & Extensions;
252
+ export declare class TableDataElement extends Element {
253
+ constructor(...children: any[]);
254
+ center(): this;
255
+ center_vertical(): this;
256
+ leading_vertical(): this;
257
+ trailing_vertical(): this;
258
+ }
259
+ export declare const TableData: <Extensions extends object = {}>(...args: any[]) => TableDataElement & Extensions;
260
+ export declare const NullTableDataElement: <Extensions extends object = {}>() => TableDataElement & Extensions;
261
+ export declare class TableRowElement extends Element {
262
+ private current_cell;
263
+ private _wrap;
264
+ constructor(...children: any[]);
265
+ append(...children: any[]): this;
266
+ wrap(): boolean;
267
+ wrap(value: boolean): this;
268
+ center(): this;
269
+ center_vertical(): this;
270
+ leading_vertical(): this;
271
+ trailing_vertical(): this;
272
+ }
273
+ export declare const TableRow: <Extensions extends object = {}>(...args: any[]) => TableRowElement & Extensions;
274
+ export declare const NullTableRowElement: <Extensions extends object = {}>() => TableRowElement & Extensions;
275
+ export declare class TableElement extends Element {
276
+ current_cell?: TableDataElement;
277
+ current_row: TableRowElement;
278
+ constructor(...children: any[]);
279
+ row(...children: any[]): this;
280
+ append(...children: any[]): this;
281
+ }
282
+ export declare const Table: <Extensions extends object = {}>(...args: any[]) => TableElement & Extensions;
283
+ export declare const NullTableElement: <Extensions extends object = {}>() => TableElement & Extensions;
284
+ export declare class CSSElement extends Element {
285
+ constructor(style?: string);
286
+ }
287
+ export declare const CSS: <Extensions extends object = {}>(style?: string | undefined) => CSSElement & Extensions;
288
+ export declare const NullCSSElement: <Extensions extends object = {}>() => CSSElement & Extensions;
289
+ export declare class MailElement extends Element {
290
+ private _subject?;
291
+ constructor(...children: any[]);
292
+ subject(): string | undefined;
293
+ subject(subj: string): this;
294
+ }
295
+ export declare const Mail: <Extensions extends object = {}>(...args: any[]) => MailElement & Extensions;
296
+ export declare const NullMailElement: <Extensions extends object = {}>() => MailElement & Extensions;
297
+ export {};