@vandenberghinc/volt 1.2.6 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/.libris/config.json +82 -0
  2. package/backend/dist/cjs/backend/src/blacklist.d.ts +12 -0
  3. package/backend/dist/cjs/backend/src/blacklist.js +78 -0
  4. package/backend/dist/cjs/backend/src/cli.d.ts +2 -0
  5. package/backend/dist/cjs/backend/src/cli.js +198 -0
  6. package/backend/dist/cjs/backend/src/database/collection.d.ts +1765 -0
  7. package/backend/dist/cjs/backend/src/database/collection.js +3301 -0
  8. package/backend/dist/cjs/backend/src/database/database.d.ts +92 -0
  9. package/backend/dist/cjs/backend/src/database/database.js +170 -0
  10. package/backend/dist/cjs/backend/src/database/document.d.ts +1 -0
  11. package/backend/dist/cjs/backend/src/database/document.js +15 -0
  12. package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
  13. package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
  14. package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
  15. package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
  16. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  17. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
  18. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  19. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
  20. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  21. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
  22. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  23. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
  24. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  25. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
  26. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  27. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
  28. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  29. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
  30. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  31. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
  32. package/backend/dist/cjs/backend/src/database/flatten.d.ts +78 -0
  33. package/backend/dist/cjs/backend/src/database/flatten.js +53 -0
  34. package/backend/dist/cjs/backend/src/database/flatten_test.d.ts +1 -0
  35. package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
  36. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.d.ts +533 -0
  37. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.js +1046 -0
  38. package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +551 -0
  39. package/backend/dist/cjs/backend/src/database/quota/quota.js +1108 -0
  40. package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
  41. package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
  42. package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +412 -0
  43. package/backend/dist/cjs/backend/src/database/quota/safe_int.js +745 -0
  44. package/backend/dist/cjs/backend/src/endpoint.d.ts +346 -0
  45. package/backend/dist/cjs/backend/src/endpoint.js +468 -0
  46. package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
  47. package/backend/dist/cjs/backend/src/errors/index.js +25 -0
  48. package/backend/dist/cjs/backend/src/errors/internal_external.d.ts +52 -0
  49. package/backend/dist/cjs/backend/src/errors/internal_external.js +95 -0
  50. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +41 -0
  51. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.js +47 -0
  52. package/backend/dist/cjs/backend/src/errors/system_error.d.ts +261 -0
  53. package/backend/dist/cjs/backend/src/errors/system_error.js +436 -0
  54. package/backend/dist/cjs/backend/src/events.d.ts +97 -0
  55. package/backend/dist/cjs/backend/src/events.js +15 -0
  56. package/backend/dist/cjs/backend/src/frontend.d.ts +13 -0
  57. package/backend/dist/cjs/backend/src/frontend.js +56 -0
  58. package/backend/dist/cjs/backend/src/image_endpoint.d.ts +44 -0
  59. package/backend/dist/cjs/backend/src/image_endpoint.js +185 -0
  60. package/backend/dist/cjs/backend/src/index.d.ts +23 -0
  61. package/backend/dist/cjs/backend/src/index.js +70 -0
  62. package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
  63. package/backend/dist/cjs/backend/src/logger.js +15 -0
  64. package/backend/dist/cjs/backend/src/meta.d.ts +112 -0
  65. package/backend/dist/cjs/backend/src/meta.js +181 -0
  66. package/backend/dist/cjs/backend/src/payments/paddle.d.ts +329 -0
  67. package/backend/dist/cjs/backend/src/payments/paddle.js +1996 -0
  68. package/backend/dist/cjs/backend/src/payments/stripe/checkout.d.ts +113 -0
  69. package/backend/dist/cjs/backend/src/payments/stripe/checkout.js +295 -0
  70. package/backend/dist/cjs/backend/src/payments/stripe/customers.d.ts +17 -0
  71. package/backend/dist/cjs/backend/src/payments/stripe/customers.js +164 -0
  72. package/backend/dist/cjs/backend/src/payments/stripe/error.d.ts +74 -0
  73. package/backend/dist/cjs/backend/src/payments/stripe/error.js +64 -0
  74. package/backend/dist/cjs/backend/src/payments/stripe/events.d.ts +155 -0
  75. package/backend/dist/cjs/backend/src/payments/stripe/events.js +15 -0
  76. package/backend/dist/cjs/backend/src/payments/stripe/meters.d.ts +105 -0
  77. package/backend/dist/cjs/backend/src/payments/stripe/meters.js +230 -0
  78. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  79. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.js +109 -0
  80. package/backend/dist/cjs/backend/src/payments/stripe/products.d.ts +519 -0
  81. package/backend/dist/cjs/backend/src/payments/stripe/products.js +650 -0
  82. package/backend/dist/cjs/backend/src/payments/stripe/stripe.d.ts +215 -0
  83. package/backend/dist/cjs/backend/src/payments/stripe/stripe.js +468 -0
  84. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  85. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.js +557 -0
  86. package/backend/dist/cjs/backend/src/payments/stripe/utils.d.ts +63 -0
  87. package/backend/dist/cjs/backend/src/payments/stripe/utils.js +118 -0
  88. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.d.ts +105 -0
  89. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.js +627 -0
  90. package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
  91. package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
  92. package/backend/dist/cjs/backend/src/plugins/communication.d.ts +70 -0
  93. package/backend/dist/cjs/backend/src/plugins/communication.js +196 -0
  94. package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +255 -0
  95. package/backend/dist/cjs/backend/src/plugins/mail/mail.js +381 -0
  96. package/backend/dist/cjs/backend/src/plugins/mail/ui.d.ts +297 -0
  97. package/backend/dist/cjs/backend/src/plugins/mail/ui.js +1370 -0
  98. package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
  99. package/backend/dist/cjs/backend/src/plugins/pdf.js +1456 -0
  100. package/backend/dist/cjs/backend/src/plugins/thread_monitor.d.ts +18 -0
  101. package/backend/dist/cjs/backend/src/plugins/thread_monitor.js +116 -0
  102. package/backend/dist/cjs/backend/src/rate_limit.d.ts +148 -0
  103. package/backend/dist/cjs/backend/src/rate_limit.js +543 -0
  104. package/backend/dist/cjs/backend/src/route.d.ts +39 -0
  105. package/backend/dist/cjs/backend/src/route.js +172 -0
  106. package/backend/dist/cjs/backend/src/server.d.ts +502 -0
  107. package/backend/dist/cjs/backend/src/server.js +1710 -0
  108. package/backend/dist/cjs/backend/src/server.old.d.ts +594 -0
  109. package/backend/dist/cjs/backend/src/server.old.js +2058 -0
  110. package/backend/dist/cjs/backend/src/splash_screen.d.ts +93 -0
  111. package/backend/dist/cjs/backend/src/splash_screen.js +119 -0
  112. package/backend/dist/cjs/backend/src/status.d.ts +89 -0
  113. package/backend/dist/cjs/backend/src/status.js +211 -0
  114. package/backend/dist/cjs/backend/src/stream.d.ts +494 -0
  115. package/backend/dist/cjs/backend/src/stream.js +1370 -0
  116. package/backend/dist/cjs/backend/src/users.d.ts +926 -0
  117. package/backend/dist/cjs/backend/src/users.js +2223 -0
  118. package/backend/dist/cjs/backend/src/utils.d.ts +22 -0
  119. package/backend/dist/cjs/backend/src/utils.js +626 -0
  120. package/backend/dist/cjs/backend/src/view.d.ts +115 -0
  121. package/backend/dist/cjs/backend/src/view.js +519 -0
  122. package/backend/dist/cjs/backend/src/vinc.d.ts +6 -0
  123. package/backend/dist/cjs/backend/src/vinc.js +40 -0
  124. package/backend/dist/cjs/backend/src/volt.d.ts +24 -0
  125. package/backend/dist/cjs/backend/src/volt.js +72 -0
  126. package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
  127. package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
  128. package/backend/dist/cjs/package.json +1 -0
  129. package/backend/dist/esm/backend/src/blacklist.d.ts +12 -0
  130. package/backend/dist/esm/backend/src/blacklist.js +52 -0
  131. package/backend/dist/esm/backend/src/cli.d.ts +2 -0
  132. package/backend/dist/esm/backend/src/cli.js +211 -0
  133. package/backend/dist/esm/backend/src/database/collection.d.ts +1765 -0
  134. package/backend/dist/esm/backend/src/database/collection.js +3779 -0
  135. package/backend/dist/esm/backend/src/database/database.d.ts +92 -0
  136. package/backend/dist/esm/backend/src/database/database.js +214 -0
  137. package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
  138. package/backend/dist/esm/backend/src/database/document.js +558 -0
  139. package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
  140. package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
  141. package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
  142. package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
  143. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  144. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
  145. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  146. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
  147. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  148. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
  149. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  150. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
  151. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  152. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
  153. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  154. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
  155. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  156. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
  157. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  158. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +415 -0
  159. package/backend/dist/esm/backend/src/database/flatten.d.ts +78 -0
  160. package/backend/dist/esm/backend/src/database/flatten.js +22 -0
  161. package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
  162. package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
  163. package/backend/dist/esm/backend/src/database/quota/quoata_v2.d.ts +533 -0
  164. package/backend/dist/esm/backend/src/database/quota/quoata_v2.js +1155 -0
  165. package/backend/dist/esm/backend/src/database/quota/quota.d.ts +551 -0
  166. package/backend/dist/esm/backend/src/database/quota/quota.js +1219 -0
  167. package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
  168. package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
  169. package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +412 -0
  170. package/backend/dist/esm/backend/src/database/quota/safe_int.js +810 -0
  171. package/backend/dist/esm/backend/src/endpoint.d.ts +346 -0
  172. package/backend/dist/esm/backend/src/endpoint.js +479 -0
  173. package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
  174. package/backend/dist/esm/backend/src/errors/index.js +7 -0
  175. package/backend/dist/esm/backend/src/errors/internal_external.d.ts +52 -0
  176. package/backend/dist/esm/backend/src/errors/internal_external.js +86 -0
  177. package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +41 -0
  178. package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +33 -0
  179. package/backend/dist/esm/backend/src/errors/system_error.d.ts +261 -0
  180. package/backend/dist/esm/backend/src/errors/system_error.js +444 -0
  181. package/backend/dist/esm/backend/src/events.d.ts +97 -0
  182. package/backend/dist/esm/backend/src/events.js +5 -0
  183. package/backend/dist/esm/backend/src/frontend.d.ts +13 -0
  184. package/backend/dist/esm/backend/src/frontend.js +23 -0
  185. package/backend/dist/esm/backend/src/image_endpoint.d.ts +44 -0
  186. package/backend/dist/esm/backend/src/image_endpoint.js +196 -0
  187. package/backend/dist/esm/backend/src/index.d.ts +23 -0
  188. package/backend/dist/esm/backend/src/index.js +26 -0
  189. package/backend/dist/esm/backend/src/logger.d.ts +5 -0
  190. package/backend/dist/esm/backend/src/logger.js +8 -0
  191. package/backend/dist/esm/backend/src/meta.d.ts +112 -0
  192. package/backend/dist/esm/backend/src/meta.js +152 -0
  193. package/backend/dist/esm/backend/src/payments/paddle.d.ts +329 -0
  194. package/backend/dist/esm/backend/src/payments/paddle.js +2276 -0
  195. package/backend/dist/esm/backend/src/payments/stripe/checkout.d.ts +113 -0
  196. package/backend/dist/esm/backend/src/payments/stripe/checkout.js +356 -0
  197. package/backend/dist/esm/backend/src/payments/stripe/customers.d.ts +17 -0
  198. package/backend/dist/esm/backend/src/payments/stripe/customers.js +193 -0
  199. package/backend/dist/esm/backend/src/payments/stripe/error.d.ts +74 -0
  200. package/backend/dist/esm/backend/src/payments/stripe/error.js +51 -0
  201. package/backend/dist/esm/backend/src/payments/stripe/events.d.ts +155 -0
  202. package/backend/dist/esm/backend/src/payments/stripe/events.js +5 -0
  203. package/backend/dist/esm/backend/src/payments/stripe/meters.d.ts +105 -0
  204. package/backend/dist/esm/backend/src/payments/stripe/meters.js +318 -0
  205. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  206. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.js +135 -0
  207. package/backend/dist/esm/backend/src/payments/stripe/products.d.ts +519 -0
  208. package/backend/dist/esm/backend/src/payments/stripe/products.js +896 -0
  209. package/backend/dist/esm/backend/src/payments/stripe/stripe.d.ts +215 -0
  210. package/backend/dist/esm/backend/src/payments/stripe/stripe.js +464 -0
  211. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  212. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.js +754 -0
  213. package/backend/dist/esm/backend/src/payments/stripe/utils.d.ts +63 -0
  214. package/backend/dist/esm/backend/src/payments/stripe/utils.js +131 -0
  215. package/backend/dist/esm/backend/src/payments/stripe/webhooks.d.ts +105 -0
  216. package/backend/dist/esm/backend/src/payments/stripe/webhooks.js +752 -0
  217. package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
  218. package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
  219. package/backend/dist/esm/backend/src/plugins/communication.d.ts +70 -0
  220. package/backend/dist/esm/backend/src/plugins/communication.js +169 -0
  221. package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +255 -0
  222. package/backend/dist/esm/backend/src/plugins/mail/mail.js +396 -0
  223. package/backend/dist/esm/backend/src/plugins/mail/ui.d.ts +297 -0
  224. package/backend/dist/esm/backend/src/plugins/mail/ui.js +1400 -0
  225. package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
  226. package/backend/dist/esm/backend/src/plugins/pdf.js +1694 -0
  227. package/backend/dist/esm/backend/src/plugins/thread_monitor.d.ts +18 -0
  228. package/backend/dist/esm/backend/src/plugins/thread_monitor.js +120 -0
  229. package/backend/dist/esm/backend/src/rate_limit.d.ts +148 -0
  230. package/backend/dist/esm/backend/src/rate_limit.js +667 -0
  231. package/backend/dist/esm/backend/src/route.d.ts +39 -0
  232. package/backend/dist/esm/backend/src/route.js +222 -0
  233. package/backend/dist/esm/backend/src/server.d.ts +502 -0
  234. package/backend/dist/esm/backend/src/server.js +2031 -0
  235. package/backend/dist/esm/backend/src/server.old.d.ts +594 -0
  236. package/backend/dist/esm/backend/src/server.old.js +2630 -0
  237. package/backend/dist/esm/backend/src/splash_screen.d.ts +93 -0
  238. package/backend/dist/esm/backend/src/splash_screen.js +156 -0
  239. package/backend/dist/esm/backend/src/status.d.ts +89 -0
  240. package/backend/dist/esm/backend/src/status.js +213 -0
  241. package/backend/dist/esm/backend/src/stream.d.ts +494 -0
  242. package/backend/dist/esm/backend/src/stream.js +1611 -0
  243. package/backend/dist/esm/backend/src/users.d.ts +926 -0
  244. package/backend/dist/esm/backend/src/users.js +2423 -0
  245. package/backend/dist/esm/backend/src/utils.d.ts +22 -0
  246. package/backend/dist/esm/backend/src/utils.js +463 -0
  247. package/backend/dist/esm/backend/src/view.d.ts +115 -0
  248. package/backend/dist/esm/backend/src/view.js +584 -0
  249. package/backend/dist/esm/backend/src/vinc.d.ts +6 -0
  250. package/backend/dist/esm/backend/src/vinc.js +6 -0
  251. package/backend/dist/esm/backend/src/volt.d.ts +24 -0
  252. package/backend/dist/esm/backend/src/volt.js +27 -0
  253. package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
  254. package/backend/dist/esm/frontend/src/modules/request.js +117 -0
  255. package/backend/old/file_watcher.ts +359 -0
  256. package/backend/old/request.deprc.js +626 -0
  257. package/backend/old/response.deprc.js +354 -0
  258. package/frontend/dist/backend/src/database/collection.d.ts +1765 -0
  259. package/frontend/dist/backend/src/database/collection.js +3779 -0
  260. package/frontend/dist/backend/src/database/database.d.ts +92 -0
  261. package/frontend/dist/backend/src/database/database.js +214 -0
  262. package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
  263. package/frontend/dist/backend/src/database/filters/filters.js +1 -0
  264. package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
  265. package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
  266. package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  267. package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
  268. package/frontend/dist/backend/src/database/flatten.d.ts +78 -0
  269. package/frontend/dist/backend/src/database/flatten.js +22 -0
  270. package/frontend/dist/backend/src/endpoint.d.ts +346 -0
  271. package/frontend/dist/backend/src/endpoint.js +479 -0
  272. package/frontend/dist/backend/src/errors/index.d.ts +7 -0
  273. package/frontend/dist/backend/src/errors/index.js +7 -0
  274. package/frontend/dist/backend/src/errors/internal_external.d.ts +52 -0
  275. package/frontend/dist/backend/src/errors/internal_external.js +86 -0
  276. package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +41 -0
  277. package/frontend/dist/backend/src/errors/invalid_usage_error.js +33 -0
  278. package/frontend/dist/backend/src/errors/system_error.d.ts +261 -0
  279. package/frontend/dist/backend/src/errors/system_error.js +444 -0
  280. package/frontend/dist/backend/src/events.d.ts +97 -0
  281. package/frontend/dist/backend/src/events.js +5 -0
  282. package/frontend/dist/backend/src/frontend.d.ts +13 -0
  283. package/frontend/dist/backend/src/frontend.js +23 -0
  284. package/frontend/dist/backend/src/image_endpoint.d.ts +44 -0
  285. package/frontend/dist/backend/src/image_endpoint.js +196 -0
  286. package/frontend/dist/backend/src/meta.d.ts +112 -0
  287. package/frontend/dist/backend/src/meta.js +152 -0
  288. package/frontend/dist/backend/src/payments/paddle.d.ts +329 -0
  289. package/frontend/dist/backend/src/payments/paddle.js +2276 -0
  290. package/frontend/dist/backend/src/payments/stripe/checkout.d.ts +113 -0
  291. package/frontend/dist/backend/src/payments/stripe/checkout.js +356 -0
  292. package/frontend/dist/backend/src/payments/stripe/customers.d.ts +17 -0
  293. package/frontend/dist/backend/src/payments/stripe/customers.js +193 -0
  294. package/frontend/dist/backend/src/payments/stripe/error.d.ts +74 -0
  295. package/frontend/dist/backend/src/payments/stripe/error.js +51 -0
  296. package/frontend/dist/backend/src/payments/stripe/events.d.ts +155 -0
  297. package/frontend/dist/backend/src/payments/stripe/events.js +5 -0
  298. package/frontend/dist/backend/src/payments/stripe/meters.d.ts +105 -0
  299. package/frontend/dist/backend/src/payments/stripe/meters.js +318 -0
  300. package/frontend/dist/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  301. package/frontend/dist/backend/src/payments/stripe/payment_methods.js +135 -0
  302. package/frontend/dist/backend/src/payments/stripe/products.d.ts +519 -0
  303. package/frontend/dist/backend/src/payments/stripe/products.js +896 -0
  304. package/frontend/dist/backend/src/payments/stripe/stripe.d.ts +215 -0
  305. package/frontend/dist/backend/src/payments/stripe/stripe.js +464 -0
  306. package/frontend/dist/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  307. package/frontend/dist/backend/src/payments/stripe/subscriptions.js +754 -0
  308. package/frontend/dist/backend/src/payments/stripe/utils.d.ts +63 -0
  309. package/frontend/dist/backend/src/payments/stripe/utils.js +131 -0
  310. package/frontend/dist/backend/src/payments/stripe/webhooks.d.ts +105 -0
  311. package/frontend/dist/backend/src/payments/stripe/webhooks.js +752 -0
  312. package/frontend/dist/backend/src/plugins/mail/mail.d.ts +255 -0
  313. package/frontend/dist/backend/src/plugins/mail/mail.js +396 -0
  314. package/frontend/dist/backend/src/plugins/mail/ui.d.ts +297 -0
  315. package/frontend/dist/backend/src/plugins/mail/ui.js +1400 -0
  316. package/frontend/dist/backend/src/rate_limit.d.ts +148 -0
  317. package/frontend/dist/backend/src/rate_limit.js +667 -0
  318. package/frontend/dist/backend/src/route.d.ts +39 -0
  319. package/frontend/dist/backend/src/route.js +222 -0
  320. package/frontend/dist/backend/src/server.d.ts +502 -0
  321. package/frontend/dist/backend/src/server.js +2031 -0
  322. package/frontend/dist/backend/src/splash_screen.d.ts +93 -0
  323. package/frontend/dist/backend/src/splash_screen.js +156 -0
  324. package/frontend/dist/backend/src/status.d.ts +89 -0
  325. package/frontend/dist/backend/src/status.js +213 -0
  326. package/frontend/dist/backend/src/stream.d.ts +494 -0
  327. package/frontend/dist/backend/src/stream.js +1611 -0
  328. package/frontend/dist/backend/src/users.d.ts +926 -0
  329. package/frontend/dist/backend/src/users.js +2423 -0
  330. package/frontend/dist/backend/src/utils.d.ts +22 -0
  331. package/frontend/dist/backend/src/utils.js +463 -0
  332. package/frontend/dist/backend/src/view.d.ts +115 -0
  333. package/frontend/dist/backend/src/view.js +584 -0
  334. package/frontend/dist/frontend/src/css/adyen.css +92 -0
  335. package/frontend/dist/frontend/src/css/volt.css +75 -0
  336. package/frontend/dist/frontend/src/elements/base.d.ts +3743 -0
  337. package/frontend/dist/frontend/src/elements/base.js +12151 -0
  338. package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
  339. package/frontend/dist/frontend/src/elements/module.js +216 -0
  340. package/frontend/dist/frontend/src/elements/register_element.d.ts +3 -0
  341. package/frontend/dist/frontend/src/elements/register_element.js +22 -0
  342. package/frontend/dist/frontend/src/elements/resize_query_manager.d.ts +0 -0
  343. package/frontend/dist/frontend/src/elements/resize_query_manager.js +150 -0
  344. package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
  345. package/frontend/dist/frontend/src/elements/types.js +5 -0
  346. package/frontend/dist/frontend/src/index.d.ts +21 -0
  347. package/frontend/dist/frontend/src/index.js +29 -0
  348. package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
  349. package/frontend/dist/frontend/src/modules/attachment.js +306 -0
  350. package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
  351. package/frontend/dist/frontend/src/modules/auth.js +80 -0
  352. package/frontend/dist/frontend/src/modules/color.d.ts +160 -0
  353. package/frontend/dist/frontend/src/modules/color.js +316 -0
  354. package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
  355. package/frontend/dist/frontend/src/modules/compression.js +102 -0
  356. package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
  357. package/frontend/dist/frontend/src/modules/cookies.js +143 -0
  358. package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
  359. package/frontend/dist/frontend/src/modules/events.js +79 -0
  360. package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
  361. package/frontend/dist/frontend/src/modules/google.js +52 -0
  362. package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
  363. package/frontend/dist/frontend/src/modules/meta.js +48 -0
  364. package/frontend/dist/frontend/src/modules/paddle.d.ts +1207 -0
  365. package/frontend/dist/frontend/src/modules/paddle.js +2594 -0
  366. package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
  367. package/frontend/dist/frontend/src/modules/request.js +117 -0
  368. package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
  369. package/frontend/dist/frontend/src/modules/settings.js +5 -0
  370. package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
  371. package/frontend/dist/frontend/src/modules/statics.js +43 -0
  372. package/frontend/dist/frontend/src/modules/stripe/cart.d.ts +112 -0
  373. package/frontend/dist/frontend/src/modules/stripe/cart.js +321 -0
  374. package/frontend/dist/frontend/src/modules/stripe/checkout.d.ts +7 -0
  375. package/frontend/dist/frontend/src/modules/stripe/checkout.js +37 -0
  376. package/frontend/dist/frontend/src/modules/stripe/index.m.d.ts +6 -0
  377. package/frontend/dist/frontend/src/modules/stripe/index.m.js +6 -0
  378. package/frontend/dist/frontend/src/modules/stripe/payments.d.ts +58 -0
  379. package/frontend/dist/frontend/src/modules/stripe/payments.js +92 -0
  380. package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
  381. package/frontend/dist/frontend/src/modules/support.js +53 -0
  382. package/frontend/dist/frontend/src/modules/theme.d.ts +133 -0
  383. package/frontend/dist/frontend/src/modules/theme.js +406 -0
  384. package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
  385. package/frontend/dist/frontend/src/modules/themes.js +22 -0
  386. package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
  387. package/frontend/dist/frontend/src/modules/user.js +270 -0
  388. package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
  389. package/frontend/dist/frontend/src/modules/utils.js +569 -0
  390. package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
  391. package/frontend/dist/frontend/src/types/gradient.js +79 -0
  392. package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
  393. package/frontend/dist/frontend/src/ui/border_button.js +228 -0
  394. package/frontend/dist/frontend/src/ui/button.d.ts +241 -0
  395. package/frontend/dist/frontend/src/ui/button.js +682 -0
  396. package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
  397. package/frontend/dist/frontend/src/ui/canvas.js +444 -0
  398. package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
  399. package/frontend/dist/frontend/src/ui/checkbox.js +321 -0
  400. package/frontend/dist/frontend/src/ui/code.d.ts +235 -0
  401. package/frontend/dist/frontend/src/ui/code.js +1007 -0
  402. package/frontend/dist/frontend/src/ui/context_menu.d.ts +36 -0
  403. package/frontend/dist/frontend/src/ui/context_menu.js +205 -0
  404. package/frontend/dist/frontend/src/ui/css.d.ts +16 -0
  405. package/frontend/dist/frontend/src/ui/css.js +48 -0
  406. package/frontend/dist/frontend/src/ui/divider.d.ts +15 -0
  407. package/frontend/dist/frontend/src/ui/divider.js +78 -0
  408. package/frontend/dist/frontend/src/ui/dropdown.d.ts +176 -0
  409. package/frontend/dist/frontend/src/ui/dropdown.js +481 -0
  410. package/frontend/dist/frontend/src/ui/for_each.d.ts +37 -0
  411. package/frontend/dist/frontend/src/ui/for_each.js +92 -0
  412. package/frontend/dist/frontend/src/ui/form.d.ts +34 -0
  413. package/frontend/dist/frontend/src/ui/form.js +233 -0
  414. package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
  415. package/frontend/dist/frontend/src/ui/frame_modes.js +108 -0
  416. package/frontend/dist/frontend/src/ui/google_map.d.ts +24 -0
  417. package/frontend/dist/frontend/src/ui/google_map.js +106 -0
  418. package/frontend/dist/frontend/src/ui/gradient.d.ts +25 -0
  419. package/frontend/dist/frontend/src/ui/gradient.js +131 -0
  420. package/frontend/dist/frontend/src/ui/image.d.ts +111 -0
  421. package/frontend/dist/frontend/src/ui/image.js +576 -0
  422. package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
  423. package/frontend/dist/frontend/src/ui/input.js +1201 -0
  424. package/frontend/dist/frontend/src/ui/link.d.ts +25 -0
  425. package/frontend/dist/frontend/src/ui/link.js +140 -0
  426. package/frontend/dist/frontend/src/ui/list.d.ts +37 -0
  427. package/frontend/dist/frontend/src/ui/list.js +170 -0
  428. package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
  429. package/frontend/dist/frontend/src/ui/loader_button.js +193 -0
  430. package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
  431. package/frontend/dist/frontend/src/ui/loaders.js +157 -0
  432. package/frontend/dist/frontend/src/ui/popup.d.ts +94 -0
  433. package/frontend/dist/frontend/src/ui/popup.js +510 -0
  434. package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
  435. package/frontend/dist/frontend/src/ui/pseudo.js +154 -0
  436. package/frontend/dist/frontend/src/ui/scroller.d.ts +105 -0
  437. package/frontend/dist/frontend/src/ui/scroller.js +1253 -0
  438. package/frontend/dist/frontend/src/ui/slider.d.ts +45 -0
  439. package/frontend/dist/frontend/src/ui/slider.js +217 -0
  440. package/frontend/dist/frontend/src/ui/spacer.d.ts +15 -0
  441. package/frontend/dist/frontend/src/ui/spacer.js +78 -0
  442. package/frontend/dist/frontend/src/ui/span.d.ts +15 -0
  443. package/frontend/dist/frontend/src/ui/span.js +73 -0
  444. package/frontend/dist/frontend/src/ui/stack.d.ts +66 -0
  445. package/frontend/dist/frontend/src/ui/stack.js +335 -0
  446. package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
  447. package/frontend/dist/frontend/src/ui/steps.js +308 -0
  448. package/frontend/dist/frontend/src/ui/style.d.ts +17 -0
  449. package/frontend/dist/frontend/src/ui/style.js +73 -0
  450. package/frontend/dist/frontend/src/ui/switch.d.ts +69 -0
  451. package/frontend/dist/frontend/src/ui/switch.js +357 -0
  452. package/frontend/dist/frontend/src/ui/table.d.ts +100 -0
  453. package/frontend/dist/frontend/src/ui/table.js +405 -0
  454. package/frontend/dist/frontend/src/ui/tabs.d.ts +111 -0
  455. package/frontend/dist/frontend/src/ui/tabs.js +424 -0
  456. package/frontend/dist/frontend/src/ui/text.d.ts +15 -0
  457. package/frontend/dist/frontend/src/ui/text.js +83 -0
  458. package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
  459. package/frontend/dist/frontend/src/ui/title.js +272 -0
  460. package/frontend/dist/frontend/src/ui/ui.d.ts +35 -0
  461. package/frontend/dist/frontend/src/ui/ui.js +38 -0
  462. package/frontend/dist/frontend/src/ui/view.d.ts +15 -0
  463. package/frontend/dist/frontend/src/ui/view.js +88 -0
  464. package/frontend/dist/frontend/src/volt.d.ts +20 -0
  465. package/frontend/dist/frontend/src/volt.js +27 -0
  466. package/frontend/examples/theme/theme.ts +58 -0
  467. package/frontend/tools/bundle_d_ts.js +71 -0
  468. package/frontend/tools/convert_to_jsdoc_input.txt +9452 -0
  469. package/frontend/tools/convert_to_jsdoc_output.txt +7626 -0
  470. package/frontend/tools/convert_to_jsdoc_tmp.js +345 -0
  471. package/frontend/tools/scan_mixed_imports.js +69 -0
  472. package/package.json +1 -5
