@vandenberghinc/volt 1.1.26 → 1.1.28

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 (502) hide show
  1. package/backend/dist/cjs/{blacklist.d.ts → backend/src/blacklist.d.ts} +5 -3
  2. package/backend/dist/cjs/{blacklist.js → backend/src/blacklist.js} +8 -5
  3. package/backend/dist/cjs/{cli.js → backend/src/cli.js} +29 -47
  4. package/backend/dist/cjs/backend/src/database/collection.d.ts +1543 -0
  5. package/backend/dist/cjs/backend/src/database/collection.js +3042 -0
  6. package/backend/dist/cjs/backend/src/database/database.d.ts +66 -0
  7. package/backend/dist/cjs/{database → backend/src/database}/database.js +48 -43
  8. package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
  9. package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
  10. package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
  11. package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
  12. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
  13. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
  14. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  15. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
  16. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  17. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
  18. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  19. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
  20. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  21. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
  22. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  23. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
  24. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  25. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
  26. package/backend/dist/cjs/backend/src/database/flatten.d.ts +75 -0
  27. package/backend/dist/cjs/{logger.js → backend/src/database/flatten.js} +18 -7
  28. package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
  29. package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +461 -0
  30. package/backend/dist/cjs/backend/src/database/quota/quota.js +1014 -0
  31. package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
  32. package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
  33. package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +293 -0
  34. package/backend/dist/cjs/backend/src/database/quota/safe_int.js +573 -0
  35. package/backend/dist/{esm → cjs/backend/src}/endpoint.d.ts +69 -46
  36. package/backend/dist/cjs/{endpoint.js → backend/src/endpoint.js} +87 -101
  37. package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
  38. package/backend/dist/cjs/backend/src/errors/index.js +25 -0
  39. package/backend/dist/{esm/utils.d.ts → cjs/backend/src/errors/internal_external.d.ts} +14 -22
  40. package/backend/dist/cjs/backend/src/errors/internal_external.js +85 -0
  41. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +38 -0
  42. package/backend/dist/cjs/{mutex.js → backend/src/errors/invalid_usage_error.js} +20 -37
  43. package/backend/dist/cjs/backend/src/errors/system_error.d.ts +230 -0
  44. package/backend/dist/cjs/backend/src/errors/system_error.js +393 -0
  45. package/backend/dist/cjs/backend/src/events.d.ts +54 -0
  46. package/backend/dist/cjs/backend/src/events.js +15 -0
  47. package/backend/dist/cjs/{frontend.js → backend/src/frontend.js} +1 -1
  48. package/backend/dist/cjs/{image_endpoint.d.ts → backend/src/image_endpoint.d.ts} +16 -1
  49. package/backend/dist/cjs/{image_endpoint.js → backend/src/image_endpoint.js} +3 -5
  50. package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
  51. package/backend/dist/cjs/backend/src/logger.js +15 -0
  52. package/backend/dist/cjs/backend/src/meta.d.ts +64 -0
  53. package/backend/dist/cjs/{meta.js → backend/src/meta.js} +9 -12
  54. package/backend/dist/cjs/backend/src/payments/paddle.d.ts +326 -0
  55. package/backend/dist/cjs/{payments → backend/src/payments}/paddle.js +377 -327
  56. package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
  57. package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
  58. package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +248 -0
  59. package/backend/dist/cjs/backend/src/plugins/mail/mail.js +379 -0
  60. package/backend/dist/{esm → cjs/backend/src}/plugins/mail/ui.d.ts +23 -0
  61. package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
  62. package/backend/dist/cjs/backend/src/rate_limit.d.ts +145 -0
  63. package/backend/dist/cjs/backend/src/rate_limit.js +549 -0
  64. package/backend/dist/cjs/{route.d.ts → backend/src/route.d.ts} +3 -10
  65. package/backend/dist/cjs/{route.js → backend/src/route.js} +23 -21
  66. package/backend/dist/cjs/backend/src/server.d.ts +485 -0
  67. package/backend/dist/cjs/{server.js → backend/src/server.js} +688 -873
  68. package/backend/dist/cjs/backend/src/splash_screen.d.ts +80 -0
  69. package/backend/dist/cjs/{splash_screen.js → backend/src/splash_screen.js} +24 -3
  70. package/backend/dist/cjs/backend/src/status.d.ts +74 -0
  71. package/backend/dist/cjs/{status.js → backend/src/status.js} +64 -64
  72. package/backend/dist/cjs/backend/src/stream.d.ts +376 -0
  73. package/backend/dist/cjs/{stream.js → backend/src/stream.js} +299 -276
  74. package/backend/dist/cjs/backend/src/users.d.ts +807 -0
  75. package/backend/dist/cjs/backend/src/users.js +1971 -0
  76. package/backend/dist/cjs/backend/src/utils.d.ts +16 -0
  77. package/backend/dist/cjs/{utils.js → backend/src/utils.js} +14 -77
  78. package/backend/dist/{esm → cjs/backend/src}/view.d.ts +33 -11
  79. package/backend/dist/cjs/backend/src/view.js +508 -0
  80. package/backend/dist/{esm → cjs/backend/src}/volt.d.ts +10 -1
  81. package/backend/dist/cjs/{volt.js → backend/src/volt.js} +8 -5
  82. package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
  83. package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
  84. package/backend/dist/esm/{blacklist.d.ts → backend/src/blacklist.d.ts} +5 -3
  85. package/backend/dist/esm/{blacklist.js → backend/src/blacklist.js} +9 -6
  86. package/backend/dist/esm/{cli.js → backend/src/cli.js} +43 -60
  87. package/backend/dist/esm/backend/src/database/collection.d.ts +1543 -0
  88. package/backend/dist/esm/backend/src/database/collection.js +3510 -0
  89. package/backend/dist/esm/backend/src/database/database.d.ts +66 -0
  90. package/backend/dist/esm/{database → backend/src/database}/database.js +62 -103
  91. package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
  92. package/backend/dist/esm/backend/src/database/document.js +558 -0
  93. package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
  94. package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
  95. package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
  96. package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
  97. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  98. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
  99. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  100. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
  101. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  102. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
  103. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  104. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
  105. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  106. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
  107. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  108. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
  109. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  110. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
  111. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  112. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +405 -0
  113. package/backend/dist/esm/backend/src/database/flatten.d.ts +75 -0
  114. package/backend/dist/esm/backend/src/database/flatten.js +22 -0
  115. package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
  116. package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
  117. package/backend/dist/esm/backend/src/database/quota/quota.d.ts +461 -0
  118. package/backend/dist/esm/backend/src/database/quota/quota.js +1118 -0
  119. package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
  120. package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
  121. package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +293 -0
  122. package/backend/dist/esm/backend/src/database/quota/safe_int.js +602 -0
  123. package/backend/dist/{cjs → esm/backend/src}/endpoint.d.ts +69 -46
  124. package/backend/dist/esm/{endpoint.js → backend/src/endpoint.js} +136 -127
  125. package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
  126. package/backend/dist/esm/backend/src/errors/index.js +7 -0
  127. package/backend/dist/{cjs/utils.d.ts → esm/backend/src/errors/internal_external.d.ts} +14 -22
  128. package/backend/dist/esm/backend/src/errors/internal_external.js +70 -0
  129. package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +38 -0
  130. package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +30 -0
  131. package/backend/dist/esm/backend/src/errors/system_error.d.ts +230 -0
  132. package/backend/dist/esm/backend/src/errors/system_error.js +402 -0
  133. package/backend/dist/esm/backend/src/events.d.ts +54 -0
  134. package/backend/dist/esm/backend/src/events.js +5 -0
  135. package/backend/dist/esm/{frontend.js → backend/src/frontend.js} +1 -1
  136. package/backend/dist/esm/{image_endpoint.d.ts → backend/src/image_endpoint.d.ts} +16 -1
  137. package/backend/dist/esm/{image_endpoint.js → backend/src/image_endpoint.js} +16 -20
  138. package/backend/dist/esm/backend/src/logger.d.ts +5 -0
  139. package/backend/dist/esm/backend/src/logger.js +8 -0
  140. package/backend/dist/esm/backend/src/meta.d.ts +64 -0
  141. package/backend/dist/esm/{meta.js → backend/src/meta.js} +15 -54
  142. package/backend/dist/esm/backend/src/payments/paddle.d.ts +326 -0
  143. package/backend/dist/esm/{payments → backend/src/payments}/paddle.js +417 -452
  144. package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
  145. package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
  146. package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +248 -0
  147. package/backend/dist/esm/backend/src/plugins/mail/mail.js +389 -0
  148. package/backend/dist/{cjs → esm/backend/src}/plugins/mail/ui.d.ts +23 -0
  149. package/backend/dist/esm/{plugins → backend/src/plugins}/mail/ui.js +3 -6
  150. package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
  151. package/backend/dist/esm/{plugins → backend/src/plugins}/pdf.js +3 -3
  152. package/backend/dist/esm/backend/src/rate_limit.d.ts +145 -0
  153. package/backend/dist/esm/backend/src/rate_limit.js +667 -0
  154. package/backend/dist/esm/{route.d.ts → backend/src/route.d.ts} +3 -10
  155. package/backend/dist/esm/{route.js → backend/src/route.js} +26 -21
  156. package/backend/dist/esm/backend/src/server.d.ts +485 -0
  157. package/backend/dist/esm/{server.js → backend/src/server.js} +891 -1441
  158. package/backend/dist/esm/backend/src/splash_screen.d.ts +80 -0
  159. package/backend/dist/esm/{splash_screen.js → backend/src/splash_screen.js} +42 -55
  160. package/backend/dist/esm/backend/src/status.d.ts +74 -0
  161. package/backend/dist/esm/backend/src/status.js +199 -0
  162. package/backend/dist/esm/backend/src/stream.d.ts +376 -0
  163. package/backend/dist/esm/{stream.js → backend/src/stream.js} +327 -292
  164. package/backend/dist/esm/backend/src/users.d.ts +809 -0
  165. package/backend/dist/esm/backend/src/users.js +2140 -0
  166. package/backend/dist/esm/backend/src/utils.d.ts +16 -0
  167. package/backend/dist/esm/{utils.js → backend/src/utils.js} +20 -81
  168. package/backend/dist/{cjs → esm/backend/src}/view.d.ts +33 -11
  169. package/backend/dist/esm/{view.js → backend/src/view.js} +266 -86
  170. package/backend/dist/{cjs → esm/backend/src}/volt.d.ts +10 -1
  171. package/backend/dist/esm/{volt.js → backend/src/volt.js} +7 -4
  172. package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
  173. package/backend/dist/esm/frontend/src/modules/request.js +117 -0
  174. package/frontend/dist/backend/src/database/collection.d.ts +1543 -0
  175. package/frontend/dist/backend/src/database/collection.js +3510 -0
  176. package/frontend/dist/backend/src/database/database.d.ts +66 -0
  177. package/frontend/dist/backend/src/database/database.js +196 -0
  178. package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
  179. package/frontend/dist/backend/src/database/filters/filters.js +1 -0
  180. package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
  181. package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
  182. package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  183. package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
  184. package/frontend/dist/backend/src/database/flatten.d.ts +75 -0
  185. package/frontend/dist/backend/src/database/flatten.js +22 -0
  186. package/frontend/dist/backend/src/endpoint.d.ts +204 -0
  187. package/frontend/dist/backend/src/endpoint.js +570 -0
  188. package/frontend/dist/backend/src/errors/index.d.ts +7 -0
  189. package/frontend/dist/backend/src/errors/index.js +7 -0
  190. package/frontend/dist/backend/src/errors/internal_external.d.ts +38 -0
  191. package/frontend/dist/backend/src/errors/internal_external.js +70 -0
  192. package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +38 -0
  193. package/frontend/dist/backend/src/errors/invalid_usage_error.js +30 -0
  194. package/frontend/dist/backend/src/errors/system_error.d.ts +230 -0
  195. package/frontend/dist/backend/src/errors/system_error.js +402 -0
  196. package/frontend/dist/backend/src/events.d.ts +54 -0
  197. package/frontend/dist/backend/src/events.js +5 -0
  198. package/frontend/dist/backend/src/frontend.d.ts +11 -0
  199. package/frontend/dist/backend/src/frontend.js +12 -0
  200. package/frontend/dist/backend/src/image_endpoint.d.ts +39 -0
  201. package/frontend/dist/backend/src/image_endpoint.js +202 -0
  202. package/frontend/dist/backend/src/meta.d.ts +64 -0
  203. package/frontend/dist/backend/src/meta.js +110 -0
  204. package/frontend/dist/backend/src/payments/paddle.d.ts +326 -0
  205. package/frontend/dist/backend/src/payments/paddle.js +2256 -0
  206. package/frontend/dist/backend/src/plugins/mail/mail.d.ts +248 -0
  207. package/frontend/dist/backend/src/plugins/mail/mail.js +389 -0
  208. package/{backend/dist/esm/plugins/mail.d.ts → frontend/dist/backend/src/plugins/mail/ui.d.ts} +23 -0
  209. package/{backend/dist/esm/plugins/mail.js → frontend/dist/backend/src/plugins/mail/ui.js} +3 -6
  210. package/frontend/dist/backend/src/rate_limit.d.ts +145 -0
  211. package/frontend/dist/backend/src/rate_limit.js +673 -0
  212. package/frontend/dist/backend/src/route.d.ts +35 -0
  213. package/frontend/dist/backend/src/route.js +212 -0
  214. package/frontend/dist/backend/src/server.d.ts +485 -0
  215. package/frontend/dist/backend/src/server.js +2670 -0
  216. package/frontend/dist/backend/src/splash_screen.d.ts +80 -0
  217. package/frontend/dist/backend/src/splash_screen.js +135 -0
  218. package/frontend/dist/backend/src/status.d.ts +74 -0
  219. package/frontend/dist/backend/src/status.js +199 -0
  220. package/frontend/dist/backend/src/stream.d.ts +376 -0
  221. package/frontend/dist/backend/src/stream.js +1007 -0
  222. package/frontend/dist/backend/src/users.d.ts +807 -0
  223. package/frontend/dist/backend/src/users.js +2118 -0
  224. package/frontend/dist/backend/src/utils.d.ts +16 -0
  225. package/frontend/dist/backend/src/utils.js +241 -0
  226. package/frontend/dist/backend/src/view.d.ts +162 -0
  227. package/frontend/dist/backend/src/view.js +720 -0
  228. package/frontend/dist/frontend/src/elements/base.d.ts +4414 -0
  229. package/frontend/dist/{elements → frontend/src/elements}/base.js +3624 -260
  230. package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
  231. package/frontend/dist/{elements → frontend/src/elements}/module.js +53 -52
  232. package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
  233. package/frontend/dist/frontend/src/elements/types.js +5 -0
  234. package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
  235. package/frontend/dist/frontend/src/modules/attachment.js +306 -0
  236. package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
  237. package/frontend/dist/frontend/src/modules/auth.js +80 -0
  238. package/frontend/dist/{modules → frontend/src/modules}/color.js +2 -2
  239. package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
  240. package/frontend/dist/frontend/src/modules/compression.js +102 -0
  241. package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
  242. package/frontend/dist/frontend/src/modules/cookies.js +143 -0
  243. package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
  244. package/frontend/dist/frontend/src/modules/events.js +74 -0
  245. package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
  246. package/frontend/dist/frontend/src/modules/google.js +52 -0
  247. package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
  248. package/frontend/dist/{modules → frontend/src/modules}/meta.js +9 -7
  249. package/frontend/dist/{modules → frontend/src/modules}/paddle.d.ts +37 -134
  250. package/frontend/dist/{modules → frontend/src/modules}/paddle.js +620 -568
  251. package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
  252. package/frontend/dist/frontend/src/modules/request.js +117 -0
  253. package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
  254. package/frontend/dist/frontend/src/modules/settings.js +5 -0
  255. package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
  256. package/frontend/dist/{modules → frontend/src/modules}/statics.js +15 -18
  257. package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
  258. package/frontend/dist/frontend/src/modules/support.js +53 -0
  259. package/frontend/dist/{modules → frontend/src/modules}/theme.d.ts +67 -0
  260. package/frontend/dist/{modules → frontend/src/modules}/theme.js +68 -38
  261. package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
  262. package/frontend/dist/frontend/src/modules/themes.js +22 -0
  263. package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
  264. package/frontend/dist/frontend/src/modules/user.js +268 -0
  265. package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
  266. package/frontend/dist/frontend/src/modules/utils.js +569 -0
  267. package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
  268. package/frontend/dist/{types → frontend/src/types}/gradient.js +14 -18
  269. package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
  270. package/frontend/dist/{ui → frontend/src/ui}/border_button.js +7 -13
  271. package/frontend/dist/frontend/src/ui/button.d.ts +28 -0
  272. package/frontend/dist/{ui → frontend/src/ui}/button.js +21 -12
  273. package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
  274. package/frontend/dist/{ui → frontend/src/ui}/canvas.js +88 -55
  275. package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
  276. package/frontend/dist/{ui → frontend/src/ui}/checkbox.js +80 -41
  277. package/frontend/dist/{ui → frontend/src/ui}/code.d.ts +73 -6
  278. package/frontend/dist/{ui → frontend/src/ui}/code.js +55 -52
  279. package/frontend/dist/{ui → frontend/src/ui}/context_menu.d.ts +4 -0
  280. package/frontend/dist/{ui → frontend/src/ui}/context_menu.js +12 -17
  281. package/frontend/dist/{ui → frontend/src/ui}/css.d.ts +4 -0
  282. package/frontend/dist/{ui → frontend/src/ui}/css.js +3 -3
  283. package/frontend/dist/{ui → frontend/src/ui}/divider.d.ts +4 -0
  284. package/frontend/dist/{ui → frontend/src/ui}/divider.js +3 -3
  285. package/frontend/dist/{ui → frontend/src/ui}/dropdown.d.ts +57 -2
  286. package/frontend/dist/{ui → frontend/src/ui}/dropdown.js +87 -94
  287. package/frontend/dist/{ui → frontend/src/ui}/for_each.d.ts +4 -0
  288. package/frontend/dist/{ui → frontend/src/ui}/for_each.js +3 -3
  289. package/frontend/dist/{ui → frontend/src/ui}/form.d.ts +6 -2
  290. package/frontend/dist/{ui → frontend/src/ui}/form.js +10 -7
  291. package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
  292. package/frontend/dist/{ui → frontend/src/ui}/frame_modes.js +16 -22
  293. package/frontend/dist/{ui → frontend/src/ui}/google_map.d.ts +4 -0
  294. package/frontend/dist/{ui → frontend/src/ui}/google_map.js +4 -4
  295. package/frontend/dist/{ui → frontend/src/ui}/gradient.d.ts +4 -0
  296. package/frontend/dist/{ui → frontend/src/ui}/gradient.js +3 -3
  297. package/frontend/dist/{ui → frontend/src/ui}/image.d.ts +4 -0
  298. package/frontend/dist/{ui → frontend/src/ui}/image.js +5 -5
  299. package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
  300. package/frontend/dist/{ui → frontend/src/ui}/input.js +346 -360
  301. package/frontend/dist/{ui → frontend/src/ui}/link.d.ts +4 -0
  302. package/frontend/dist/{ui → frontend/src/ui}/link.js +3 -3
  303. package/frontend/dist/{ui → frontend/src/ui}/list.d.ts +4 -0
  304. package/frontend/dist/{ui → frontend/src/ui}/list.js +12 -6
  305. package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
  306. package/frontend/dist/{ui → frontend/src/ui}/loader_button.js +35 -47
  307. package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
  308. package/frontend/dist/{ui → frontend/src/ui}/loaders.js +11 -11
  309. package/frontend/dist/{ui → frontend/src/ui}/popup.d.ts +11 -6
  310. package/frontend/dist/{ui → frontend/src/ui}/popup.js +32 -18
  311. package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
  312. package/frontend/dist/{ui → frontend/src/ui}/pseudo.js +84 -8
  313. package/frontend/dist/{ui → frontend/src/ui}/scroller.d.ts +14 -2
  314. package/frontend/dist/{ui → frontend/src/ui}/scroller.js +37 -43
  315. package/frontend/dist/{ui → frontend/src/ui}/slider.d.ts +5 -1
  316. package/frontend/dist/{ui → frontend/src/ui}/slider.js +4 -4
  317. package/frontend/dist/{ui → frontend/src/ui}/spacer.d.ts +4 -0
  318. package/frontend/dist/{ui → frontend/src/ui}/spacer.js +3 -3
  319. package/frontend/dist/{ui → frontend/src/ui}/span.d.ts +4 -0
  320. package/frontend/dist/{ui → frontend/src/ui}/span.js +3 -3
  321. package/frontend/dist/{ui → frontend/src/ui}/stack.d.ts +4 -0
  322. package/frontend/dist/{ui → frontend/src/ui}/stack.js +3 -9
  323. package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
  324. package/frontend/dist/{ui → frontend/src/ui}/steps.js +30 -45
  325. package/frontend/dist/{ui → frontend/src/ui}/style.d.ts +4 -0
  326. package/frontend/dist/{ui → frontend/src/ui}/style.js +3 -3
  327. package/frontend/dist/{ui → frontend/src/ui}/switch.d.ts +5 -1
  328. package/frontend/dist/{ui → frontend/src/ui}/switch.js +4 -4
  329. package/frontend/dist/{ui → frontend/src/ui}/table.d.ts +4 -0
  330. package/frontend/dist/{ui → frontend/src/ui}/table.js +6 -6
  331. package/frontend/dist/{ui → frontend/src/ui}/tabs.d.ts +45 -3
  332. package/frontend/dist/{ui → frontend/src/ui}/tabs.js +65 -40
  333. package/frontend/dist/{ui → frontend/src/ui}/text.d.ts +4 -0
  334. package/frontend/dist/{ui → frontend/src/ui}/text.js +3 -3
  335. package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
  336. package/frontend/dist/frontend/src/ui/title.js +272 -0
  337. package/frontend/dist/{ui → frontend/src/ui}/view.d.ts +4 -0
  338. package/frontend/dist/{ui → frontend/src/ui}/view.js +3 -3
  339. package/frontend/dist/{volt.d.ts → frontend/src/volt.d.ts} +3 -0
  340. package/frontend/dist/{volt.js → frontend/src/volt.js} +4 -0
  341. package/frontend/tools/bundle_d_ts.js +71 -0
  342. package/frontend/tools/convert_to_jsdoc_input.txt +9452 -0
  343. package/frontend/tools/convert_to_jsdoc_output.txt +7626 -0
  344. package/frontend/tools/convert_to_jsdoc_tmp.js +345 -0
  345. package/package.json +11 -12
  346. package/backend/dist/cjs/database/collection.d.ts +0 -160
  347. package/backend/dist/cjs/database/collection.js +0 -842
  348. package/backend/dist/cjs/database/database.d.ts +0 -121
  349. package/backend/dist/cjs/database/document.d.ts +0 -131
  350. package/backend/dist/cjs/database/document.js +0 -224
  351. package/backend/dist/cjs/database.d.ts +0 -502
  352. package/backend/dist/cjs/database.js +0 -2248
  353. package/backend/dist/cjs/logger.d.ts +0 -3
  354. package/backend/dist/cjs/meta.d.ts +0 -50
  355. package/backend/dist/cjs/mutex.d.ts +0 -24
  356. package/backend/dist/cjs/payments/paddle.d.ts +0 -160
  357. package/backend/dist/cjs/plugins/browser.d.ts +0 -36
  358. package/backend/dist/cjs/plugins/browser.js +0 -198
  359. package/backend/dist/cjs/plugins/css.d.ts +0 -11
  360. package/backend/dist/cjs/plugins/css.js +0 -80
  361. package/backend/dist/cjs/plugins/mail.d.ts +0 -277
  362. package/backend/dist/cjs/plugins/mail.js +0 -1370
  363. package/backend/dist/cjs/plugins/ts/compiler.d.ts +0 -139
  364. package/backend/dist/cjs/plugins/ts/compiler.js +0 -750
  365. package/backend/dist/cjs/plugins/ts/preprocessing.d.ts +0 -14
  366. package/backend/dist/cjs/plugins/ts/preprocessing.js +0 -440
  367. package/backend/dist/cjs/rate_limit.d.ts +0 -63
  368. package/backend/dist/cjs/rate_limit.js +0 -348
  369. package/backend/dist/cjs/request.deprc.d.ts +0 -48
  370. package/backend/dist/cjs/request.deprc.js +0 -572
  371. package/backend/dist/cjs/response.deprc.d.ts +0 -55
  372. package/backend/dist/cjs/response.deprc.js +0 -275
  373. package/backend/dist/cjs/server.d.ts +0 -342
  374. package/backend/dist/cjs/splash_screen.d.ts +0 -35
  375. package/backend/dist/cjs/status.d.ts +0 -61
  376. package/backend/dist/cjs/stream.d.ts +0 -79
  377. package/backend/dist/cjs/users.d.ts +0 -111
  378. package/backend/dist/cjs/users.js +0 -1817
  379. package/backend/dist/cjs/view.js +0 -352
  380. package/backend/dist/cjs/vinc.dev.d.ts +0 -3
  381. package/backend/dist/cjs/vinc.dev.js +0 -7
  382. package/backend/dist/css/adyen.css +0 -92
  383. package/backend/dist/css/volt.css +0 -70
  384. package/backend/dist/esm/database/collection.d.ts +0 -160
  385. package/backend/dist/esm/database/collection.js +0 -1328
  386. package/backend/dist/esm/database/database.d.ts +0 -121
  387. package/backend/dist/esm/database/document.d.ts +0 -131
  388. package/backend/dist/esm/database/document.js +0 -247
  389. package/backend/dist/esm/database.d.ts +0 -502
  390. package/backend/dist/esm/database.js +0 -2423
  391. package/backend/dist/esm/file_watcher.js +0 -329
  392. package/backend/dist/esm/logger.d.ts +0 -3
  393. package/backend/dist/esm/logger.js +0 -11
  394. package/backend/dist/esm/meta.d.ts +0 -50
  395. package/backend/dist/esm/mutex.d.ts +0 -24
  396. package/backend/dist/esm/mutex.js +0 -48
  397. package/backend/dist/esm/payments/paddle.d.ts +0 -160
  398. package/backend/dist/esm/plugins/browser.d.ts +0 -36
  399. package/backend/dist/esm/plugins/browser.js +0 -176
  400. package/backend/dist/esm/plugins/css.d.ts +0 -11
  401. package/backend/dist/esm/plugins/css.js +0 -90
  402. package/backend/dist/esm/plugins/ts/compiler.d.ts +0 -139
  403. package/backend/dist/esm/plugins/ts/compiler.js +0 -1194
  404. package/backend/dist/esm/plugins/ts/preprocessing.d.ts +0 -14
  405. package/backend/dist/esm/plugins/ts/preprocessing.js +0 -726
  406. package/backend/dist/esm/rate_limit.d.ts +0 -63
  407. package/backend/dist/esm/rate_limit.js +0 -417
  408. package/backend/dist/esm/request.deprc.d.ts +0 -48
  409. package/backend/dist/esm/request.deprc.js +0 -572
  410. package/backend/dist/esm/response.deprc.d.ts +0 -55
  411. package/backend/dist/esm/response.deprc.js +0 -275
  412. package/backend/dist/esm/server.d.ts +0 -342
  413. package/backend/dist/esm/splash_screen.d.ts +0 -35
  414. package/backend/dist/esm/status.d.ts +0 -61
  415. package/backend/dist/esm/status.js +0 -197
  416. package/backend/dist/esm/stream.d.ts +0 -79
  417. package/backend/dist/esm/users.d.ts +0 -111
  418. package/backend/dist/esm/users.js +0 -1935
  419. package/backend/dist/esm/vinc.dev.d.ts +0 -3
  420. package/backend/dist/esm/vinc.dev.js +0 -7
  421. package/frontend/dist/elements/base.d.ts +0 -9889
  422. package/frontend/dist/elements/module.d.ts +0 -30
  423. package/frontend/dist/modules/array.d.ts +0 -94
  424. package/frontend/dist/modules/array.js +0 -634
  425. package/frontend/dist/modules/auth.d.ts +0 -46
  426. package/frontend/dist/modules/auth.js +0 -139
  427. package/frontend/dist/modules/colors.d.ts +0 -1
  428. package/frontend/dist/modules/colors.js +0 -417
  429. package/frontend/dist/modules/compression.d.ts +0 -6
  430. package/frontend/dist/modules/compression.js +0 -999
  431. package/frontend/dist/modules/cookies.d.ts +0 -18
  432. package/frontend/dist/modules/cookies.js +0 -167
  433. package/frontend/dist/modules/date.d.ts +0 -142
  434. package/frontend/dist/modules/date.js +0 -493
  435. package/frontend/dist/modules/events.d.ts +0 -8
  436. package/frontend/dist/modules/events.js +0 -91
  437. package/frontend/dist/modules/google.d.ts +0 -11
  438. package/frontend/dist/modules/google.js +0 -54
  439. package/frontend/dist/modules/meta.d.ts +0 -10
  440. package/frontend/dist/modules/mutex.d.ts +0 -7
  441. package/frontend/dist/modules/mutex.js +0 -51
  442. package/frontend/dist/modules/number.d.ts +0 -16
  443. package/frontend/dist/modules/number.js +0 -23
  444. package/frontend/dist/modules/object.d.ts +0 -52
  445. package/frontend/dist/modules/object.js +0 -383
  446. package/frontend/dist/modules/scheme.d.ts +0 -227
  447. package/frontend/dist/modules/scheme.js +0 -531
  448. package/frontend/dist/modules/settings.d.ts +0 -3
  449. package/frontend/dist/modules/settings.js +0 -4
  450. package/frontend/dist/modules/statics.d.ts +0 -5
  451. package/frontend/dist/modules/string.d.ts +0 -124
  452. package/frontend/dist/modules/string.js +0 -745
  453. package/frontend/dist/modules/support.d.ts +0 -19
  454. package/frontend/dist/modules/support.js +0 -103
  455. package/frontend/dist/modules/themes.d.ts +0 -8
  456. package/frontend/dist/modules/themes.js +0 -18
  457. package/frontend/dist/modules/user.d.ts +0 -59
  458. package/frontend/dist/modules/user.js +0 -280
  459. package/frontend/dist/modules/utils.d.ts +0 -87
  460. package/frontend/dist/modules/utils.js +0 -923
  461. package/frontend/dist/types/gradient.d.ts +0 -12
  462. package/frontend/dist/ui/border_button.d.ts +0 -152
  463. package/frontend/dist/ui/button.d.ts +0 -21
  464. package/frontend/dist/ui/canvas.d.ts +0 -56
  465. package/frontend/dist/ui/checkbox.d.ts +0 -52
  466. package/frontend/dist/ui/frame_modes.d.ts +0 -25
  467. package/frontend/dist/ui/input.d.ts +0 -241
  468. package/frontend/dist/ui/loader_button.d.ts +0 -93
  469. package/frontend/dist/ui/loaders.d.ts +0 -57
  470. package/frontend/dist/ui/pseudo.d.ts +0 -16
  471. package/frontend/dist/ui/steps.d.ts +0 -59
  472. package/frontend/dist/ui/title.d.ts +0 -21
  473. package/frontend/dist/ui/title.js +0 -121
  474. package/frontend/examples/dashboard/dashboard.ts +0 -776
  475. /package/backend/dist/cjs/{cli.d.ts → backend/src/cli.d.ts} +0 -0
  476. /package/backend/dist/cjs/{file_watcher.d.ts → backend/src/database/document.d.ts} +0 -0
  477. /package/backend/dist/cjs/{file_watcher.js → backend/src/database/document.js} +0 -0
  478. /package/backend/dist/cjs/{plugins/pdf.d.ts → backend/src/database/filters/strict_filter_test.d.ts} +0 -0
  479. /package/backend/dist/{esm/file_watcher.d.ts → cjs/backend/src/database/filters/strict_filter_test_v0.d.ts} +0 -0
  480. /package/backend/dist/{esm/plugins/pdf.d.ts → cjs/backend/src/database/flatten_test.d.ts} +0 -0
  481. /package/backend/dist/cjs/{frontend.d.ts → backend/src/frontend.d.ts} +0 -0
  482. /package/backend/dist/cjs/{plugins → backend/src/plugins}/communication.d.ts +0 -0
  483. /package/backend/dist/cjs/{plugins → backend/src/plugins}/communication.js +0 -0
  484. /package/backend/dist/cjs/{plugins → backend/src/plugins}/mail/ui.js +0 -0
  485. /package/backend/dist/cjs/{plugins → backend/src/plugins}/pdf.js +0 -0
  486. /package/backend/dist/cjs/{plugins → backend/src/plugins}/thread_monitor.d.ts +0 -0
  487. /package/backend/dist/cjs/{plugins → backend/src/plugins}/thread_monitor.js +0 -0
  488. /package/backend/dist/cjs/{vinc.d.ts → backend/src/vinc.d.ts} +0 -0
  489. /package/backend/dist/cjs/{vinc.js → backend/src/vinc.js} +0 -0
  490. /package/backend/dist/esm/{cli.d.ts → backend/src/cli.d.ts} +0 -0
  491. /package/backend/dist/esm/{frontend.d.ts → backend/src/frontend.d.ts} +0 -0
  492. /package/backend/dist/esm/{plugins → backend/src/plugins}/communication.d.ts +0 -0
  493. /package/backend/dist/esm/{plugins → backend/src/plugins}/communication.js +0 -0
  494. /package/backend/dist/esm/{plugins → backend/src/plugins}/thread_monitor.d.ts +0 -0
  495. /package/backend/dist/esm/{plugins → backend/src/plugins}/thread_monitor.js +0 -0
  496. /package/backend/dist/esm/{vinc.d.ts → backend/src/vinc.d.ts} +0 -0
  497. /package/backend/dist/esm/{vinc.js → backend/src/vinc.js} +0 -0
  498. /package/frontend/dist/{elements → frontend/src/elements}/register_element.d.ts +0 -0
  499. /package/frontend/dist/{elements → frontend/src/elements}/register_element.js +0 -0
  500. /package/frontend/dist/{modules → frontend/src/modules}/color.d.ts +0 -0
  501. /package/frontend/dist/{ui → frontend/src/ui}/ui.d.ts +0 -0
  502. /package/frontend/dist/{ui → frontend/src/ui}/ui.js +0 -0
