@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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,145 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
4
+ */
5
+ import * as https from "https";
6
+ import * as vlib from "@vandenberghinc/vlib";
7
+ import type { Server } from "./server.js";
8
+ export interface RateLimitGroup {
9
+ group?: string | null;
10
+ limit?: number | null;
11
+ interval?: number | null;
12
+ }
13
+ export interface RateLimitData {
14
+ group: string;
15
+ limit: number;
16
+ interval: number;
17
+ }
18
+ export interface RateLimitCacheData {
19
+ count: number;
20
+ expiration: number;
21
+ }
22
+ /**
23
+ * The rate limit groups for the endpoint.
24
+ *
25
+ * A group can either be registered through this class or by defining the rate limit group on an endpoint using `Endpoint.rate_limit`.
26
+ *
27
+ * This class will be accessable under `Server` attribute `rate_limits`.
28
+ * @nav Backend/Rate Limit
29
+ * @docs
30
+ */
31
+ export declare namespace RateLimits {
32
+ const groups: Map<string, RateLimitData>;
33
+ /**
34
+ * Add a rate limit group.
35
+ * @param group The rate limit group.
36
+ * @param limit The maximum requests per rate limit interval, defaults to 50.
37
+ * @param interval The rate limit interval in seconds, defaults to 60.
38
+ * @docs
39
+ */
40
+ function add({
41
+ /** The rate limit group name. */
42
+ group,
43
+ /** The maximum requests per rate limit interval. */
44
+ limit,
45
+ /** The rate limit interval in seconds. */
46
+ interval, }: RateLimitGroup): RateLimitData;
47
+ /**
48
+ * Normalize an IPv4 or IPv6 address into a unique, canonical string suitable for rate limiting keys.
49
+ *
50
+ * Behavior:
51
+ * - Trims surrounding whitespace.
52
+ * - If bracketed (`[addr]` or `[addr]:port`), removes brackets (and any trailing port).
53
+ * - Removes IPv6 zone/scope IDs (`%...`), e.g. `fe80::1%eth0` → `fe80::1`.
54
+ * - IPv4: returns dotted-decimal without leading zeros (e.g. `001.002.003.004` → `1.2.3.4`).
55
+ * - IPv6: emits RFC 5952 canonical form (lowercase hex, no leading zeros, single longest `::`).
56
+ * - IPv4-mapped IPv6 (`::ffff:0:0/96`) is normalized to plain IPv4 (e.g. `::ffff:203.0.113.7` → `203.0.113.7`).
57
+ *
58
+ * Notes:
59
+ * - This function expects a host/address string (not a full URL). It tolerates `[v6]:port`
60
+ * but intentionally does **not** accept non-bracketed `ipv4:port`.
61
+ *
62
+ * @param ip The input IPv4/IPv6 address.
63
+ * @returns Canonical address string.
64
+ * @throws {Error} If the input is not a valid IPv4 or IPv6 address.
65
+ */
66
+ function normalize_ip(ip: string): string;
67
+ }
68
+ /** Nested types for the {@link RateLimitServer}. */
69
+ export declare namespace RateLimitServer {
70
+ /** Constructor options. */
71
+ interface Opts {
72
+ /** The port to which the rate limiting server will bind. The default is `51234`. */
73
+ port?: number;
74
+ /** The IP address to which the rate limiting server will bind. By default, it runs on localhost only. */
75
+ ip?: string;
76
+ /** Enable the https attribute to run on https. */
77
+ https?: https.ServerOptions;
78
+ }
79
+ }
80
+ /**
81
+ * The rate limit websocket class (server).
82
+ * Rate limiting is handled automatically when the endpoints has it enabled.
83
+ *
84
+ * @nav Backend/Rate Limit
85
+ */
86
+ export declare class RateLimitServer {
87
+ static default_port: number;
88
+ private ip;
89
+ private port;
90
+ private https_config;
91
+ private server;
92
+ private limits;
93
+ ws?: vlib.websocket.Server;
94
+ private clear_caches_interval?;
95
+ constructor({ port, ip, https, _server, }: RateLimitServer.Opts & {
96
+ _server: Server;
97
+ });
98
+ /** Assert the server is running. */
99
+ private assert_connected;
100
+ start(): Promise<void>;
101
+ stop(): Promise<void>;
102
+ limit(ip: string, groups?: RateLimitGroup[]): Promise<number | null>;
103
+ reset(group: string): Promise<void>;
104
+ reset_all(): Promise<void>;
105
+ }
106
+ /** Nested types for the {@link RateLimitClient}. */
107
+ export declare namespace RateLimitClient {
108
+ /** Constructor options. */
109
+ interface Opts {
110
+ /** The port to which the rate limiting server will bind. The default is `51234`. */
111
+ port?: number;
112
+ /** The IP address to which the rate limiting server will bind. By default, it runs on localhost only. */
113
+ ip?: string;
114
+ /** A boolean flag indicating if the server runs on HTTPS. */
115
+ https?: boolean;
116
+ /** The websocket URL of the server. If defined this takes precedence over parameters `ip` and `port`. */
117
+ url?: string;
118
+ }
119
+ }
120
+ /**
121
+ * The secondary rate limit class (client).
122
+ *
123
+ * Rate limiting is handled automatically when the endpoints has it enabled.
124
+ *
125
+ * @nav Backend/Rate Limit
126
+ */
127
+ export declare class RateLimitClient {
128
+ private ip;
129
+ private port;
130
+ private https;
131
+ private url?;
132
+ private server;
133
+ ws?: vlib.websocket.Client;
134
+ constructor({ ip, port, https, url, _server, }: RateLimitClient.Opts & {
135
+ _server: Server;
136
+ });
137
+ /** Assert the client is started & connected. */
138
+ private assert_connected;
139
+ start(): Promise<void>;
140
+ stop(): Promise<void>;
141
+ limit(ip: string, groups?: RateLimitGroup[]): Promise<number | null>;
142
+ reset(group: string): Promise<void>;
143
+ reset_all(): Promise<void>;
144
+ }
145
+ export default RateLimits;
@@ -0,0 +1,549 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var stdin_exports = {};
29
+ __export(stdin_exports, {
30
+ RateLimitClient: () => RateLimitClient,
31
+ RateLimitServer: () => RateLimitServer,
32
+ RateLimits: () => RateLimits,
33
+ default: () => stdin_default
34
+ });
35
+ module.exports = __toCommonJS(stdin_exports);
36
+ var vlib = __toESM(require("@vandenberghinc/vlib"));
37
+ var RateLimits;
38
+ (function(RateLimits2) {
39
+ RateLimits2.groups = /* @__PURE__ */ new Map([
40
+ /** The `global` rate settings. */
41
+ ["global", { group: "global", interval: 60, limit: 1e3 }]
42
+ ]);
43
+ function add({
44
+ /** The rate limit group name. */
45
+ group = null,
46
+ /** The maximum requests per rate limit interval. */
47
+ limit = null,
48
+ /** The rate limit interval in seconds. */
49
+ interval = null
50
+ }) {
51
+ const settings = RateLimits2.groups.has(group) ? RateLimits2.groups.get(group) : { group: "", limit: 0, interval: 0 };
52
+ settings.group = group;
53
+ if (limit) {
54
+ settings.limit = limit;
55
+ } else if (!settings.limit) {
56
+ settings.limit = 50;
57
+ }
58
+ if (interval) {
59
+ settings.interval = interval;
60
+ } else if (!settings.interval) {
61
+ settings.interval = 60;
62
+ }
63
+ RateLimits2.groups.set(group, settings);
64
+ return settings;
65
+ }
66
+ RateLimits2.add = add;
67
+ function normalize_ip(ip) {
68
+ let s = strip_brackets_zone_and_port(ip);
69
+ const v4 = try_parse_ipv4_bytes(s);
70
+ if (v4) {
71
+ return ipv4_bytes_to_string(v4);
72
+ }
73
+ const hextets = parse_ipv6_to_hextets(s);
74
+ if (is_ipv4_mapped(hextets)) {
75
+ const b0 = hextets[6] >>> 8 & 255;
76
+ const b1 = hextets[6] & 255;
77
+ const b2 = hextets[7] >>> 8 & 255;
78
+ const b3 = hextets[7] & 255;
79
+ return `${b0}.${b1}.${b2}.${b3}`;
80
+ }
81
+ return ipv6_hextets_to_rfc5952(hextets);
82
+ }
83
+ RateLimits2.normalize_ip = normalize_ip;
84
+ function strip_brackets_zone_and_port(input) {
85
+ let s = input.trim();
86
+ if (s.startsWith("[")) {
87
+ const rb = s.indexOf("]");
88
+ if (rb === -1)
89
+ throw new Error("invalid ip: unmatched closing bracket");
90
+ s = s.slice(1, rb);
91
+ }
92
+ const pct = s.indexOf("%");
93
+ if (pct !== -1)
94
+ s = s.slice(0, pct);
95
+ return s;
96
+ }
97
+ function try_parse_ipv4_bytes(s) {
98
+ let a = 0, b = 0, c = 0, d = 0;
99
+ let val = 0, dots = 0, digits = 0;
100
+ for (let i = 0; i < s.length; i++) {
101
+ const ch = s.charCodeAt(i);
102
+ if (ch === 46) {
103
+ if (digits === 0)
104
+ return null;
105
+ if (dots === 0)
106
+ a = val;
107
+ else if (dots === 1)
108
+ b = val;
109
+ else if (dots === 2)
110
+ c = val;
111
+ else
112
+ return null;
113
+ dots++;
114
+ val = 0;
115
+ digits = 0;
116
+ } else if (ch >= 48 && ch <= 57) {
117
+ val = val * 10 + (ch - 48);
118
+ if (val > 255)
119
+ return null;
120
+ digits++;
121
+ } else {
122
+ return null;
123
+ }
124
+ }
125
+ if (dots !== 3 || digits === 0)
126
+ return null;
127
+ d = val;
128
+ return [a, b, c, d];
129
+ }
130
+ function ipv4_bytes_to_string(bytes) {
131
+ return `${bytes[0]}.${bytes[1]}.${bytes[2]}.${bytes[3]}`;
132
+ }
133
+ function parse_ipv6_to_hextets(s) {
134
+ const dbl = s.indexOf("::");
135
+ const has_double = dbl !== -1;
136
+ if (has_double && s.indexOf("::", dbl + 2) !== -1) {
137
+ throw new Error("invalid ipv6: multiple ::");
138
+ }
139
+ const left_end = has_double ? dbl : s.length;
140
+ const right_start = has_double ? dbl + 2 : s.length;
141
+ const left = parse_ipv6_side_range(s, 0, left_end);
142
+ const right = has_double ? parse_ipv6_side_range(s, right_start, s.length) : [];
143
+ let zeros = 0;
144
+ if (has_double) {
145
+ zeros = 8 - (left.length + right.length);
146
+ if (zeros < 1)
147
+ throw new Error("invalid ipv6: bad :: compression");
148
+ } else {
149
+ if (left.length !== 8)
150
+ throw new Error("invalid ipv6: must have 8 hextets without ::");
151
+ }
152
+ const out = new Array(8);
153
+ let k = 0;
154
+ for (let i = 0; i < left.length; i++)
155
+ out[k++] = left[i];
156
+ for (let i = 0; i < zeros; i++)
157
+ out[k++] = 0;
158
+ for (let i = 0; i < right.length; i++)
159
+ out[k++] = right[i];
160
+ return [
161
+ out[0],
162
+ out[1],
163
+ out[2],
164
+ out[3],
165
+ out[4],
166
+ out[5],
167
+ out[6],
168
+ out[7]
169
+ ];
170
+ }
171
+ function parse_ipv6_side_range(s, start, end) {
172
+ if (start === end)
173
+ return [];
174
+ const out = [];
175
+ let i = start;
176
+ while (i < end) {
177
+ const token_start = i;
178
+ while (i < end && s.charCodeAt(i) !== 58)
179
+ i++;
180
+ const token_end = i;
181
+ if (token_end === token_start)
182
+ throw new Error("invalid ipv6: empty hextet");
183
+ let has_dot = false;
184
+ for (let p = token_start; p < token_end; p++) {
185
+ if (s.charCodeAt(p) === 46) {
186
+ has_dot = true;
187
+ break;
188
+ }
189
+ }
190
+ if (has_dot) {
191
+ if (i !== end)
192
+ throw new Error("invalid ipv6: embedded ipv4 must be last token");
193
+ const bytes = try_parse_ipv4_bytes(s.slice(token_start, token_end));
194
+ if (!bytes)
195
+ throw new Error("invalid ipv6: bad embedded ipv4");
196
+ out.push((bytes[0] << 8 | bytes[1]) & 65535);
197
+ out.push((bytes[2] << 8 | bytes[3]) & 65535);
198
+ } else {
199
+ out.push(parse_hextet_token(s, token_start, token_end));
200
+ }
201
+ if (++i > end)
202
+ break;
203
+ if (out.length > 8)
204
+ throw new Error("invalid ipv6: too many hextets");
205
+ }
206
+ return out;
207
+ }
208
+ function parse_hextet_token(s, start, end) {
209
+ const len = end - start;
210
+ if (len < 1 || len > 4)
211
+ throw new Error("invalid ipv6: hextet size");
212
+ let val = 0;
213
+ for (let i = 0; i < len; i++) {
214
+ const c = s.charCodeAt(start + i);
215
+ let nibble;
216
+ if (c >= 48 && c <= 57)
217
+ nibble = c - 48;
218
+ else if (c >= 97 && c <= 102)
219
+ nibble = 10 + (c - 97);
220
+ else if (c >= 65 && c <= 70)
221
+ nibble = 10 + (c - 65);
222
+ else
223
+ throw new Error("invalid ipv6: non-hex character");
224
+ val = val << 4 | nibble;
225
+ }
226
+ return val & 65535;
227
+ }
228
+ function is_ipv4_mapped(h) {
229
+ return h[0] === 0 && h[1] === 0 && h[2] === 0 && h[3] === 0 && h[4] === 0 && h[5] === 65535;
230
+ }
231
+ function ipv6_hextets_to_rfc5952(h) {
232
+ let best_start = -1, best_len = 0;
233
+ for (let i = 0; i < 8; ) {
234
+ if (h[i] !== 0) {
235
+ i++;
236
+ continue;
237
+ }
238
+ const start = i;
239
+ while (i < 8 && h[i] === 0)
240
+ i++;
241
+ const len = i - start;
242
+ if (len >= 2 && len > best_len) {
243
+ best_start = start;
244
+ best_len = len;
245
+ }
246
+ }
247
+ let out = "";
248
+ for (let i = 0; i < 8; i++) {
249
+ if (best_len && i === best_start) {
250
+ if (i === 0)
251
+ out += "::";
252
+ else
253
+ out += ":::";
254
+ i += best_len - 1;
255
+ continue;
256
+ }
257
+ if (i > 0 && !(best_len && i === best_start + best_len))
258
+ out += ":";
259
+ out += h[i].toString(16);
260
+ }
261
+ if (out === "")
262
+ return "::";
263
+ if (out.startsWith(":::"))
264
+ out = out.slice(1);
265
+ return out;
266
+ }
267
+ })(RateLimits || (RateLimits = {}));
268
+ class RateLimitServer {
269
+ // Static attributes.
270
+ static default_port = 51234;
271
+ // Instance attributes
272
+ ip;
273
+ port;
274
+ https_config;
275
+ server;
276
+ limits;
277
+ ws;
278
+ clear_caches_interval;
279
+ constructor({ port = RateLimitServer.default_port, ip, https, _server }) {
280
+ vlib.schema.validate(arguments[0], {
281
+ unknown: false,
282
+ throw: true,
283
+ schema: {
284
+ port: { type: "number", default: RateLimitServer.default_port },
285
+ ip: { type: "string", required: false },
286
+ https: { type: "any", required: false },
287
+ _server: "object"
288
+ }
289
+ });
290
+ this.ip = ip;
291
+ this.port = port;
292
+ this.https_config = https;
293
+ this.server = _server;
294
+ this.limits = /* @__PURE__ */ new Map();
295
+ }
296
+ /** Assert the server is running. */
297
+ assert_connected() {
298
+ if (!this.ws) {
299
+ throw new Error("The rate limit server is not running.");
300
+ }
301
+ }
302
+ // Start.
303
+ async start() {
304
+ if (!this.server.rate_limit_api_key) {
305
+ throw new Error("Rate limit API key is not defined.");
306
+ }
307
+ this.ws = new vlib.websocket.Server({
308
+ ip: this.ip,
309
+ port: this.port,
310
+ https: this.https_config,
311
+ api_keys: [this.server.rate_limit_api_key],
312
+ rate_limit: {
313
+ limit: 100,
314
+ interval: 60
315
+ }
316
+ });
317
+ this.ws.on_event("listen", (address) => {
318
+ this.server.log(0, `Running on ${address}.`);
319
+ });
320
+ this.ws.on_event("error", (stream, e) => {
321
+ this.server.log.error(e);
322
+ });
323
+ this.ws.on("limit", async (stream, id, data) => {
324
+ this.assert_connected();
325
+ try {
326
+ this.ws.respond({
327
+ stream,
328
+ id,
329
+ data: { response: await this.limit(data.ip, data.groups) }
330
+ });
331
+ } catch (e) {
332
+ this.server.log.error(e);
333
+ this.ws.respond({ stream, id, data: { error: e.message } });
334
+ }
335
+ });
336
+ this.ws.on("reset", async (stream, id, data) => {
337
+ this.assert_connected();
338
+ try {
339
+ await this.reset(data.group);
340
+ this.ws.respond({ stream, id, data: { error: void 0 } });
341
+ } catch (e) {
342
+ this.server.log.error(e);
343
+ this.ws.respond({ stream, id, data: { error: e.message } });
344
+ }
345
+ });
346
+ this.ws.on("reset_all", async (stream, id) => {
347
+ this.assert_connected();
348
+ try {
349
+ await this.reset_all();
350
+ this.ws.respond({ stream, id, data: { error: void 0 } });
351
+ } catch (e) {
352
+ this.server.log.error(e);
353
+ this.ws.respond({ stream, id, data: { error: e.message } });
354
+ }
355
+ });
356
+ await this.ws.start();
357
+ this.clear_caches_interval = setInterval(() => {
358
+ const remove_after = Date.now() + 3600 * 1e3;
359
+ for (const [group, map] of this.limits.entries()) {
360
+ for (const [ip, data] of map.entries()) {
361
+ if (remove_after > data.expiration) {
362
+ map.delete(ip);
363
+ }
364
+ }
365
+ }
366
+ }, 3600 * 1e3);
367
+ }
368
+ // Stop.
369
+ async stop() {
370
+ this.server.log("Stopping the rate limit server.");
371
+ if (this.clear_caches_interval) {
372
+ clearInterval(this.clear_caches_interval);
373
+ }
374
+ if (this.ws) {
375
+ await this.ws.stop();
376
+ this.ws = void 0;
377
+ }
378
+ }
379
+ // Returns null when rate limit is approved, and returns the unix timestamp (as str) of reset when rate limit has been exceeded.
380
+ async limit(ip, groups = [{ group: null, limit: null, interval: null }]) {
381
+ return groups.iterate((rate_limit) => {
382
+ for (let attempts = 2; attempts >= 0; --attempts) {
383
+ try {
384
+ let limits;
385
+ if (this.limits.has(rate_limit.group)) {
386
+ limits = this.limits.get(rate_limit.group);
387
+ } else {
388
+ limits = /* @__PURE__ */ new Map();
389
+ this.limits.set(rate_limit.group, limits);
390
+ }
391
+ const now = Date.now();
392
+ if (limits.has(ip)) {
393
+ let data = limits.get(ip);
394
+ if (now >= data.expiration) {
395
+ data = {
396
+ count: 0,
397
+ expiration: now + rate_limit.interval * 1e3
398
+ };
399
+ }
400
+ ++data.count;
401
+ if (data.count > rate_limit.limit) {
402
+ return data.expiration;
403
+ }
404
+ limits.set(ip, data);
405
+ } else {
406
+ limits.set(ip, {
407
+ count: 1,
408
+ expiration: now + rate_limit.interval * 1e3
409
+ });
410
+ }
411
+ break;
412
+ } catch (e) {
413
+ if (attempts === 0) {
414
+ throw e;
415
+ }
416
+ }
417
+ }
418
+ }) ?? null;
419
+ }
420
+ // Reset a group limit.
421
+ async reset(group) {
422
+ for (const [key, group_limits] of this.limits.entries()) {
423
+ if (key === group) {
424
+ for (const cache of group_limits.values()) {
425
+ cache.count = 0;
426
+ }
427
+ }
428
+ }
429
+ }
430
+ // Reset all rate limit groups.
431
+ async reset_all() {
432
+ for (const group_limits of this.limits.values()) {
433
+ for (const cache of group_limits.values()) {
434
+ cache.count = 0;
435
+ }
436
+ }
437
+ }
438
+ }
439
+ class RateLimitClient {
440
+ ip;
441
+ port;
442
+ https;
443
+ url;
444
+ server;
445
+ ws;
446
+ constructor({ ip, port = RateLimitServer.default_port, https = false, url, _server }) {
447
+ vlib.schema.validate(arguments[0], {
448
+ unknown: false,
449
+ throw: true,
450
+ schema: {
451
+ ip: { type: "string", default: null },
452
+ port: { type: "number", default: RateLimitServer.default_port },
453
+ https: { type: "object", default: null },
454
+ url: { type: "string", default: null },
455
+ _server: "object"
456
+ }
457
+ });
458
+ this.ip = ip ? ip : "localhost";
459
+ this.port = port;
460
+ this.https = https;
461
+ this.url = url;
462
+ this.server = _server;
463
+ }
464
+ /** Assert the client is started & connected. */
465
+ assert_connected() {
466
+ if (!this.ws) {
467
+ throw new Error("The rate limit client is not started.");
468
+ }
469
+ }
470
+ // Start.
471
+ async start() {
472
+ if (!this.server.rate_limit_api_key) {
473
+ throw new Error("Rate limit API key is not defined.");
474
+ }
475
+ this.ws = new vlib.websocket.Client({
476
+ url: this.url ? this.url : `${this.https ? "wss" : "ws"}://${this.ip}:${this.port}`,
477
+ api_key: this.server.rate_limit_api_key,
478
+ reconnect: {
479
+ interval: 10,
480
+ max_interval: 3e4
481
+ },
482
+ ping: true
483
+ });
484
+ this.ws.on_event("error", (e) => {
485
+ this.server.log.error(e);
486
+ });
487
+ this.ws.on_event("reconnect", (e) => {
488
+ this.server.log("Attempting to reconnect with the server.");
489
+ });
490
+ this.ws.on_event("close", () => {
491
+ this.server.log("Websocket closed after exhausting all reconnect attempts.");
492
+ process.exit(1);
493
+ });
494
+ await this.ws.connect();
495
+ }
496
+ // Stop.
497
+ async stop() {
498
+ this.server.log("Stopping the rate limit client.");
499
+ if (this.ws) {
500
+ await this.ws.disconnect();
501
+ this.ws = void 0;
502
+ }
503
+ }
504
+ // Limit function.
505
+ // Returns null when rate limit is approved, and returns the unix timestamp (as str) of reset when rate limit has been exceeded.
506
+ async limit(ip, groups = [{ group: null, limit: null, interval: null }]) {
507
+ this.assert_connected();
508
+ const { data } = await this.ws.request({
509
+ command: "limit",
510
+ timeout: 1e4,
511
+ data: { ip, groups }
512
+ });
513
+ if (data.error) {
514
+ throw new Error(data.error);
515
+ }
516
+ return data.response;
517
+ }
518
+ // Reset a group limit.
519
+ async reset(group) {
520
+ this.assert_connected();
521
+ const { data } = await this.ws.request({
522
+ command: "reset",
523
+ timeout: 1e4,
524
+ data: { group }
525
+ });
526
+ if (data.error) {
527
+ throw new Error(data.error);
528
+ }
529
+ }
530
+ // Reset all rate limit groups.
531
+ async reset_all() {
532
+ this.assert_connected();
533
+ const { data } = await this.ws.request({
534
+ command: "reset_all",
535
+ timeout: 1e4,
536
+ data: {}
537
+ });
538
+ if (data.error) {
539
+ throw new Error(data.error);
540
+ }
541
+ }
542
+ }
543
+ var stdin_default = RateLimits;
544
+ // Annotate the CommonJS export names for ESM import in node:
545
+ 0 && (module.exports = {
546
+ RateLimitClient,
547
+ RateLimitServer,
548
+ RateLimits
549
+ });