@@ -0,0 +1,584 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Imports.
7
+ import * as vlib from "@vandenberghinc/vlib";
8
+ import * as vts from "@vandenberghinc/vlib/vts";
9
+ import * as vhighlight from "@vandenberghinc/vhighlight";
10
+ import { Meta } from "./meta.js";
11
+ import { Route } from './route.js';
12
+ import { Frontend } from './frontend.js';
13
+ import * as crypto from "crypto";
14
+ const { debug } = vlib;
15
+ // ---------------------------------------------------------
16
+ // View.
17
+ /**
18
+ * The view class can be used to create HTML pages through JavaScript or TypeScript source code.
19
+ * The view instance or constructor options can be passed to an {@link Endpoint} to serve the view at a specific route.
20
+ *
21
+ * @docs
22
+ * @nav Endpoints
23
+ */
24
+ export class View {
25
+ // Global settings.
26
+ static includes = [];
27
+ static links = [];
28
+ static body_style = null; // css string style.
29
+ static splash_screen = undefined; // SplashScreen object.
30
+ // Private static attributes,
31
+ static _volt_css;
32
+ static _vhighlight_css;
33
+ // Attributes.
34
+ source;
35
+ source_path;
36
+ // callback: Function | null;
37
+ includes;
38
+ links;
39
+ templates;
40
+ meta;
41
+ jquery;
42
+ lang;
43
+ body_style;
44
+ splash_screen;
45
+ tree_shaking;
46
+ mangle;
47
+ _src;
48
+ _embedded_sources;
49
+ min_device_width;
50
+ server;
51
+ endpoint;
52
+ /**
53
+ * The file path of a pre-bundled source, that can be sent from file instead of in-memory data.
54
+ */
55
+ cached_html_path;
56
+ // private html_nonce_split?: string[];
57
+ /**
58
+ * Clone this view, used to create a modified copy of the current view.
59
+ * @note
60
+ * The following attributes are not deep copied, but just referenced:
61
+ * - `params`
62
+ * @param override Override specific endpoint options, note that this will be shallow merged.
63
+ *
64
+ * @docs
65
+ */
66
+ clone(override) {
67
+ return new View({
68
+ ...vlib.Object.deep_copy({
69
+ source: this.source,
70
+ // callback: this.callback,
71
+ includes: this.includes,
72
+ links: this.links,
73
+ templates: this.templates,
74
+ jquery: this.jquery,
75
+ lang: this.lang,
76
+ body_style: this.body_style,
77
+ tree_shaking: this.tree_shaking,
78
+ mangle: this.mangle,
79
+ min_device_width: this.min_device_width,
80
+ _src: this._src,
81
+ }),
82
+ meta: this.meta.copy(),
83
+ splash_screen: this.splash_screen?.clone(),
84
+ ...override,
85
+ });
86
+ }
87
+ /**
88
+ * Options for constructing a {@link View} instance.
89
+ * @docs
90
+ */
91
+ constructor({ source,
92
+ // callback = null,
93
+ includes = [], links = [], templates = {}, meta = new Meta(), jquery = false, lang = "en", body_style = null, splash_screen = undefined, tree_shaking = false, mangle = false, min_device_width = 600, _src, }) {
94
+ // Arguments.
95
+ this.source = source;
96
+ // this.callback = callback;
97
+ this.includes = [...View.includes, ...includes];
98
+ this.links = [...View.links, ...links];
99
+ this.templates = templates;
100
+ this.meta = meta;
101
+ this.jquery = jquery;
102
+ this.lang = lang;
103
+ this.body_style = body_style ?? View.body_style;
104
+ this.splash_screen = splash_screen ?? View.splash_screen;
105
+ this.tree_shaking = tree_shaking;
106
+ this.mangle = mangle;
107
+ this.min_device_width = min_device_width;
108
+ // System arguments.
109
+ this._src = _src;
110
+ this._embedded_sources = [];
111
+ // Clean source, required to match against endpoint's.
112
+ this.source_path = new vlib.Path(this.source);
113
+ if (!this.source_path.exists()) {
114
+ throw new Error(`Defined source path "${this.source}" does not exist.`);
115
+ }
116
+ this.source_path = this.source_path.abs();
117
+ this.source = this.source_path.str();
118
+ // Is js/ts bundle view.
119
+ if (!/\.(jsx?|tsx?)$/.test(this.source_path.extension())) {
120
+ throw new Error(`Invalid view source extension "${this.source_path.extension()}", only ".js", ".ts", ".jsx" and ".tsx" are supported.`);
121
+ }
122
+ // Drop duplicate includes.
123
+ this.includes = vlib.Array.drop_duplicates(this.includes);
124
+ }
125
+ // Initialize.
126
+ initialize(server, endpoint) {
127
+ if (server === undefined) {
128
+ throw Error("Invalid usage, define parameter \"server\".");
129
+ }
130
+ if (endpoint === undefined) {
131
+ throw Error("Invalid usage, define parameter \"endpoint\".");
132
+ }
133
+ this.server = server;
134
+ this.endpoint = endpoint;
135
+ }
136
+ /**
137
+ * Production initialization.
138
+ * This will bundle the source code and prepare the view for production use.
139
+ * Instead of bundling on demand in the request which is used for development mode.
140
+ */
141
+ async production_initialize() {
142
+ await this._create_html_file();
143
+ }
144
+ /** Create an error HTML file when errors are encountered during the bundle process. */
145
+ async _build_bundle_err_html() {
146
+ // Dont show in production.
147
+ if (this.server?.production) {
148
+ throw new Error("Encountered an error while bundling in production.");
149
+ }
150
+ // A nonce identifier.
151
+ const nonce_identifier = "{{__VOLT_NONCE__}}";
152
+ // Inspect bundle.
153
+ const bundle = await vts.inspect_bundle({
154
+ include: this.source_path ? [this.source_path?.str()] : [],
155
+ output: vlib.Path.tmp().join(`${this.endpoint?.route.method}_${this.source_path.str().replace(/\//g, "_")}.js`), // esbuild requires an output path to resolve .css and .ttf files etc which can be imported by libraries (such as monaco-editor).
156
+ minify: false, //this._server.production,
157
+ platform: "browser",
158
+ format: "esm",
159
+ // format: "iife", // can causes issues with node_modules imports.
160
+ target: "es2022",
161
+ tree_shaking: true,
162
+ });
163
+ // Log to server
164
+ this.server?.log.error(this.endpoint?.route?.id, `: Encountered an error while bundling "${this.source}".\n${bundle.debug({ limit: 25 })}`);
165
+ // HTML escape function
166
+ const escape_html = (str) => vlib.Color.to_html(str
167
+ .replace(/&/g, '&')
168
+ .replace(/</g, '&lt;')
169
+ .replace(/>/g, '&gt;')
170
+ .replace(/"/g, '&quot;')
171
+ .replace(/'/g, '&#39;'));
172
+ // Build html.
173
+ let html;
174
+ if (this.server?.production) {
175
+ html = `
176
+ <!DOCTYPE html>
177
+ <html lang='${this.lang}'>
178
+ <head>
179
+ <meta charset="UTF-8">
180
+ <meta name="viewport" content="width=device-width, initial-scale=1">
181
+ <title>Bundling Error</title>
182
+ <style nonce="${nonce_identifier}">
183
+ body {
184
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; padding: 2rem; background: #f5f5f5;
185
+ }
186
+ h1 {
187
+ color: #d32f2f; margin-top: 0;
188
+ }
189
+ #error-container {
190
+ max-width: 800px; margin: 0 auto; background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);
191
+ }
192
+ </style>
193
+ </head>
194
+ <body>
195
+ <div id="error-container">
196
+ <h1>Bundling Error</h1>
197
+ <p>An error occurred while processing your request. Please contact support if this issue persists.</p>
198
+ </div>
199
+ </body>
200
+ </html>
201
+ `.dedent(false);
202
+ }
203
+ else {
204
+ // Development mode - show full debug info
205
+ const formatted_import_chains = bundle.format_import_chains();
206
+ const formatted_errors = bundle.format_errors();
207
+ html = `
208
+ <!DOCTYPE html>
209
+ <html lang='${this.lang}'>
210
+ <head>
211
+ <meta charset="UTF-8">
212
+ <meta name="viewport" content="width=device-width, initial-scale=1">
213
+ <title>Bundling Error - ${escape_html(this.source || 'Unknown')}</title>
214
+ <style nonce="${nonce_identifier}">
215
+ body {
216
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
217
+ margin: 0;
218
+ padding: 1rem;
219
+ background: #1e1e1e;
220
+ color: #d4d4d4;
221
+ }
222
+ .container {
223
+ max-width: 1200px;
224
+ margin: 0 auto;
225
+ }
226
+ h1 {
227
+ color: #FFFFFF;
228
+ font-size: 1.5rem;
229
+ margin-bottom: 0.5rem;
230
+ }
231
+ .source {
232
+ color: #C0C0C0;
233
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
234
+ font-size: 0.875rem;
235
+ margin-bottom: 1rem;
236
+ }
237
+ pre {
238
+ background: #2d2d2d;
239
+ border: 1px solid #3e3e3e;
240
+ border-radius: 4px;
241
+ padding: 1rem;
242
+ overflow-x: auto;
243
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
244
+ font-size: 0.875rem;
245
+ line-height: 1.5;
246
+ margin: 20px 0px 0px 0px;
247
+ }
248
+ .error-count {
249
+ background: #f44336;
250
+ color: white;
251
+ padding: 0.25rem 0.5rem;
252
+ border-radius: 4px;
253
+ font-size: 0.875rem;
254
+ display: inline-block;
255
+ margin-bottom: 1rem;
256
+ }
257
+ </style>
258
+ </head>
259
+ <body>
260
+ <div class="container">
261
+ <h1>Bundle Error</h1>
262
+ <div class="source">Source: ${escape_html(this.source || 'Unknown')}</div>
263
+ <div class="error-count">${bundle.errors.length} error${bundle.errors.length === 1 ? '' : 's'}</div>
264
+ <pre>${escape_html(bundle.debug({ limit: -1 }))}</pre>
265
+ <!--<h2>Metafile</h2>
266
+ <pre>${escape_html(bundle.metafile ?? "No metafile detected.")}</pre>
267
+ <h2>Input files</h2>
268
+ <pre>${escape_html(bundle.inputs.length ? bundle.inputs.join("\n") : "No input files detected.")}</pre>
269
+ <h2>Import Chains</h2>
270
+ <pre>${escape_html(formatted_import_chains.length
271
+ ? formatted_import_chains.join("\n")
272
+ : "No import chains detected.")}</pre>
273
+ <h2>Encountered Errors</h2>
274
+ <pre>${escape_html(formatted_errors.length ? formatted_errors.join("\n") : "No errors detected.")}</pre>
275
+ -->
276
+ </div>
277
+ </body>
278
+ </html>
279
+ `.dedent(false);
280
+ }
281
+ // this.html_nonce_split = html.split(nonce_identifier);
282
+ return html;
283
+ }
284
+ // Build html.
285
+ async _build_html() {
286
+ // A nonce identifier.
287
+ const nonce_identifier = "{{__VOLT_NONCE__}}";
288
+ // Server & endpoint.
289
+ if (this.server == null || this.endpoint == null) {
290
+ throw Error("View has not been initialized with \"View._initialize()\" yet.");
291
+ }
292
+ // Bundle.
293
+ if (debug.on(3))
294
+ debug(this.endpoint?.route?.id, `: Bundling entry path "${this.source_path?.str()}".`);
295
+ const bundle = await vts.bundle({
296
+ include: this.source_path ? [this.source_path?.str()] : [],
297
+ output: `/tmp/${this.endpoint.route.method}_${this.source_path.str().replace(/\//g, "_")}.js`, // esbuild requires an output path to resolve .css and .ttf files etc which can be imported by libraries (such as monaco-editor).
298
+ minify: false, //this._server.production,
299
+ platform: "browser",
300
+ format: "esm",
301
+ // format: "iife", // can causes issues with node_modules imports.
302
+ target: "es2022",
303
+ // sourcemap: this.server.production ? false : "inline",
304
+ extract_inputs: true, // since bundle.inputs is used by server.js.
305
+ tree_shaking: true,
306
+ });
307
+ // Set options based on inputs.
308
+ const add_payments_module = bundle.inputs.find((path) => path.endsWith("/modules/paddle.js"));
309
+ // Bundle js files automatically.
310
+ if (bundle.errors.length > 0) {
311
+ return this._build_bundle_err_html();
312
+ }
313
+ // Vars.
314
+ const line_break = this.server.production ? "\n" : "\n";
315
+ // Initialize html.
316
+ let html = "";
317
+ // Doctype.
318
+ html += `<!DOCTYPE html><html lang='${this.lang}'>${line_break}`;
319
+ // Headers.
320
+ html += `<head>${line_break}`;
321
+ // Meta.
322
+ if (this.meta) {
323
+ html += this.meta.build_html(this.server.full_domain) + line_break;
324
+ }
325
+ // this.html = "Hello World!";
326
+ // return;
327
+ // ------------------------------------------------------------------------------------------
328
+ // Stylesheets & links.
329
+ // Default stylesheet to avoid inline `style=""`.
330
+ html += `<style nonce="${nonce_identifier}">` +
331
+ `html { min-width:100%;min-height:100%; }` +
332
+ `body { width:100vw;height:100vh;margin:0;padding:0;${this.body_style ?? ""} }` +
333
+ `</style>${line_break}`;
334
+ // Embed stylesheet.
335
+ const embed_stylesheet = (url, embed) => {
336
+ if (embed == null &&
337
+ url != null &&
338
+ url.charAt(0) === "/") {
339
+ for (const endpoint of this.server.endpoints.values()) {
340
+ if (url === endpoint.route.endpoint_str) {
341
+ if (typeof endpoint.raw_data === "string") {
342
+ embed = endpoint.raw_data;
343
+ }
344
+ else if (typeof endpoint.data === "string") {
345
+ embed = endpoint.data;
346
+ }
347
+ break;
348
+ }
349
+ }
350
+ }
351
+ if (embed) {
352
+ html += `<style nonce="${nonce_identifier}">${line_break}${embed}${line_break}</style>${line_break}`;
353
+ if (url) {
354
+ this._embedded_sources.push(url);
355
+ }
356
+ return true;
357
+ }
358
+ return false;
359
+ };
360
+ // Include a link async.
361
+ let include_links_script = null;
362
+ const include_link_async = (link) => {
363
+ if (include_links_script == null) {
364
+ include_links_script = "async function __incl_lnk(args){var link = document.createElement('link');for (let key in args) {if (args.hasOwnProperty(key)){link.setAttribute(key,args[key])}}document.head.appendChild(link)}" + line_break;
365
+ }
366
+ if (link.rel == null) {
367
+ link.rel = "stylesheet";
368
+ }
369
+ include_links_script += `__incl_lnk(${JSON.stringify(link)});${line_break}`;
370
+ };
371
+ // Stylesheets.
372
+ if (!View._volt_css) {
373
+ View._volt_css = await new vlib.Path(Frontend.css.volt).load();
374
+ }
375
+ if (!View._vhighlight_css) {
376
+ View._vhighlight_css = await new vlib.Path(vhighlight.web_exports.css).load();
377
+ }
378
+ embed_stylesheet(undefined, View._volt_css);
379
+ embed_stylesheet(undefined, View._vhighlight_css);
380
+ // Add custom stylesheet for minimum device width on smaller screens.
381
+ if (this.min_device_width != null) {
382
+ html += `
383
+ <script nonce="${nonce_identifier}">
384
+ let has_min_width = false;
385
+ const viewport = document.querySelector('meta[name="viewport"]');
386
+ function set_min_width() {
387
+ const device_width = window.innerWidth;
388
+ // console.log("Device width [" + device_width + "] below min_device_width [${this.min_device_width} =", (device_width <= ${this.min_device_width}).toString() + "]");
389
+ if (device_width <= ${this.min_device_width}) {
390
+ const content = 'width=${this.min_device_width}, initial-scale=' + (device_width / ${this.min_device_width});
391
+ // console.log("Below ${this.min_device_width}", {content, width: device_width, has_min_width, viewport: viewport.getAttribute('content')});
392
+ if (viewport.getAttribute('content') !== content) {
393
+ // console.log('set min width viewport', device_width, device_width / ${this.min_device_width})
394
+ viewport.setAttribute('content', content);
395
+ has_min_width = true;
396
+ }
397
+ } else if (has_min_width) {
398
+ // console.log('disable min width viewport', device_width)
399
+ viewport.setAttribute('content', 'width=device-width, initial-scale=1');
400
+ has_min_width = false;
401
+ }
402
+ }
403
+ let timeout_load; window.addEventListener('load', () => {clearTimeout(timeout_load); timeout_load = setTimeout(set_min_width, 25); } );
404
+ let timeout_resize; window.addEventListener('resize', () => {clearTimeout(timeout_resize); timeout_resize = setTimeout(set_min_width, 25); } );
405
+ set_min_width();
406
+ </script>
407
+ `.dedent();
408
+ }
409
+ // Custom links.
410
+ this.links.forEach((url) => {
411
+ if (typeof url === "string") {
412
+ html += `<link rel="stylesheet" href="${url}">`;
413
+ }
414
+ else if (typeof url === "object") {
415
+ // Embed content.
416
+ if ((typeof url === "object" && url.rel === "stylesheet" && url.embed !== true && typeof url.href === "string") &&
417
+ embed_stylesheet(Route.clean_endpoint(url.href))) { /* skip */ }
418
+ // Create link.
419
+ else {
420
+ if (url.async) {
421
+ include_link_async(url);
422
+ }
423
+ else {
424
+ html += "<link";
425
+ Object.keys(url).forEach((key) => {
426
+ if (key !== "embed") {
427
+ html += ` ${key}="${url[key]}"`;
428
+ }
429
+ });
430
+ html += ">" + line_break;
431
+ }
432
+ }
433
+ }
434
+ else {
435
+ throw Error("Invalid type for a css include, the valid value types are \"string\" and \"object\".");
436
+ }
437
+ });
438
+ // Add include links script.
439
+ if (include_links_script) {
440
+ html += `<script nonce="${nonce_identifier}">${line_break}${include_links_script}${line_break}</script>${line_break}`;
441
+ }
442
+ // End headers.
443
+ html += "</head>" + line_break;
444
+ // ------------------------------------------------------------------------------------------
445
+ // Body.
446
+ // Body.
447
+ html += "<body id='body'>";
448
+ // Create splash screen.
449
+ if (this.splash_screen != null) {
450
+ html += this.splash_screen.html + line_break;
451
+ }
452
+ // ------------------------------------------------------------------------------------------
453
+ // Include scripts.
454
+ // Embed the data of an endpoint.
455
+ // Returns `false` when the endpoint is not found.
456
+ const embed_script = (url) => {
457
+ let embed;
458
+ for (const endpoint of this.server.endpoints.values()) {
459
+ if (url === endpoint.route.endpoint_str &&
460
+ (endpoint.raw_data != null || endpoint.data != null)) {
461
+ embed = endpoint;
462
+ }
463
+ }
464
+ // Check if the endpoint has data or raw data to embed.
465
+ if (embed && (embed.raw_data || embed.data)) {
466
+ // Dont embed code.
467
+ if (embed.content_type === "application/javascript") {
468
+ html += `<script nonce="${nonce_identifier}">${line_break}${embed.raw_data || embed.data}${line_break}</script>${line_break}`;
469
+ }
470
+ else {
471
+ html += `<script nonce="${nonce_identifier}" type='${embed.content_type}'>${line_break}${embed.raw_data || embed.data}${line_break}</script>${line_break}`;
472
+ }
473
+ this._embedded_sources.push(url);
474
+ return true;
475
+ }
476
+ return false;
477
+ };
478
+ // Include js.
479
+ let include_js_script = `async function __volt_incl_js(url, async = true) {var script=document.createElement('script');if(async){script.async = true;}script.src=url;document.head.appendChild(script);};${line_break}`;
480
+ // 3rd party js includes.
481
+ if (this.jquery) {
482
+ // Keep first since it needs to be included before volt.
483
+ html += `<script nonce="${nonce_identifier}" src='https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js'></script>${line_break}`;
484
+ }
485
+ if (this.server.google_tag !== undefined) {
486
+ include_js_script += `__volt_incl_js("https://www.googletagmanager.com/gtag/js?id=${this.server.google_tag}");${line_break}`;
487
+ }
488
+ // Add volt static aspect ratios.
489
+ // @todo volt.static
490
+ html += `<script nonce="${nonce_identifier}">${line_break}window.volt_statics_aspect_ratios = ${JSON.stringify(Object.fromEntries(this.server.statics_aspect_ratios))}${line_break}</script>${line_break}`;
491
+ // Embed other scripts.
492
+ if (this.server.payments) {
493
+ // if (this.server.payments.type === "paddle") {
494
+ // // embed_script("/volt/api/v1/payments/paddle.js", false); // no longer required due to auto imports.
495
+ // if (add_payments_module) {
496
+ // include_js_script += `__volt_incl_js("https://cdn.paddle.com/paddle/v2/paddle.js");${line_break}`;
497
+ // }
498
+ // }
499
+ }
500
+ // Add the include js script.
501
+ html += `<script nonce="${nonce_identifier}">${line_break}${include_js_script.trimEnd()}${line_break}</script>${line_break}`;
502
+ // Additional js includes.
503
+ this.includes.forEach((url) => {
504
+ // Embed content.
505
+ if (typeof url === "string" && embed_script(url)) { /* skip. */ }
506
+ // Include.
507
+ else {
508
+ if (typeof url === "string") {
509
+ html += `<script nonce="${nonce_identifier}" src='${url}'></script>${line_break}`;
510
+ }
511
+ else if (typeof url === "object") {
512
+ html += `<script nonce="${nonce_identifier}"`;
513
+ Object.keys(url).forEach((key) => {
514
+ if (key !== "embed") {
515
+ html += ` ${key}="${url[key]}"`;
516
+ }
517
+ });
518
+ html += "></script>" + line_break;
519
+ }
520
+ else {
521
+ throw Error("Invalid type for a js include, the valid value types are \"string\" and \"object\".");
522
+ }
523
+ }
524
+ });
525
+ // Add direct source code.
526
+ if (typeof bundle.code === "string") {
527
+ html += `<script nonce="${nonce_identifier}" type='module'>${line_break}${bundle.code}${line_break}</script>${line_break}`;
528
+ }
529
+ // Include the source.
530
+ else if (typeof this.source === "string") {
531
+ html += `<script nonce="${nonce_identifier}">${line_break}${await new vlib.Path(this.source).load()}${line_break}</script>${line_break}`;
532
+ }
533
+ // JS code.
534
+ // else if (this.callback != null) {
535
+ // let code = this.callback.toString();
536
+ // // Add.
537
+ // html += `<script nonce="${nonce_identifier}">${line_break}(${code})()${line_break}</script>${line_break}`
538
+ // // cached_code += `;(${code})();`;
539
+ // }
540
+ // Close body.
541
+ html += "</body>" + line_break;
542
+ // End.
543
+ html += "</html>" + line_break;
544
+ // console.log("Built HTML for endpoint", this.endpoint?.route?.endpoint_str + "\n" +this.html.slice(0, 25_000) + (this.html.length > 25_000 ? "..." : ""));
545
+ return html;
546
+ }
547
+ /** Create the cached HTML file if it doesn't exist. */
548
+ async _create_html_file() {
549
+ // Check cache.
550
+ const cache_id = `${this.endpoint?.route.method}_${this.source_path?.str()}.html`.replaceAll("/", "_");
551
+ if (!this.cached_html_path) {
552
+ // Use a cached path for slight performance increase when used with stream.send()
553
+ this.cached_html_path = this.server.endpoint_cache_dir.join(cache_id);
554
+ }
555
+ if (!this.cached_html_path.exists()) {
556
+ // Create html.
557
+ const html = await this._build_html();
558
+ // Save html to a local file path.
559
+ await this.cached_html_path.save(html);
560
+ }
561
+ return this.cached_html_path;
562
+ }
563
+ // Serve a client.
564
+ async _serve(stream, status_code = 200, opts) {
565
+ // Check cache.
566
+ const html_file = await this._create_html_file();
567
+ // Create nonce.
568
+ const nonce = crypto.randomBytes(16).toString("base64");
569
+ // Set nonce.
570
+ const csp = stream.get_header("Content-Security-Policy");
571
+ if (typeof csp === "string") {
572
+ const new_csp = csp.replace(/(script-src|style-src)([^;]*)/g, (_, g1, g2) => `${g1}${g2} 'nonce-${nonce}'`);
573
+ stream.set_header("Content-Security-Policy", new_csp);
574
+ }
575
+ // Generate a nonce here and use it both in the CSP header and the inline script.
576
+ stream.send({
577
+ status: status_code,
578
+ headers: { "Content-Type": "text/html" },
579
+ from_file: html_file,
580
+ templates: { ...this.templates, ...(opts?.templates ?? {}), "__VOLT_NONCE__": nonce },
581
+ compress: opts?.compress,
582
+ });
583
+ }
584
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @opyright © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ export * as vlib from "@vandenberghinc/vlib";
6
+ export * as vts from "@vandenberghinc/vlib/vts";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @opyright © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ export * as vlib from "@vandenberghinc/vlib";
6
+ export * as vts from "@vandenberghinc/vlib/vts";
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
5
+ export * from "./errors/index.js";
6
+ export * from "./status.js";
7
+ export * from "./meta.js";
8
+ export * from "./splash_screen.js";
9
+ export * from "./view.js";
10
+ export * from "./stream.js";
11
+ export * from "./endpoint.js";
12
+ export * from "./server.js";
13
+ export * from "./database/database.js";
14
+ export * from "./database/document.js";
15
+ export * from "./database/collection.js";
16
+ export * from "./database/quota/quota.js";
17
+ export * from "./database/quota/safe_int.js";
18
+ export * from "./rate_limit.js";
19
+ export * from "./logger.js";
20
+ export * from "./events.js";
21
+ export { User } from "./users.js";
22
+ export * as Mail from "./plugins/mail/ui.js";
23
+ export * from "./frontend.js";
24
+ export type { Request } from "../../frontend/src/modules/request.js";
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Exports.
7
+ // Create volt lib.
8
+ export * from "./errors/index.js";
9
+ export * from "./status.js";
10
+ export * from "./meta.js";
11
+ export * from "./splash_screen.js";
12
+ export * from "./view.js";
13
+ export * from "./stream.js";
14
+ export * from "./endpoint.js";
15
+ export * from "./server.js";
16
+ export * from "./database/database.js";
17
+ export * from "./database/document.js";
18
+ export * from "./database/collection.js";
19
+ export * from "./database/quota/quota.js";
20
+ export * from "./database/quota/safe_int.js";
21
+ export * from "./rate_limit.js";
22
+ export * from "./logger.js";
23
+ export * from "./events.js";
24
+ // export * from "./file_watcher.js"
25
+ export * as Mail from "./plugins/mail/ui.js";
26
+ // export * as PDF from "./plugins/pdf.js"
27
+ export * from "./frontend.js";