@@ -1,6 +1,10 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
1
5
  import { View } from './view.js';
2
6
  import * as vlib from "@vandenberghinc/vlib";
3
- import { RateLimits, RateLimitGroup } from "./rate_limit.js";
7
+ import { RateLimitGroup, RateLimitData } from "./rate_limit.js";
4
8
  import { Stream, AuthStream } from "./stream.js";
5
9
  import type { Server } from "./server.js";
6
10
  import { Route } from './route.js';
@@ -93,8 +97,7 @@ import { Route } from './route.js';
93
97
  * and only have to be assigned once. The assigned attributes will be overridden when
94
98
  * these attributes are reassigned for the same group.
95
99
  */
96
- export declare class Endpoint<const S extends vlib.scheme.Infer.Scheme.S = {}> {
97
- static rate_limits: Map<string, any>;
100
+ export declare class Endpoint<const M extends Endpoint.Method = "GET", const E extends string | RegExp = string, const S extends vlib.Schema.Entries.Opts = {}> {
98
101
  static compressed_content_types: string[];
99
102
  /** Route attributes */
100
103
  id: string;
@@ -102,17 +105,19 @@ export declare class Endpoint<const S extends vlib.scheme.Infer.Scheme.S = {}> {
102
105
  /** Requires authentication */
103
106
  authenticated: boolean;
104
107
  /** Parameter scheme validator */
105
- params_val?: vlib.scheme.Validator<object, object, "object">;
108
+ params_schema?: vlib.Schema.Validator<object>;
106
109
  /** The default response headers */
107
110
  headers: [string, string][];
108
111
  /** Option 1) User callback - defined as method so a derived endpoint can do that as well. */
109
- callback?(stream: Stream, params: vlib.scheme.Infer.Scheme<S>): any;
110
- callback?(stream: AuthStream, params: vlib.scheme.Infer.Scheme<S>): any;
112
+ callback?(stream: Stream, params: vlib.Schema.Entries.Infer<S>): any;
113
+ callback?(stream: AuthStream, params: vlib.Schema.Entries.Infer<S>): any;
111
114
  /** Option 2) View based endpoint */
112
115
  view?: View;
113
116
  /** Option 3) Data endpoint, raw */
114
- data: Buffer | string | any[] | Record<any, any>;
117
+ data?: Buffer | string | any[] | Record<any, any>;
115
118
  raw_data?: Buffer | string | any[] | Record<any, any>;
119
+ /** Option 4 Data endpoint by file path. */
120
+ file_path?: vlib.Path;
116
121
  /** Content length & type */
117
122
  content_length?: number;
118
123
  content_type?: string;
@@ -122,60 +127,78 @@ export declare class Endpoint<const S extends vlib.scheme.Infer.Scheme.S = {}> {
122
127
  allow_sitemap: boolean;
123
128
  allow_robots: boolean;
124
129
  /** Rate limit groups for internal use. */
125
- rate_limit_groups: ReturnType<typeof RateLimits.add>[];
130
+ rate_limit_groups: RateLimitData[];
126
131
  /** Private attributes */
127
132
  private _compress;
128
133
  private _cache;
129
- _static_path?: string;
130
- private _templates;
131
134
  private ip_whitelist?;
132
135
  private _is_compressed?;
133
136
  private _initialized;
134
- private _server?;
135
- constructor({ method, endpoint, authenticated, rate_limit, params, callback, view, data, content_type, // = "text/plain",
136
- compress, cache, ip_whitelist, sitemap, robots, allow_unknown_params, _templates, // only used in loading static files.
137
- _static_path, _is_static, }: {
138
- method?: string;
139
- endpoint: string | RegExp;
140
- authenticated?: boolean;
141
- rate_limit?: string | RateLimitGroup | RateLimitGroup[];
137
+ /** A reference to the server. */
138
+ server?: Server;
139
+ constructor({ method, endpoint, authenticated, rate_limit, params, compress, cache, ip_whitelist, sitemap, robots, allow_unknown_params, _is_static, callback, view, data, file_path, content_type, }: Endpoint.Opts<M, E, S>);
140
+ /** Initialize with server. */
141
+ _initialize(server: Server): this;
142
+ _dynamic_initialize(): Promise<void>;
143
+ _set_headers(stream: Stream): void;
144
+ _serve_options(stream: Stream): Promise<void>;
145
+ _serve(stream: Stream, status_code?: number): Promise<void>;
146
+ private _load_data_by_path;
147
+ }
148
+ export declare namespace Endpoint {
149
+ /** The endpoint method. */
150
+ type Method = "GET" | "POST" | "DELETE" | "PUT" | "PATCH" | "OPTIONS";
151
+ /** Options for constructing an endpoint. */
152
+ type Opts<M extends Method = Method, E extends string | RegExp = string, S extends vlib.Schema.Entries.Opts = {}> = {
153
+ /**
154
+ * The endpoint method.
155
+ * @default "GET"
156
+ */
157
+ method?: M extends undefined ? "GET" : M;
158
+ endpoint: E;
159
+ rate_limit?: string | RateLimitGroup | (string | RateLimitGroup)[];
142
160
  params?: S;
143
- callback?: ((stream: Stream, params: vlib.scheme.Infer.Scheme<S>) => any) | ((stream: AuthStream, params: vlib.scheme.Infer.Scheme<S>) => any);
144
- data?: any;
145
161
  compress?: "auto" | boolean;
146
162
  cache?: boolean | number;
147
163
  ip_whitelist?: string[];
148
164
  sitemap?: boolean;
149
165
  robots?: boolean;
150
- _templates?: Record<string, any>;
151
- _static_path?: string;
152
166
  _is_static?: boolean;
153
167
  allow_unknown_params?: boolean;
154
168
  } & ({
155
- view: View | View.Opts;
156
- content_type?: string;
169
+ data?: Buffer | string | any[] | Record<any, any>;
170
+ file_path?: never;
171
+ view?: never;
172
+ authenticated?: boolean;
173
+ callback?: never;
174
+ content_type: string;
175
+ } | {
176
+ data?: never;
177
+ file_path: string | vlib.Path;
178
+ authenticated?: boolean;
179
+ callback?: never;
180
+ view?: never;
181
+ content_type: string;
157
182
  } | {
158
- view?: null | undefined;
183
+ data?: never;
184
+ file_path?: never;
185
+ authenticated?: false;
186
+ callback: ((stream: Stream, params: vlib.Schema.Entries.Infer<S>) => any);
187
+ view?: never;
159
188
  content_type: string;
160
- }));
161
- /** Initialize with server. */
162
- _initialize(server: Server): this;
163
- /**
164
- * Convert a RegExp into a readable path:
165
- * - strips ^…$ anchors
166
- * - unescapes `\/` → `/`
167
- * - `(?<name>…)` → `:name`
168
- * - anonymous captures `(…)` → `:param1`, `:param2`, …
169
- */
170
- _stringify_endpoint_regex(re: RegExp): string;
171
- _load_data_by_path(server: any): this;
172
- _set_headers(stream: any): void;
173
- _refresh(server: any): Promise<void>;
174
- _dynamic_initialize(): Promise<void>;
175
- _serve_options(stream: Stream): Promise<void>;
176
- _serve(stream: Stream, status_code?: number): Promise<void>;
177
- }
178
- export declare namespace Endpoint {
179
- /** Constructor options without the `_server` attribute. */
180
- type Opts<S extends vlib.scheme.Infer.Scheme.S = {}> = ConstructorParameters<typeof Endpoint<S>>[0];
189
+ } | {
190
+ data?: never;
191
+ file_path?: never;
192
+ authenticated: true;
193
+ callback: ((stream: AuthStream, params: vlib.Schema.Entries.Infer<S>) => any);
194
+ view?: never;
195
+ content_type: string;
196
+ } | {
197
+ data?: never;
198
+ file_path?: never;
199
+ authenticated?: boolean;
200
+ callback?: never;
201
+ view: View | View.Opts;
202
+ content_type?: string;
203
+ });
181
204
  }
@@ -1,6 +1,6 @@
1
- /*
2
- * Author: Daan van den Bergh
3
- * Copyright: © 2022 - 2024 Daan van den Bergh.
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
4
  */
5
5
  // ---------------------------------------------------------
6
6
  // Imports.
@@ -8,13 +8,11 @@ import CleanCSS from 'clean-css';
8
8
  import zlib from 'zlib';
9
9
  import { View } from './view.js';
10
10
  import * as vlib from "@vandenberghinc/vlib";
11
- import { Utils, ExternalError, InternalError } from "./utils.js";
11
+ import { ExternalError, InternalError } from "./errors/internal_external.js";
12
12
  import { Status } from "./status.js";
13
- import { logger } from "./logger.js";
14
13
  import { RateLimits } from "./rate_limit.js";
15
14
  import { Route } from './route.js';
16
15
  import Meta from './meta.js';
17
- const { log, error, warn } = logger;
18
16
  const { debug } = vlib;
19
17
  // ---------------------------------------------------------
20
18
  // Endpoint
@@ -109,7 +107,6 @@ const { debug } = vlib;
109
107
  */
110
108
  export class Endpoint {
111
109
  // Static attributes.
112
- static rate_limits = new Map();
113
110
  static compressed_content_types = [
114
111
  // Image formats (often already compressed)
115
112
  "image/jpeg",
@@ -167,7 +164,7 @@ export class Endpoint {
167
164
  /** Requires authentication */
168
165
  authenticated;
169
166
  /** Parameter scheme validator */
170
- params_val;
167
+ params_schema;
171
168
  /** The default response headers */
172
169
  headers;
173
170
  /** Option 2) View based endpoint */
@@ -175,6 +172,8 @@ export class Endpoint {
175
172
  /** Option 3) Data endpoint, raw */
176
173
  data;
177
174
  raw_data;
175
+ /** Option 4 Data endpoint by file path. */
176
+ file_path;
178
177
  /** Content length & type */
179
178
  content_length;
180
179
  content_type;
@@ -188,17 +187,17 @@ export class Endpoint {
188
187
  /** Private attributes */
189
188
  _compress;
190
189
  _cache;
191
- _static_path;
192
- _templates;
193
190
  ip_whitelist;
194
191
  _is_compressed;
195
192
  _initialized = false;
196
- _server;
197
- constructor({ method = "GET", endpoint = "/", authenticated = false, rate_limit = undefined, params = undefined, callback = undefined, view = undefined, data = undefined, content_type, // = "text/plain",
198
- compress = "auto", cache = true, ip_whitelist = undefined, sitemap = undefined, robots = undefined, allow_unknown_params = false, _templates = {}, // only used in loading static files.
199
- _static_path = undefined, _is_static = false, }) {
193
+ /** A reference to the server. */
194
+ server;
195
+ constructor({ method, endpoint, authenticated = false, rate_limit = undefined, params = undefined, compress = "auto", cache = true, ip_whitelist = undefined, sitemap = undefined, robots = undefined, allow_unknown_params = false, _is_static = false,
196
+ // mode options.
197
+ callback = undefined, view = undefined, data = undefined, file_path = undefined, content_type, // = "text/plain",
198
+ }) {
200
199
  // Attributes.
201
- this.route = new Route(method, endpoint);
200
+ this.route = new Route(method ?? "GET", endpoint);
202
201
  this.id = this.route.id;
203
202
  this.authenticated = authenticated;
204
203
  if (this.callback === undefined) { // only assign when undefined, so derived classes can also define the callback function.
@@ -209,8 +208,7 @@ export class Endpoint {
209
208
  this._cache = cache;
210
209
  this.allow_sitemap = sitemap ?? true;
211
210
  this.allow_robots = robots ?? true;
212
- this._templates = _templates;
213
- this._static_path = _static_path == null ? undefined : new vlib.Path(_static_path).abs().str(); // use abs, is automatically assigned for static files.
211
+ this.file_path = file_path == null ? file_path : new vlib.Path(file_path).abs();
214
212
  this.ip_whitelist = Array.isArray(ip_whitelist) ? ip_whitelist : undefined;
215
213
  this.is_static = _is_static;
216
214
  this.headers = [];
@@ -265,11 +263,22 @@ export class Endpoint {
265
263
  this.rate_limit_groups = [];
266
264
  if (Array.isArray(rate_limit)) {
267
265
  rate_limit.forEach((item) => {
268
- this.rate_limit_groups.push(RateLimits.add(item));
266
+ if (typeof item === "string") {
267
+ const group = RateLimits.groups.get(item);
268
+ if (!group)
269
+ throw new Error(`Rate limit group "${item}" does not exist.`);
270
+ this.rate_limit_groups.push(group);
271
+ }
272
+ else {
273
+ this.rate_limit_groups.push(RateLimits.add(item));
274
+ }
269
275
  });
270
276
  }
271
277
  else if (typeof rate_limit === "string") {
272
- this.rate_limit_groups.push(RateLimits.add({ group: rate_limit }));
278
+ const group = RateLimits.groups.get(rate_limit);
279
+ if (!group)
280
+ throw new Error(`Rate limit group "${rate_limit}" does not exist.`);
281
+ this.rate_limit_groups.push(group);
273
282
  }
274
283
  else if (typeof rate_limit === "object" && rate_limit != null) {
275
284
  this.rate_limit_groups.push(RateLimits.add(rate_limit));
@@ -290,9 +299,9 @@ export class Endpoint {
290
299
  }
291
300
  // Initialize the parameter scheme validator.
292
301
  if (params_scheme != null) {
293
- this.params_val = new vlib.scheme.Validator("object", {
294
- scheme: params,
295
- strict: !allow_unknown_params,
302
+ this.params_schema = new vlib.Schema.Validator({
303
+ schema: params_scheme,
304
+ unknown: !allow_unknown_params,
296
305
  parent: this.route.id + ":",
297
306
  throw: false,
298
307
  });
@@ -301,7 +310,7 @@ export class Endpoint {
301
310
  /** Initialize with server. */
302
311
  _initialize(server) {
303
312
  // Assign attribute.
304
- this._server = server;
313
+ this.server = server;
305
314
  // Initialize view.
306
315
  if (this.view != null) {
307
316
  this.view._initialize(server, this);
@@ -317,114 +326,42 @@ export class Endpoint {
317
326
  }
318
327
  return this;
319
328
  }
320
- /**
321
- * Convert a RegExp into a readable path:
322
- * - strips ^…$ anchors
323
- * - unescapes `\/` → `/`
324
- * - `(?<name>…)` → `:name`
325
- * - anonymous captures `(…)` → `:param1`, `:param2`, …
326
- */
327
- _stringify_endpoint_regex(re) {
328
- let src = re.source;
329
- // 1) strip anchors
330
- src = src.replace(/^\^/, "").replace(/\$$/, "");
331
- // 2) unescape slashes
332
- src = src.replace(/\\\//g, "/");
333
- // 3) named capture groups → :name
334
- src = src.replace(/\(\?<([^>]+)>[^)]+\)/g, (_match, name) => `:${name}`);
335
- // 4) anonymous captures → :paramN
336
- let idx = 1;
337
- src = src.replace(/\((?!\?)[^)]+\)/g, () => `:param${idx++}`);
338
- return src;
339
- }
340
- // Load data by path.
341
- _load_data_by_path(server) {
342
- // Load data.
343
- const path = new vlib.Path(this._static_path);
344
- let data;
345
- if (path.extension() === ".js") {
346
- data = path.load_sync();
347
- // @deprecated compile using vhighlight, now esbuild is used for bundling, callback is not supported yet.
348
- // const hash = server.hash(data);
349
- // // Check cache for restarts by file watcher.
350
- // const {cache_path, cache_hash, cache_data} = Utils.get_compiled_cache(server.domain, "GET", path.str());
351
- // if (cache_data && hash === cache_hash) {
352
- // data = cache_data;
353
- // }
354
- // // Compile.
355
- // else {
356
- // const compiler = new vhighlight.JSCompiler({
357
- // line_breaks: true,
358
- // double_line_breaks: false,
359
- // comments: false,
360
- // white_space: false,
361
- // })
362
- // data = compiler.compile_code(data, path.str());
363
- // // Cache for restarts.
364
- // Utils.set_compiled_cache(cache_path, data, hash);
365
- // }
366
- }
367
- else if (path.extension() === ".css") {
368
- const minifier = new CleanCSS();
369
- data = minifier.minify(path.load_sync()).styles;
370
- }
371
- else {
372
- data = path.load_sync({ type: "buffer" });
373
- }
374
- // Fill templates.
375
- if (this._templates && typeof data === "string") {
376
- data = Utils.fill_templates(data, this._templates);
377
- }
378
- // Assign.
379
- this.data = data;
380
- return this;
381
- }
382
- // Set default headers.
383
- _set_headers(stream) {
384
- this.headers.forEach((item) => {
385
- stream.set_header(item[0], item[1]);
386
- });
387
- }
388
- // Refresh for file watcher.
389
- async _refresh(server) {
390
- // Not in production.
391
- if (server.production) {
392
- throw new Error("This function is not designed for production mode.");
393
- }
394
- // Build html code of view.
395
- if (this.view != null) {
396
- await this.view._build_html();
397
- }
398
- }
399
329
  // Initialize.
400
330
  async _dynamic_initialize() {
401
- if (!this._server) {
331
+ if (!this.server) {
402
332
  throw new Error(`Endpoint "${this.id}" is not initialized by the server yet.`);
403
333
  }
404
- // Build html code of view.
405
- if (this.view != null) {
406
- await this.view._build_html();
334
+ /**
335
+ * Load data by file path
336
+ * @todo in the future we should not load all of the data but just send it to the client in chunks
337
+ * but we need to account for compression and content length when implementing this.
338
+ */
339
+ if (this.file_path != null) {
340
+ this._load_data_by_path(this.server);
407
341
  }
408
342
  // Compression enabled.
409
- if (this._server.production && this.callback == null && this._compress) {
343
+ if (this.server.production && this.callback == null && this._compress) {
410
344
  this._is_compressed = true;
411
345
  if (this.data != null && (this.data instanceof Buffer || typeof this.data === "string")) {
412
346
  this.raw_data = this.data;
413
347
  this.data = zlib.gzipSync(this.data, { level: zlib.constants.Z_BEST_COMPRESSION });
414
348
  this.content_length = this.data.length;
415
349
  }
416
- else if (this.view != null) {
417
- this.view.raw_html = this.view.html;
418
- this.view.html = zlib.gzipSync(this.view.html, { level: zlib.constants.Z_BEST_COMPRESSION });
419
- this.content_length = this.view.html.length;
420
- }
350
+ // cant compress view html here since it contains unique nonces.
351
+ // else if (this.view != null) {
352
+ // this.view.raw_html = this.view.html;
353
+ // this.view.html = zlib.gzipSync(this.view.html as any, {level: zlib.constants.Z_BEST_COMPRESSION});
354
+ // this.content_length = this.view.html.length;
355
+ // }
421
356
  debug(2, this.route.id, ": ", "Compressed - content_length:", this.content_length);
422
357
  }
423
358
  // Set cache headers.
424
- // if (!this._server.production) {
425
- this._cache = false; // @todo @tmp
426
- // }
427
- if ((this.callback == null || this.is_image_endpoint) && (typeof this._cache === "number" || this._cache === true)) {
359
+ if (!this.server.production) {
360
+ this._cache = false; // @todo @tmp
361
+ }
362
+ if (
363
+ // (this.callback == null || this.is_image_endpoint) &&
364
+ (typeof this._cache === "number" || this._cache === true)) {
428
365
  if (this._cache === 1 || this._cache === true) {
429
366
  this.headers.push(["Cache-Control", "max-age=86400"]);
430
367
  }
@@ -450,6 +387,12 @@ export class Endpoint {
450
387
  }
451
388
  this._initialized = true;
452
389
  }
390
+ // Set default headers.
391
+ _set_headers(stream) {
392
+ this.headers.forEach((item) => {
393
+ stream.set_header(item[0], item[1]);
394
+ });
395
+ }
453
396
  // Serve a client.
454
397
  async _serve_options(stream) {
455
398
  if (!this._initialized) {
@@ -458,14 +401,19 @@ export class Endpoint {
458
401
  try {
459
402
  // Check IP whitelist.
460
403
  if (this.ip_whitelist && !this.ip_whitelist.includes(stream.ip)) {
461
- stream.send({
404
+ stream.error({
462
405
  status: Status.unauthorized,
463
- body: "Unauthorized.",
406
+ type: "Unauthorized",
407
+ message: "Unauthorized.",
464
408
  });
465
409
  return;
466
410
  }
467
411
  // Set headers.
468
412
  this._set_headers(stream);
413
+ // Compute content length on view & when not defined.
414
+ if (this.content_length == null && this.view != null) {
415
+ stream.set_header("Content-Length", (await this.view.content_length()).toString());
416
+ }
469
417
  // Send.
470
418
  stream.send({ status: Status.no_content });
471
419
  }
@@ -480,7 +428,7 @@ export class Endpoint {
480
428
  try {
481
429
  // Check IP whitelist.
482
430
  if (this.ip_whitelist && !this.ip_whitelist.includes(stream.ip)) {
483
- log(2, this.route.id, ": ", "Blocking ip ", stream.ip, " per ip whitelist.");
431
+ this.server?.log(2, this.route.id, ": ", "Blocking ip ", stream.ip, " per ip whitelist.");
484
432
  stream.send({
485
433
  status: Status.unauthorized,
486
434
  data: "Unauthorized.",
@@ -491,9 +439,9 @@ export class Endpoint {
491
439
  this._set_headers(stream);
492
440
  // Callback.
493
441
  if (this.callback != null) {
494
- log(3, this.route.id, ": ", "Serving endpoint in callback mode.");
495
- if (this.params_val != null) {
496
- const { error, invalid_fields } = this.params_val.validate(stream.param);
442
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in callback mode.");
443
+ if (this.params_schema != null) {
444
+ const { error, invalid_fields } = this.params_schema.validate(stream.params ?? {});
497
445
  if (error) {
498
446
  stream.send({
499
447
  status: Status.bad_request,
@@ -508,7 +456,7 @@ export class Endpoint {
508
456
  }
509
457
  try {
510
458
  let promise;
511
- if (this.params_val != null) {
459
+ if (this.params_schema != null) {
512
460
  promise = this.callback(stream, (stream.params ?? {}));
513
461
  }
514
462
  else {
@@ -530,19 +478,19 @@ export class Endpoint {
530
478
  type: "InternalServerError",
531
479
  });
532
480
  }
533
- error(`${this.id}: `, err); // after sending the response since this edits the error.
481
+ this.server?.log.error(`${this.id}: `, err); // after sending the response since this edits the error.
534
482
  }
535
483
  return;
536
484
  }
537
485
  // View.
538
486
  else if (this.view != null) {
539
- log(3, this.route.id, ": ", "Serving endpoint in view mode.");
540
- this.view._serve(stream, status_code);
487
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in view mode.");
488
+ await this.view._serve(stream, status_code, { compress: this._compress });
541
489
  return;
542
490
  }
543
491
  // Data.
544
492
  else if (this.data != null) {
545
- log(3, this.route.id, ": ", "Serving endpoint in data mode.");
493
+ this.server?.log(3, this.route.id, ": ", "Serving endpoint in data mode.");
546
494
  stream.send({
547
495
  status: status_code,
548
496
  data: this.data,
@@ -558,4 +506,65 @@ export class Endpoint {
558
506
  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.
559
507
  }
560
508
  }
509
+ // Load data by path.
510
+ _load_data_by_path(server) {
511
+ if (!this.file_path) {
512
+ throw new Error(`Endpoint "${this.id}" has no file path assigned.`);
513
+ }
514
+ // Load data.
515
+ const path = new vlib.Path(this.file_path);
516
+ let data;
517
+ if (path.extension() === ".js") {
518
+ data = path.load_sync();
519
+ // @deprecated compile using vhighlight, now esbuild is used for bundling, callback is not supported yet.
520
+ // const hash = server.hash(data);
521
+ // // Check cache for restarts by file watcher.
522
+ // const {cache_path, cache_hash, cache_data} = Utils.get_compiled_cache(server.domain, "GET", path.str());
523
+ // if (cache_data && hash === cache_hash) {
524
+ // data = cache_data;
525
+ // }
526
+ // // Compile.
527
+ // else {
528
+ // const compiler = new vhighlight.JSCompiler({
529
+ // line_breaks: true,
530
+ // double_line_breaks: false,
531
+ // comments: false,
532
+ // white_space: false,
533
+ // })
534
+ // data = compiler.compile_code(data, path.str());
535
+ // // Cache for restarts.
536
+ // Utils.set_compiled_cache(cache_path, data, hash);
537
+ // }
538
+ }
539
+ else if (path.extension() === ".css") {
540
+ const minifier = new CleanCSS();
541
+ data = minifier.minify(path.load_sync()).styles;
542
+ }
543
+ else {
544
+ data = path.load_sync({ type: "buffer" });
545
+ }
546
+ // Assign.
547
+ this.data = data;
548
+ return this;
549
+ }
561
550
  }
551
+ // const e = new Endpoint({
552
+ // method: "POST",
553
+ // endpoint: "/api/docs/feedback",
554
+ // content_type: "application/json",
555
+ // params: {
556
+ // /** The user id. */
557
+ // uid: "string",
558
+ // /** The project name. */
559
+ // project: "string",
560
+ // /** The project version. */
561
+ // version: "string",
562
+ // /** The document id. */
563
+ // id: "string",
564
+ // /** Whether the feedback is positive or negative. */
565
+ // positive: "boolean",
566
+ // },
567
+ // rate_limit: "global",
568
+ // async callback(stream, params) {
569
+ // }
570
+ // })
@@ -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';
@@ -1,4 +1,8 @@
1
- import type { Stream } from "./stream.js";
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ import type { Stream } from "../stream.js";
2
6
  /**
3
7
  * The base class for internal and external errors.
4
8
  */
@@ -7,40 +11,28 @@ declare class BaseError extends Error {
7
11
  status: number;
8
12
  data?: any[] | Record<string, any>;
9
13
  invalid_fields: Record<string, string>;
10
- constructor({ type, message, status, data, invalid_fields }: {
11
- type?: string;
14
+ constructor({ type, message, status, data, invalid_fields, cause }: {
12
15
  message: string;
16
+ type?: string;
13
17
  status?: number;
14
- data?: any;
18
+ data?: any[] | Record<string, any>;
15
19
  invalid_fields?: Record<string, string>;
20
+ cause?: unknown;
16
21
  });
17
22
  serve(stream: Stream): this;
18
23
  }
19
24
  /**
20
- * Thrown external errors are presented to the user.
25
+ * Thrown internal errors are not presented to the user, isntead an internal server error message is shown.
21
26
  */
22
- export declare class ExternalError extends BaseError {
27
+ export declare class InternalError extends BaseError {
23
28
  constructor(args: ConstructorParameters<typeof BaseError>[0]);
24
29
  serve(stream: Stream): this;
25
30
  }
26
31
  /**
27
- * Thrown internal errors are not presented to the user, isntead an internal server error message is shown.
32
+ * Thrown external errors are presented to the user.
28
33
  */
29
- export declare class InternalError extends BaseError {
34
+ export declare class ExternalError extends BaseError {
30
35
  constructor(args: ConstructorParameters<typeof BaseError>[0]);
31
36
  serve(stream: Stream): this;
32
37
  }
33
- interface UtilsInt {
34
- "APIError": typeof ExternalError;
35
- fill_templates(data: string, templates: Record<string, any>, curly_style?: boolean): string;
36
- get_currency_symbol(currency: string): string | null;
37
- get_compiled_cache(domain: string, method: string, endpoint: string): {
38
- cache_path: any;
39
- cache_hash: any;
40
- cache_data: any;
41
- };
42
- set_compiled_cache(path: any, data: string, hash: string): void;
43
- }
44
- export declare const Utils: UtilsInt;
45
- export { Utils as utils };
46
- export default Utils;
38
+ export {};