@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,23 +1,20 @@
1
- /*
2
- * Author: Daan van den Bergh
3
- * Copyright: © 2022 - 2024 Daan van den Bergh.
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2025 - 2025 Daan van den Bergh. All rights reserved.
4
4
  */
5
5
  // ---------------------------------------------------------
6
6
  // Imports.
7
7
  import zlib from 'zlib';
8
8
  import * as vlib from "@vandenberghinc/vlib";
9
+ import RateLimits from './rate_limit.js';
9
10
  const { debug } = vlib;
10
11
  // ---------------------------------------------------------
11
12
  // Request object.
12
- /* @docs
13
- @nav: Backend
14
- @chapter: Stream
15
- @title: HTTP1/2 Stream
16
- @description:
17
- The http2 stream wrapper object.
18
- @attribute:
19
- @name: headers
20
- @desc: The request headers.
13
+ /**
14
+ * The http2 stream wrapper object.
15
+ *
16
+ * @property headers The request headers.
17
+ * @docs
21
18
  */
22
19
  export class Stream {
23
20
  s;
@@ -41,6 +38,16 @@ export class Stream {
41
38
  res_headers;
42
39
  body;
43
40
  promise;
41
+ /** The cached value of {@link normalize_ip} */
42
+ _normalized_ip;
43
+ /**
44
+ * Create a new Stream wrapper for HTTP/1.1 or HTTP/2.
45
+ *
46
+ * @param stream The HTTP/2 stream (when using HTTP/2).
47
+ * @param headers The request headers.
48
+ * @param req The HTTP/1.1 request (when using HTTP/1.1).
49
+ * @param res The HTTP/1.1/HTTP/2 response object.
50
+ */
44
51
  constructor(stream, headers, req, res) {
45
52
  // Parameters.
46
53
  this.s = stream;
@@ -62,9 +69,9 @@ export class Stream {
62
69
  this._endpoint = undefined;
63
70
  this._query_string = undefined;
64
71
  this._cookies = undefined;
65
- this._uid = null;
72
+ this._uid = undefined;
66
73
  // Response attributes
67
- this.status_code = null;
74
+ this.status_code = undefined;
68
75
  this.finished = false;
69
76
  this.res_cookies = [];
70
77
  this.res_headers = this.http1 ? [] : {};
@@ -73,7 +80,11 @@ export class Stream {
73
80
  this.promise = undefined;
74
81
  this._recv_body();
75
82
  }
76
- // Receve the body.
83
+ /**
84
+ * Receive and buffer the request body, handling optional gzip/deflate decompression.
85
+ * Sets {@link body} and resolves the internal promise used by {@link join}.
86
+ * @private
87
+ */
77
88
  _recv_body() {
78
89
  this.promise = new Promise((resolve, reject) => {
79
90
  // Buffers.
@@ -134,7 +145,11 @@ export class Stream {
134
145
  }
135
146
  });
136
147
  }
137
- // Parse endpoint.
148
+ /**
149
+ * Parse and cache the request endpoint and query string.
150
+ * Populates {@link _endpoint} and {@link _query_string}.
151
+ * @private
152
+ */
138
153
  _parse_endoint() {
139
154
  if (this._endpoint !== undefined) {
140
155
  return;
@@ -150,7 +165,10 @@ export class Stream {
150
165
  this._endpoint = this._endpoint.substr(0, this._endpoint.length - 1);
151
166
  }
152
167
  }
153
- // Parse the parameters.
168
+ /**
169
+ * Parse and cache request parameters from the query string or JSON body.
170
+ * Returns the parsed params map.
171
+ */
154
172
  _parse_params() {
155
173
  // Parse query string.
156
174
  this._parse_endoint();
@@ -247,14 +265,19 @@ export class Stream {
247
265
  // Handler.
248
266
  return this._params;
249
267
  }
250
- // Parse cookies.
268
+ /**
269
+ * Parses & returns the cookies cookies,
270
+ * while assigning it to {@link _cookies}
271
+ *
272
+ * @warning On subsequent calls cookies will be parsed again.
273
+ */
251
274
  _parse_cookies() {
252
275
  // Reset cookies.
253
276
  this._cookies = {};
254
277
  // Vars.
255
278
  const cookie_str = this.http2 ? this.headers["cookie"] : this.req.headers.cookie;
256
- if (cookie_str === undefined) {
257
- return null;
279
+ if (cookie_str == null) {
280
+ return this._cookies;
258
281
  }
259
282
  let key = "";
260
283
  let value = "";
@@ -333,58 +356,76 @@ export class Stream {
333
356
  }
334
357
  append_to_cookie();
335
358
  append_cookie();
359
+ return this._cookies;
336
360
  }
337
361
  // ---------------------------------------------------------
338
362
  // Functions.
339
- // Wait till the request body is fully received.
363
+ /**
364
+ * Wait until the request body is fully received.
365
+ * Resolves when the internal receive promise completes.
366
+ */
340
367
  async join() {
341
368
  await this.promise;
342
369
  }
343
370
  // Get the requests ip.
344
- /* @docs:
345
- * @title: IP
346
- * @description: Get the request's ip.
347
- * @property: true
348
- * @usage:
349
- * ...
350
- * const ip = stream.ip;
371
+ /**
372
+ * Get the request's ip.
373
+ *
374
+ * @example
375
+ * ```ts
376
+ * const ip = stream.ip;
377
+ * ```
378
+ * @docs
351
379
  */
352
380
  get ip() {
353
381
  return this._ip;
354
382
  }
383
+ /**
384
+ * Retrieve the normalized IP address, suitable for rate limiting and logging.
385
+ * @throws {Error} If the IP is invalid.
386
+ * @returns The normalized IP.
387
+ */
388
+ normalized_ip() {
389
+ if (this._normalized_ip != null) {
390
+ return this._normalized_ip;
391
+ }
392
+ return this._normalized_ip = RateLimits.normalize_ip(this._ip);
393
+ }
355
394
  // Get the requests port.
356
- /* @docs:
357
- * @title: Port
358
- * @description: Get the request's port.
359
- * @property: true
360
- * @usage:
361
- * ...
362
- * const port = stream.port;
395
+ /**
396
+ * Get the request's port.
397
+ *
398
+ * @example
399
+ * ```ts
400
+ * const port = stream.port;
401
+ * ```
402
+ * @docs
363
403
  */
364
404
  get port() {
365
405
  return this._port;
366
406
  }
367
407
  // Get the method.
368
- /* @docs:
369
- * @title: Method
370
- * @description: Get the request method.
371
- * @property: true
372
- * @usage:
373
- * ...
374
- * const method = stream.method;
408
+ /**
409
+ * Get the request method.
410
+ *
411
+ * @example
412
+ * ```ts
413
+ * const method = stream.method;
414
+ * ```
415
+ * @docs
375
416
  */
376
417
  get method() {
377
418
  return this._method;
378
419
  }
379
420
  // Get the endpoint.
380
- /* @docs:
381
- * @title: Endpoint
382
- * @description: Get the request's endpoint. This will not include the query string.
383
- * @property: true
384
- * @type: string
385
- * @usage:
386
- * ...
387
- * const endpoint = stream.endpoint;
421
+ /**
422
+ * Get the request's endpoint. This will not include the query string.
423
+ *
424
+ * @example
425
+ * ```ts
426
+ * const endpoint = stream.endpoint;
427
+ * ```
428
+ * @docs
388
429
  */
389
430
  get endpoint() {
390
431
  if (this._endpoint !== undefined) {
@@ -394,14 +435,14 @@ export class Stream {
394
435
  return this._endpoint;
395
436
  }
396
437
  // Get the params.
397
- /* @docs:
398
- * @title: Parameters
399
- * @description: Get the request's query or body params.
400
- * property: true
401
- * @type: object
402
- * @usage:
403
- * ...
404
- * const params = stream.params;
438
+ /**
439
+ * Get the request's query or body params.
440
+ *
441
+ * @example
442
+ * ```ts
443
+ * const params = stream.params;
444
+ * ```
445
+ * @docs
405
446
  */
406
447
  get params() {
407
448
  if (this._params !== undefined) {
@@ -418,31 +459,25 @@ export class Stream {
418
459
  this._params[name] = value;
419
460
  }
420
461
  // Get a param by name and optionally by type.
421
- /* @docs:
422
- * @title: Parameter
423
- * @description: Get a single query or body parameter with an optional type cast.
424
- * @warning: Throws an error when the parameter does not exist or when the type is different from the specified type(s), unless parameter `def` is defined.
425
- * @param:
426
- * @name: name
427
- * @desc: The name of the parameter.
428
- * @type: string
429
- * @param:
430
- * @name: type
431
- * @desc: The type cast of the parameters, valid types are `[null, "boolean", "number", "string", "array", "object"]`.
432
- * @type: string
433
- * @param:
434
- * @name: def
435
- * @desc:
462
+ /**
463
+ * Get a single query or body parameter with an optional type cast.
464
+ *
465
+ * @warning Throws an error when the parameter does not exist or when the type is different from the specified type(s), unless parameter `def` is defined.
466
+ *
467
+ * @param name The name of the parameter.
468
+ * @param type The type cast of the parameters, valid types are `[null, "boolean", "number", "string", "array", "object"]`.
469
+ * @param def
436
470
  * The default value to return when the parameter does not exist.
437
471
  *
438
472
  * If the parameter is not defined and `def` is `undefined` then this function will throw an error.
439
473
  * When `def` is `undefined` errors will be thrown, when `def` is `null` and the parameter is undefined then `null` will be returned as the default value.
440
474
  *
441
475
  * Errors will always be thrown when the incorrect type has been sent by the user.
442
- * @type: any
443
- * @usage:
444
- * ...
445
- * const param = stream.param("myparameter", "number", 10);
476
+ * @example
477
+ * ```ts
478
+ * const param = stream.param("myparameter", "number", 10);
479
+ * ```
480
+ * @docs
446
481
  */
447
482
  param(name, type = null, def = undefined) {
448
483
  // Parse params.
@@ -577,45 +612,43 @@ export class Stream {
577
612
  return value;
578
613
  }
579
614
  // Get the request cookies.
580
- /* @docs:
581
- * @title: Cookies
582
- * @description: Get the request's cookies
583
- * property: true
584
- * @type: object
585
- * @usage:
586
- * ...
587
- * const cookies = stream.cookies;
615
+ /**
616
+ * Get the request's cookies
617
+ *
618
+ * @example
619
+ * ```ts
620
+ * const cookies = stream.cookies;
621
+ * ```
622
+ * @docs
588
623
  */
589
624
  get cookies() {
590
- if (this._cookies !== undefined) {
625
+ if (this._cookies != null)
591
626
  return this._cookies;
592
- }
593
- this._parse_cookies();
594
- return this._cookies;
595
- }
596
- // Check if the stream is closed
597
- /* @docs:
598
- * @title: Closed
599
- * @description: Check if the stream is closed.
600
- * @property: true
601
- * @usage:
602
- * ...
603
- * const ip = stream.closed;
604
- */
605
- get closed() {
606
- if (!this.http2) {
607
- throw new Error("This function is only supported for http2 streams.");
608
- }
609
- return this.s.closed;
627
+ return this._parse_cookies();
610
628
  }
629
+ // DEPRECATED since its only available for http2.
630
+ // /**
631
+ // * Check if the stream is closed.
632
+ // *
633
+ // * @example
634
+ // * ```ts
635
+ // * const ip = stream.closed;
636
+ // * ```
637
+ // * @docs
638
+ // */
639
+ // get closed(): boolean {
640
+ // if (!this.http2) { throw new Error("This function is only supported for http2 streams."); }
641
+ // return this.s!.closed;
642
+ // }
611
643
  // Check if the stream is destroyed
612
- /* @docs:
613
- * @title: Destroyed
614
- * @description: Check if the stream is destroyed.
615
- * @property: true
616
- * @usage:
617
- * ...
618
- * const ip = stream.destroyed;
644
+ /**
645
+ * Check if the stream is destroyed.
646
+ *
647
+ * @example
648
+ * ```ts
649
+ * const ip = stream.destroyed;
650
+ * ```
651
+ * @docs
619
652
  */
620
653
  get destroyed() {
621
654
  if (this.http2) {
@@ -628,14 +661,14 @@ export class Stream {
628
661
  // ---------------------------------------------------------
629
662
  // Functions.
630
663
  // Get the authenticated uid.
631
- /* @docs:
632
- * @title: UID
633
- * @description: Get the authenticated uid, is `null` when the request was not authenticated.
634
- * @property: true
635
- * @type: string
636
- * @usage:
637
- * ...
638
- * const uid = stream.uid;
664
+ /**
665
+ * Get the authenticated uid; `undefined` when the request was not authenticated.
666
+ *
667
+ * @example
668
+ * ```ts
669
+ * const uid = stream.uid;
670
+ * ```
671
+ * @docs
639
672
  */
640
673
  get uid() {
641
674
  return this._uid;
@@ -644,46 +677,29 @@ export class Stream {
644
677
  this._uid = value;
645
678
  }
646
679
  // Send a response.
647
- /* @docs:
648
- * @title: Send
649
- * @description: Send a response
650
- * @parameter:
651
- * @name: status
652
- * @description: The response status.
653
- * @type: number
654
- * @parameter:
655
- * @name: headers
656
- * @description: The response headers.
657
- * @type: object
658
- * @parameter:
659
- * @name: body
660
- * @description: The response body.
661
- * @type: any
662
- * @parameter:
663
- * @name: data
664
- * @description: The response data.
665
- * @type: undefined, string
666
- * @deprecated: true
667
- * @parameter:
668
- * @name: compress
669
- * @description: A boolean indicating if the response data should be compressed.
670
- * @type: boolean
671
- * @usage:
672
- * ...
673
- * stream.send({status: 200, data: "Hello World!"});
680
+ /**
681
+ * Send a response.
682
+ *
683
+ * @param options The response options.
684
+ * @param options.status The response status.
685
+ * @param options.headers The response headers.
686
+ * @param options.data The data of the response body to send.
687
+ * @param options.compress Whether the response should be gzip-compressed.
688
+ * @example
689
+ * ```ts
690
+ * stream.send({status: 200, data: "Hello World!"});
691
+ * ```
692
+ * @docs
674
693
  */
675
- send({ status = 200, headers = {},
676
- // data,
677
- // body = data, // zero-copy pull in data
678
- body, data, compress = false, } = {}) {
679
- if (data) {
680
- body = data;
681
- }
682
- /** @warning @todo */
683
- // compress = false; // @todo @tmp
694
+ send({ status = 200, headers = {}, data, compress = false, } = {}) {
684
695
  // Assign sent status code.
685
696
  this.status_code = status;
686
- const has_body = body != null && body !== "";
697
+ // The body to send as non `ResponseBody` type.
698
+ let body = data;
699
+ // Convert body primitivies to string.
700
+ if (typeof body === 'boolean' || typeof body === 'number') {
701
+ body = body.toString();
702
+ }
687
703
  // HTTP2.
688
704
  if (this.http2) {
689
705
  const stream = this.s;
@@ -693,25 +709,45 @@ export class Stream {
693
709
  if (this.res_cookies.length > 0) {
694
710
  this.res_headers["set-cookie"] = this.res_cookies;
695
711
  }
696
- if (compress && has_body) {
712
+ if (compress && body) {
697
713
  this.res_headers["Content-Encoding"] = "gzip";
698
714
  this.res_headers["Vary"] = "Accept-Encoding";
699
715
  }
700
716
  // Is json.
701
- if (has_body && typeof body === 'object' && Buffer.isBuffer(body) === false && (body instanceof Uint8Array) === false) {
717
+ if (body && typeof body === 'object' && Buffer.isBuffer(body) === false && (body instanceof Uint8Array) === false) {
702
718
  this.res_headers["Content-Type"] = "application/json";
703
719
  body = JSON.stringify(body);
704
720
  }
705
721
  // Compress.
706
- if (compress && has_body) {
707
- body = zlib.gzipSync(body, { level: zlib.constants.Z_BEST_COMPRESSION });
722
+ if (body
723
+ && typeof body === "object"
724
+ && !(body instanceof Buffer)
725
+ && !(body instanceof Uint8Array)) {
726
+ // Convert to string.
727
+ body = JSON.stringify(body);
728
+ }
729
+ if (compress
730
+ && body) {
731
+ if (typeof body === 'string'
732
+ || Buffer.isBuffer(body)
733
+ || body instanceof Uint8Array) {
734
+ body = zlib.gzipSync(body, { level: zlib.constants.Z_BEST_COMPRESSION });
735
+ }
736
+ else {
737
+ body = zlib.gzipSync(JSON.stringify(body), { level: zlib.constants.Z_BEST_COMPRESSION });
738
+ }
708
739
  }
709
740
  // Respond.
710
741
  stream.respond(this.res_headers);
711
742
  // End.
712
- debug(3, "Sending response: ", status, " - has body: ", has_body);
713
- if (has_body) {
714
- stream.end(Buffer.from(body));
743
+ debug(3, "Sending response: ", status, " - has body: ", !!body);
744
+ if (body) {
745
+ if (Buffer.isBuffer(body) || body instanceof Uint8Array) {
746
+ stream.end(body);
747
+ }
748
+ else {
749
+ stream.end(Buffer.from(body));
750
+ }
715
751
  // stream.end(body); // do not use toString() here or it will cause issues with writing binary data.
716
752
  }
717
753
  else {
@@ -729,25 +765,33 @@ export class Stream {
729
765
  res.setHeader(this.res_headers[i][0], this.res_headers[i][1]);
730
766
  }
731
767
  Object.keys(headers).forEach((key) => {
732
- res.setHeader(key, headers[key]);
768
+ const v = headers[key];
769
+ if (v != null) {
770
+ if (typeof v === "boolean") {
771
+ res.setHeader(key, v.toString());
772
+ }
773
+ else {
774
+ res.setHeader(key, v);
775
+ }
776
+ }
733
777
  });
734
778
  // Set cookies.
735
779
  if (this.cookies.length > 0) {
736
780
  res.setHeader('Set-Cookie', this.res_cookies);
737
781
  }
738
782
  // Convert data.
739
- if (has_body && typeof body === 'object' && Buffer.isBuffer(body) === false && (body instanceof Uint8Array) === false) {
783
+ if (body && typeof body === 'object' && Buffer.isBuffer(body) === false && (body instanceof Uint8Array) === false) {
740
784
  res.setHeader("Content-Type", "application/json");
741
785
  body = JSON.stringify(body);
742
786
  }
743
787
  // @todo compress.
744
- if (compress && has_body) {
788
+ if (compress && body) {
745
789
  res.setHeader("Content-Encoding", "gzip");
746
790
  res.setHeader("Vary", "Accept-Encoding");
747
791
  body = zlib.gzipSync(body, { level: zlib.constants.Z_BEST_COMPRESSION });
748
792
  }
749
793
  // Set data.
750
- if (has_body) {
794
+ if (body) {
751
795
  res.end(body); // do not use toString() here or it will cause issues with writing binary data.
752
796
  }
753
797
  // End.
@@ -760,94 +804,66 @@ export class Stream {
760
804
  return this;
761
805
  }
762
806
  // Send a successs response.
763
- /* @docs:
764
- * @title: Send Successs
765
- * @description: Send a response
766
- * @parameter:
767
- * @name: status
768
- * @description: The response status.
769
- * @type: number
770
- * @parameter:
771
- * @name: headers
772
- * @description: The response headers.
773
- * @type: object
774
- * @parameter:
775
- * @name: body
776
- * @description: The response data.
777
- * @type: any
778
- * @parameter:
779
- * @name: data
780
- * @description: The response data.
781
- * @type: undefined, string
782
- * @deprecated: true
783
- * @parameter:
784
- * @name: compress
785
- * @description: A boolean indicating if the response data should be compressed.
786
- * @type: boolean
787
- * @usage:
788
- * ...
789
- * stream.success({data: "Hello World!"});
807
+ /**
808
+ * Send a response
809
+ *
810
+ * @param options The response options.
811
+ * @param options.status The response status.
812
+ * @param options.headers The response headers.
813
+ * @param options.data The data of the response body to send.
814
+ * @param options.compress Whether the response should be gzip-compressed.
815
+ * @example
816
+ * ```ts
817
+ * stream.success({data: "Hello World!"});
818
+ * ```
819
+ * @docs
790
820
  */
791
- success({ status = 200, headers = {}, body = undefined, data = undefined, compress = false } = {}) {
792
- debug(3, "Sending [success] response: ", status, " - body: ", body ?? data);
793
- return this.send({ status: status, headers: headers, body: body ?? data, compress: compress });
821
+ success({ status = 200, headers = {}, data, compress = false } = {}) {
822
+ debug(3, "Sending [success] response: ", status, " - body: ", data);
823
+ return this.send({ status, headers, data, compress });
794
824
  }
795
825
  // Send an error response.
796
- /* @docs:
797
- * @title: Send Error
798
- * @description: Send an error response
799
- * @parameter:
800
- * @name: status
801
- * @description: The response status.
802
- * @type: number
803
- * @parameter:
804
- * @name: headers
805
- * @description: The response headers.
806
- * @type: object
807
- * @parameter:
808
- * @name: body
809
- * @description: The response data.
810
- * @type: any
811
- * @parameter:
812
- * @name: data
813
- * @description: The response data.
814
- * @type: undefined, string
815
- * @deprecated: true
816
- * @parameter:
817
- * @name: compress
818
- * @description: A boolean indicating if the response data should be compressed.
819
- * @type: boolean
820
- * @usage:
821
- * ...
822
- * stream.error({data: "Some error occured"});
826
+ /**
827
+ * Send an error response
828
+ *
829
+ * @param options The error response options.
830
+ * @param options.message The error message.
831
+ * @param options.type The error type.
832
+ * @param options.invalid_fields The invalid fields when validation fails.
833
+ * @param options.status The response status.
834
+ * @param options.headers The response headers.
835
+ * @param options.compress Whether the response should be gzip-compressed.
836
+ * @param options.data Optional data to include in the error response, nested in the JSON response under field `data`.
837
+ * @example
838
+ * ```ts
839
+ * stream.error({ message: "Some error occurred", status: 400 });
840
+ * ```
841
+ * @docs
823
842
  */
824
- error({ message, type = "APIError", invalid_fields = {}, status = 500, headers = {}, compress = false, data = undefined, }) {
843
+ error({ message, type = "APIError", invalid_fields = {}, status = 500, headers = {}, compress = false, data, }) {
825
844
  debug(3, "Sending [error] response: ", status, " - message: ", message);
826
- return this.send({ status: status, headers: headers, compress: compress, body: {
827
- error: {
828
- type,
829
- message,
830
- status,
831
- invalid_fields,
832
- },
833
- data: data,
834
- } });
845
+ const api_error = {
846
+ error: {
847
+ type,
848
+ message,
849
+ status,
850
+ invalid_fields,
851
+ },
852
+ data,
853
+ };
854
+ return this.send({ status, headers, compress, data: api_error });
835
855
  }
836
856
  // Set headers.
837
- /* @docs:
838
- * @title: Set header
839
- * @description: Add a new header to the response data.
840
- * @parameter:
841
- * @name: name
842
- * @description: The header name.
843
- * @type: string
844
- * @parameter:
845
- * @name: value
846
- * @description: The header value.
847
- * @type: string
848
- * @usage:
849
- * ...
850
- * stream.set_header("Connection", "close");
857
+ /**
858
+ * Add a new header to the response data.
859
+ *
860
+ * @param name The header name.
861
+ * @param value The header value.
862
+ * @example
863
+ * ```ts
864
+ * stream.set_header("Connection", "close");
865
+ * ```
866
+ * @docs
851
867
  */
852
868
  set_header(name, value) {
853
869
  if (this.http2) {
@@ -859,16 +875,15 @@ export class Stream {
859
875
  return this;
860
876
  }
861
877
  // Set headers.
862
- /* @docs:
863
- * @title: Set headers
864
- * @description: Add new headers to the response data.
865
- * @parameter:
866
- * @name: headers
867
- * @description: The new response headers.
868
- * @type: object
869
- * @usage:
870
- * ...
871
- * stream.set_headers({"Connection": "close"});
878
+ /**
879
+ * Add new headers to the response data.
880
+ *
881
+ * @param headers The new response headers.
882
+ * @example
883
+ * ```ts
884
+ * stream.set_headers({"Connection": "close"});
885
+ * ```
886
+ * @docs
872
887
  */
873
888
  set_headers(headers = {}) {
874
889
  if (headers == null) {
@@ -886,18 +901,33 @@ export class Stream {
886
901
  }
887
902
  return this;
888
903
  }
889
- // Remove header.
890
- /* @docs:
891
- * @title: Remove headers
892
- * @description: Remove header names from the response data.
893
- * @parameter:
894
- * @name: ...names
895
- * @description: The header names to remove.
896
- * @type: ...string
897
- * @usage:
898
- * ...
899
- * stream.remove_header("Connection", "User-Agent");
900
- * @funcs: 2
904
+ /**
905
+ * Get an added header.
906
+ *
907
+ * @param name The header name.
908
+ * @example
909
+ * ```ts
910
+ * stream.get_header("Connection");
911
+ * ```
912
+ * @docs
913
+ */
914
+ get_header(name) {
915
+ if (this.http2) {
916
+ return this.res_headers[name];
917
+ }
918
+ else {
919
+ return this.res_headers.find((header) => header[0] === name)?.[1];
920
+ }
921
+ }
922
+ /**
923
+ * Remove header names from the response data.
924
+ *
925
+ * @param names The header names to remove.
926
+ * @example
927
+ * ```ts
928
+ * stream.remove_header("Connection", "User-Agent");
929
+ * ```
930
+ * @docs
901
931
  */
902
932
  remove_header(...names) {
903
933
  if (this.http1) {
@@ -916,21 +946,25 @@ export class Stream {
916
946
  }
917
947
  return this;
918
948
  }
949
+ /**
950
+ * Alias of {@link remove_header}.
951
+ *
952
+ * @param names The header names to remove.
953
+ */
919
954
  remove_headers(...names) {
920
955
  return this.remove_header(...names);
921
956
  }
922
957
  // Set a cookie.
923
- /* @docs:
924
- * @title: Set cookie.
925
- * @description: Set a cookie that will be sent with the response.
926
- * @warning: Will only be added to the response when the user uses `send()`, `success()` or `error()`.
927
- * @parameter:
928
- * @name: cookie
929
- * @description: The cookie string.
930
- * @type: string
931
- * @usage:
932
- * ...
933
- * stream.set_cookie("MyCookie=Hello World;");
958
+ /**
959
+ * Set a cookie that will be sent with the response.
960
+ *
961
+ * @warning Will only be added to the response when the user uses `send()`, `success()` or `error()`.
962
+ * @param cookie The cookie string.
963
+ * @example
964
+ * ```ts
965
+ * stream.set_cookie("MyCookie=Hello World;");
966
+ * ```
967
+ * @docs
934
968
  */
935
969
  set_cookie(cookie) {
936
970
  cookie = cookie.trim();
@@ -948,17 +982,16 @@ export class Stream {
948
982
  return this;
949
983
  }
950
984
  // Set cookies.
951
- /* @docs:
952
- * @title: Set Cookies
953
- * @description: Set a cookie that will be sent with the response.
954
- * @warning: Will only be added to the response when the user uses `send()`, `success()` or `error()`.
955
- * @parameter:
956
- * @name: cookies
957
- * @description: The cookie strings.
958
- * @type: ...string
959
- * @usage:
960
- * ...
961
- * stream.set_cookies("MyCookie1=Hello World;", "MyCookie2=Hello Universe;");
985
+ /**
986
+ * Set cookies that will be sent with the response.
987
+ *
988
+ * @warning Will only be added to the response when the user uses `send()`, `success()` or `error()`.
989
+ * @param cookies The cookie strings.
990
+ * @example
991
+ * ```ts
992
+ * stream.set_cookies("MyCookie1=Hello World;", "MyCookie2=Hello Universe;");
993
+ * ```
994
+ * @docs
962
995
  */
963
996
  set_cookies(...cookies) {
964
997
  for (let i = 0; i < cookies.length; i++) {
@@ -967,6 +1000,8 @@ export class Stream {
967
1000
  return this;
968
1001
  }
969
1002
  }
1003
+ ;
1004
+ ;
970
1005
  // ---------------------------------------------------------
971
1006
  // Exports.
972
1007
  export default Stream;