@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,479 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Imports.
7
+ import { View } from './view.js';
8
+ import * as vlib from "@vandenberghinc/vlib";
9
+ import { ExternalError, InternalError } from "./errors/internal_external.js";
10
+ import { Status } from "./status.js";
11
+ import { RateLimits } from "./rate_limit.js";
12
+ import { Route } from './route.js';
13
+ import Meta from './meta.js';
14
+ import { Utils } from './utils.js';
15
+ const { debug } = vlib;
16
+ // ---------------------------------------------------------
17
+ // Endpoint
18
+ /**
19
+ * The endpoint class.
20
+ * @nav Endpoints
21
+ * @docs
22
+ */
23
+ export class Endpoint {
24
+ /** Route attributes */
25
+ id;
26
+ route;
27
+ /** Requires authentication */
28
+ authenticated;
29
+ /** Parameter scheme validator */
30
+ params_validator;
31
+ params_schema;
32
+ allow_unknown_params;
33
+ /** The default response headers */
34
+ headers;
35
+ /** Option 2) View based endpoint */
36
+ view;
37
+ /** Option 3) Data endpoint, raw */
38
+ data;
39
+ raw_data;
40
+ /** Option 4 Data endpoint by file path. */
41
+ file_path;
42
+ /** Content length & type */
43
+ content_type;
44
+ /** Booleans */
45
+ is_static;
46
+ is_image_endpoint = false;
47
+ allow_sitemap;
48
+ allow_robots;
49
+ /** Rate limit groups for internal use. */
50
+ rate_limit_groups;
51
+ /** Private attributes */
52
+ _compress;
53
+ _cache;
54
+ ip_whitelist;
55
+ // private _is_compressed?: boolean;
56
+ _dynamic_initialized = false;
57
+ /** A reference to the server. */
58
+ server;
59
+ /**
60
+ * Clone this endpoint, used to create a modified copy of the current endpoint.
61
+ * @param override Override specific endpoint options, note that this will be shallow merged.
62
+ *
63
+ * @docs
64
+ */
65
+ static clone(endpoint, override) {
66
+ return new Endpoint({
67
+ ...vlib.Object.deep_copy({
68
+ method: endpoint.route.method,
69
+ endpoint: endpoint.route.endpoint,
70
+ authenticated: endpoint.authenticated,
71
+ rate_limit: endpoint.rate_limit_groups,
72
+ params: endpoint.params_schema,
73
+ compress: endpoint._compress,
74
+ cache: endpoint._cache,
75
+ ip_whitelist: endpoint.ip_whitelist,
76
+ sitemap: endpoint.allow_sitemap,
77
+ robots: endpoint.allow_robots,
78
+ allow_unknown_params: endpoint.allow_unknown_params,
79
+ _is_static: endpoint.is_static,
80
+ data: endpoint.data,
81
+ file_path: endpoint.file_path,
82
+ content_type: endpoint.content_type,
83
+ callback: endpoint.callback,
84
+ }),
85
+ view: endpoint.view?.clone(),
86
+ ...override,
87
+ });
88
+ }
89
+ /**
90
+ * Static function to create a very strict method.
91
+ * This is a utility type that can be used when defining frontend `Request.Info` types.
92
+ * With this function we can enforce that the method matches the method defined in the `Request.Info` type,
93
+ * which can be useful to prevent mistakes when defining endpoints.
94
+ *
95
+ * @example
96
+ * {Create Strict Endpoint}
97
+ * Create a strict endpoint based on a frontend request info type.
98
+ * If there are any mismatches between the defined method,
99
+ * endpoint or result data with the `Request.Info` type,
100
+ * a TypeScript compile-time error will be thrown.
101
+ *
102
+ * ```ts
103
+ * import { Request } from "@vandenberghinc/volt/frontend";
104
+ * import * as volt from "@vandenberghinc/volt";
105
+ *
106
+ * type MyRequestInfo = Request.Info<
107
+ * "POST", // method
108
+ * "/api/my-endpoint", // endpoint
109
+ * { id: string } // params
110
+ * { name: string } // result
111
+ * undefined // error
112
+ * >;
113
+ *
114
+ * server.endpoint({
115
+ * method: volt.Endpoint.method<MyRequestInfo>("POST"),
116
+ * endpoint: volt.Endpoint.endpoint<MyRequestInfo>("/api/my-endpoint"),
117
+ * params: { id: "string" },
118
+ * callback: async (stream, params) => {
119
+ * // Send a success response.
120
+ * stream.send<MyRequestInfo["result"]>({
121
+ * status: 200,
122
+ * data: { name: "John Doe" },
123
+ * });
124
+ *. },
125
+ * })
126
+ * ```
127
+ */
128
+ static method(method) {
129
+ return method;
130
+ }
131
+ /**
132
+ * Static function to create a very strict endpoint.
133
+ * This is a utility type that can be used when defining frontend `Request.Info` types.
134
+ * With this function we can enforce that the endpoint matches the endpoint defined in the `Request.Info` type,
135
+ * which can be useful to prevent mistakes when defining endpoints.
136
+ *
137
+ * @example
138
+ * {Create Strict Endpoint}
139
+ * Create a strict endpoint based on a frontend request info type.
140
+ * If there are any mismatches between the defined method,
141
+ * endpoint or result data with the `Request.Info` type,
142
+ * a TypeScript compile-time error will be thrown.
143
+ *
144
+ * ```ts
145
+ * import { Request } from "@vandenberghinc/volt/frontend";
146
+ * import * as volt from "@vandenberghinc/volt";
147
+ *
148
+ * type MyRequestInfo = Request.Info<
149
+ * "POST", // method
150
+ * "/api/my-endpoint", // endpoint
151
+ * { id: string } // params
152
+ * { name: string } // result
153
+ * undefined // error
154
+ * >;
155
+ *
156
+ * server.endpoint({
157
+ * method: volt.Endpoint.method<MyRequestInfo>("POST"),
158
+ * endpoint: volt.Endpoint.endpoint<MyRequestInfo>("/api/my-endpoint"),
159
+ * params: { id: "string" },
160
+ * callback: async (stream, params) => {
161
+ * // Send a success response.
162
+ * stream.send<MyRequestInfo["result"]>({
163
+ * status: 200,
164
+ * data: { name: "John Doe" },
165
+ * });
166
+ *. },
167
+ * })
168
+ * ```
169
+ */
170
+ static endpoint(endpoint) {
171
+ return endpoint;
172
+ }
173
+ /**
174
+ * Construct an endpoint.
175
+ * @docs
176
+ */
177
+ constructor({ method, endpoint, authenticated = false, rate_limit = undefined, params = undefined, compress = true, cache = true, ip_whitelist = undefined, sitemap = undefined, robots = undefined, allow_unknown_params = false, _is_static = false,
178
+ // mode options.
179
+ callback = undefined, view = undefined, data = undefined, file_path = undefined, content_type, // = "text/plain",
180
+ }) {
181
+ // Attributes.
182
+ this.route = new Route(method ?? "GET", endpoint);
183
+ this.id = this.route.id;
184
+ this.authenticated = authenticated;
185
+ if (this.callback === undefined) { // only assign when undefined, so derived classes can also define the callback function.
186
+ this.callback = callback;
187
+ }
188
+ this.data = data;
189
+ this.content_type = content_type;
190
+ this._cache = cache;
191
+ this.allow_sitemap = sitemap ?? true;
192
+ this.allow_robots = robots ?? true;
193
+ this.file_path = file_path == null ? file_path : new vlib.Path(file_path).abs();
194
+ this.ip_whitelist = Array.isArray(ip_whitelist) ? ip_whitelist : undefined;
195
+ this.is_static = _is_static;
196
+ this.headers = [];
197
+ this.params_schema = params;
198
+ this.allow_unknown_params = allow_unknown_params;
199
+ // Excluded endpoint chars
200
+ if (typeof endpoint === "string") {
201
+ ["\n", "\,"].forEach((c) => {
202
+ if (endpoint.indexOf(c) !== -1) {
203
+ throw Error("The \",\" character is not allowed inside an endpoint url.");
204
+ }
205
+ });
206
+ }
207
+ // Argument `view` may also be passed as an object instead of class View.
208
+ if (view == null) {
209
+ this.view = undefined;
210
+ }
211
+ else if (view instanceof View) {
212
+ this.view = view;
213
+ }
214
+ else {
215
+ this.view = new View(view);
216
+ }
217
+ // Set content type from file path.
218
+ if (this.file_path != null && this.content_type == null) {
219
+ this.content_type = Utils.mime_type(this.file_path.extension()) ?? "application/octet-stream";
220
+ }
221
+ // Set content type from defined view after view is defined.
222
+ else if (this.view != null) {
223
+ this.content_type = "text/html";
224
+ }
225
+ // Set compression after content type is defined.
226
+ if (compress === false) {
227
+ this._compress = false;
228
+ }
229
+ else if (this.file_path) {
230
+ this._compress = !(Utils.is_compressed_extension(this.file_path.extension()) ?? false);
231
+ }
232
+ else if (this.content_type != null) {
233
+ this._compress = !Utils.is_compressed_content_type(this.content_type);
234
+ }
235
+ else {
236
+ this._compress = true;
237
+ }
238
+ // Set default visible in sitemap.
239
+ if (this.allow_sitemap == null) {
240
+ if (this.view != null &&
241
+ this.route.endpoint != "robots.txt" &&
242
+ this.route.endpoint != "sitemap.xml" &&
243
+ !this.authenticated) {
244
+ this.allow_sitemap = true;
245
+ }
246
+ else {
247
+ this.allow_sitemap = false;
248
+ }
249
+ }
250
+ // Set crawling by robots.
251
+ if (this.allow_robots == null) {
252
+ this.allow_robots = !this.authenticated && (this.view != null || this.route.endpoint == "robots.txt" || this.route.endpoint == "sitemap.xml");
253
+ }
254
+ // Assign rate limits.
255
+ this.rate_limit_groups = [];
256
+ if (Array.isArray(rate_limit)) {
257
+ rate_limit.forEach((item) => {
258
+ if (typeof item === "string") {
259
+ const group = RateLimits.groups.get(item);
260
+ if (!group)
261
+ throw new Error(`Rate limit group "${item}" does not exist.`);
262
+ this.rate_limit_groups.push(group);
263
+ }
264
+ else {
265
+ this.rate_limit_groups.push(RateLimits.add(item));
266
+ }
267
+ });
268
+ }
269
+ else if (typeof rate_limit === "string") {
270
+ const group = RateLimits.groups.get(rate_limit);
271
+ if (!group)
272
+ throw new Error(`Rate limit group "${rate_limit}" does not exist.`);
273
+ this.rate_limit_groups.push(group);
274
+ }
275
+ else if (typeof rate_limit === "object" && rate_limit != null) {
276
+ this.rate_limit_groups.push(RateLimits.add(rate_limit));
277
+ }
278
+ // Add path parameters from route.
279
+ let params_scheme = params;
280
+ if (this.route.params.length > 0) {
281
+ params_scheme ??= {};
282
+ this.route.params.forEach((item) => {
283
+ if (params_scheme[item.name] == null) {
284
+ params_scheme[item.name] = {
285
+ type: "string",
286
+ required: item.required ?? true,
287
+ allow_empty: false,
288
+ };
289
+ }
290
+ });
291
+ }
292
+ // Initialize the parameter scheme validator.
293
+ if (params_scheme != null) {
294
+ this.params_validator = new vlib.Schema.Validator({
295
+ schema: params_scheme,
296
+ unknown: allow_unknown_params,
297
+ parent: this.route.id + ":",
298
+ throw: false,
299
+ });
300
+ }
301
+ }
302
+ /**
303
+ * Serve this endpoint manually from a stream.
304
+ * This can for instance be used to serve a HTML `/error` endpoint from within a callback.
305
+ * @docs
306
+ */
307
+ async serve({ stream, status: status_code = 200, templates, }) {
308
+ if (!this._dynamic_initialized) {
309
+ await this._dynamic_initialize();
310
+ }
311
+ try {
312
+ // Check IP whitelist.
313
+ if (this.ip_whitelist && !this.ip_whitelist.includes(stream.ip)) {
314
+ this.server?.log(2, this.route.id, ": ", "Blocking ip ", stream.ip, " per ip whitelist.");
315
+ stream.send({
316
+ status: Status.unauthorized,
317
+ data: "Unauthorized.",
318
+ });
319
+ return;
320
+ }
321
+ // Set headers.
322
+ this._set_headers(stream);
323
+ // Callback.
324
+ if (this.callback != null) {
325
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in callback mode.");
326
+ if (this.params_validator != null) {
327
+ const { error, invalid_fields } = this.params_validator.validate(stream.params ?? {});
328
+ if (error) {
329
+ stream.send({
330
+ status: Status.bad_request,
331
+ headers: { "Content-Type": "application/json" },
332
+ data: {
333
+ error,
334
+ invalid_fields,
335
+ }
336
+ });
337
+ return;
338
+ }
339
+ }
340
+ try {
341
+ if (this.params_validator != null) {
342
+ await this.callback(stream, (stream.params ?? {}));
343
+ }
344
+ else {
345
+ await this.callback(stream, {});
346
+ }
347
+ }
348
+ catch (err) {
349
+ if (err instanceof ExternalError || err instanceof InternalError) {
350
+ err.serve(stream);
351
+ }
352
+ else {
353
+ stream.error({
354
+ status: Status.internal_server_error,
355
+ headers: { "Content-Type": "application/json" },
356
+ message: "Internal Server Error",
357
+ type: "InternalServerError",
358
+ });
359
+ }
360
+ this.server?.log.error(`${this.id}: `, err); // after sending the response since this edits the error.
361
+ }
362
+ return;
363
+ }
364
+ // View.
365
+ else if (this.view != null) {
366
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in view mode.");
367
+ await this.view._serve(stream, status_code, { compress: this._compress, templates: templates });
368
+ return;
369
+ }
370
+ // Load from file.
371
+ else if (this.file_path != null) {
372
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in file mode.");
373
+ stream.send({
374
+ status: status_code,
375
+ from_file: this.file_path,
376
+ compress: this._compress,
377
+ templates: templates,
378
+ });
379
+ return;
380
+ }
381
+ // Data.
382
+ else if (this.data != null) {
383
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in data mode.");
384
+ stream.send({
385
+ status: status_code,
386
+ data: this.data,
387
+ compress: this._compress,
388
+ templates: templates,
389
+ });
390
+ return;
391
+ }
392
+ // Undefined.
393
+ else {
394
+ throw new Error(`${this.id}: Undefined behaviour, define one of the following endpoint attributes [callback, view, data].`);
395
+ }
396
+ }
397
+ catch (err) {
398
+ throw err; // must have another catch block here otherwise when an error occurs in here it is somehow not catched by the try and catch block from Server._serve which will cause the program to crash.
399
+ }
400
+ }
401
+ // ----------------------------------------------------------
402
+ // System methods.
403
+ /** Initialize with server. */
404
+ _initialize(server) {
405
+ // Already initialized.
406
+ if (this.server != null) {
407
+ return this;
408
+ }
409
+ // Assign attribute.
410
+ this.server = server;
411
+ // Initialize view.
412
+ if (this.view != null) {
413
+ this.view.initialize(server, this);
414
+ }
415
+ // Init view meta.
416
+ if (this.view != null) {
417
+ if (this.view.meta == null) {
418
+ this.view.meta = server.meta.copy();
419
+ }
420
+ else if (typeof this.view.meta === "object" && !(this.view.meta instanceof Meta)) {
421
+ this.view.meta = new Meta(this.view.meta);
422
+ }
423
+ }
424
+ return this;
425
+ }
426
+ // Initialize.
427
+ async _dynamic_initialize() {
428
+ if (!this.server) {
429
+ throw new Error(`Endpoint "${this.id}" is not initialized by the server yet.`);
430
+ }
431
+ // Set cache headers.
432
+ if (!this.server.production) {
433
+ this._cache = false; // @todo @tmp
434
+ }
435
+ if (typeof this._cache === "number" || this._cache === true) {
436
+ if (this._cache === 1 || this._cache === true) {
437
+ this.headers.push(["Cache-Control", "max-age=86400"]);
438
+ }
439
+ else {
440
+ this.headers.push(["Cache-Control", `max-age=${this._cache}`]);
441
+ }
442
+ }
443
+ // Set content type.
444
+ if (this.content_type != null) {
445
+ this.headers.push(["Content-Type", this.content_type]);
446
+ }
447
+ this._dynamic_initialized = true;
448
+ }
449
+ // Set default headers.
450
+ _set_headers(stream) {
451
+ this.headers.forEach((item) => {
452
+ stream.set_header(item[0], item[1]);
453
+ });
454
+ }
455
+ // Serve a client.
456
+ async _serve_options(stream) {
457
+ if (!this._dynamic_initialized) {
458
+ await this._dynamic_initialize();
459
+ }
460
+ try {
461
+ // Check IP whitelist.
462
+ if (this.ip_whitelist && !this.ip_whitelist.includes(stream.ip)) {
463
+ stream.error({
464
+ status: Status.unauthorized,
465
+ type: "Unauthorized",
466
+ message: "Unauthorized.",
467
+ });
468
+ return;
469
+ }
470
+ // Set headers.
471
+ this._set_headers(stream);
472
+ // Send.
473
+ stream.send({ status: Status.no_content });
474
+ }
475
+ catch (err) {
476
+ throw err; // must have another catch block here otherwise when an error occurs in here it is somehow not catched by the try and catch block from Server._serve which will cause the program to crash.
477
+ }
478
+ }
479
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ export * from './invalid_usage_error.js';
6
+ export * from './system_error.js';
7
+ export * from './internal_external.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ export * from './invalid_usage_error.js';
6
+ export * from './system_error.js';
7
+ export * from './internal_external.js';
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ import type { Stream } from "../stream.js";
6
+ /**
7
+ * The base class for internal and external errors.
8
+ */
9
+ declare class BaseError extends Error {
10
+ type: string;
11
+ status: number;
12
+ data?: any[] | Record<string, any>;
13
+ invalid_fields: Record<string, string>;
14
+ constructor({ type, message, status, data, invalid_fields, cause }: {
15
+ message: string;
16
+ type?: string;
17
+ status?: number;
18
+ data?: any[] | Record<string, any>;
19
+ invalid_fields?: Record<string, string>;
20
+ cause?: unknown;
21
+ });
22
+ serve(stream: Stream): this;
23
+ }
24
+ /**
25
+ * Thrown internal errors are not presented to the user, instead an internal server error message is shown.
26
+ *
27
+ * @nav Errors
28
+ * @docs
29
+ */
30
+ export declare class InternalError extends BaseError {
31
+ constructor(args: ConstructorParameters<typeof BaseError>[0]);
32
+ /**
33
+ * Serve a generic internal server error response.
34
+ * @docs
35
+ */
36
+ serve(stream: Stream): this;
37
+ }
38
+ /**
39
+ * Thrown external errors are presented to the user when caused inside a request context.
40
+ *
41
+ * @nav Errors
42
+ * @docs
43
+ */
44
+ export declare class ExternalError extends BaseError {
45
+ constructor(args: ConstructorParameters<typeof BaseError>[0]);
46
+ /**
47
+ * Serve the external error response.
48
+ * @docs
49
+ */
50
+ serve(stream: Stream): this;
51
+ }
52
+ export {};
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ import { Status } from "../status.js";
6
+ /**
7
+ * The base class for internal and external errors.
8
+ */
9
+ class BaseError extends Error {
10
+ type;
11
+ status;
12
+ data;
13
+ invalid_fields;
14
+ constructor({ type = "BaseError", message, status, data, invalid_fields, cause }) {
15
+ super(message);
16
+ this.name = "BaseError";
17
+ this.type = type;
18
+ this.status = status ?? Status.internal_server_error;
19
+ this.data = data;
20
+ this.invalid_fields = invalid_fields ?? {};
21
+ this.cause = cause;
22
+ }
23
+ serve(stream) {
24
+ stream.error({
25
+ status: this.status ?? Status.internal_server_error,
26
+ headers: { "Content-Type": "application/json" },
27
+ message: this.message,
28
+ type: this.type,
29
+ invalid_fields: this.invalid_fields,
30
+ });
31
+ return this;
32
+ }
33
+ }
34
+ /**
35
+ * Thrown internal errors are not presented to the user, instead an internal server error message is shown.
36
+ *
37
+ * @nav Errors
38
+ * @docs
39
+ */
40
+ export class InternalError extends BaseError {
41
+ constructor(args) {
42
+ args.type ??= "InternalError";
43
+ super(args);
44
+ this.name = "InternalError";
45
+ }
46
+ /**
47
+ * Serve a generic internal server error response.
48
+ * @docs
49
+ */
50
+ serve(stream) {
51
+ stream.error({
52
+ status: Status.internal_server_error,
53
+ headers: { "Content-Type": "application/json" },
54
+ message: "Internal Server Error",
55
+ type: "InternalServerError",
56
+ });
57
+ return this;
58
+ }
59
+ }
60
+ /**
61
+ * Thrown external errors are presented to the user when caused inside a request context.
62
+ *
63
+ * @nav Errors
64
+ * @docs
65
+ */
66
+ export class ExternalError extends BaseError {
67
+ constructor(args) {
68
+ args.type ??= "ExternalError";
69
+ super(args);
70
+ this.name = "ExternalError";
71
+ }
72
+ /**
73
+ * Serve the external error response.
74
+ * @docs
75
+ */
76
+ serve(stream) {
77
+ stream.error({
78
+ status: this.status ?? Status.internal_server_error,
79
+ headers: { "Content-Type": "application/json" },
80
+ message: this.message,
81
+ type: this.type,
82
+ invalid_fields: this.invalid_fields,
83
+ });
84
+ return this;
85
+ }
86
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ /**
6
+ * An invalid usage error.
7
+ * This only extends the base Error class.
8
+ * By default this class will be shown as an internal server error when caused inside an endpoint callback.
9
+ *
10
+ * @nav Errors
11
+ * @docs
12
+ */
13
+ export declare class InvalidUsageError extends Error {
14
+ /**
15
+ * The reason code for the invalid usage error, e.g. `bad_ttl`
16
+ * or `invalid_filter`.
17
+ *
18
+ * Could be used to detect specific issues with the request,
19
+ */
20
+ reason?: string;
21
+ /** The optional param/attr/field that was invalid. */
22
+ field?: string;
23
+ /** An optional error that caused the invalid usage error. */
24
+ cause?: unknown;
25
+ /** Construct an invalid usage error. */
26
+ constructor(opts: {
27
+ /** The error message. */
28
+ message: string;
29
+ /** The optional param/attr/field that was invalid. */
30
+ field?: string;
31
+ /**
32
+ * The reason code for the invalid usage error, e.g. `bad_ttl`
33
+ * or `invalid_filter`.
34
+ *
35
+ * Could be used to detect specific issues with the request,
36
+ */
37
+ reason?: string;
38
+ /** An optional error that caused the invalid usage error. */
39
+ cause?: unknown;
40
+ });
41
+ }