@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,66 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ import { Db, MongoClient } from 'mongodb';
6
+ import * as mongodb from "mongodb";
7
+ import { Collection } from "./collection.js";
8
+ import type { Server } from "../server.js";
9
+ export declare namespace Database {
10
+ /** The database constructor options. */
11
+ interface Opts {
12
+ /** The database URI. */
13
+ uri: string;
14
+ /** The additional cient options. */
15
+ client?: mongodb.MongoClientOptions;
16
+ }
17
+ }
18
+ /**
19
+ * The MongoDB database class, accessable under `Server.db`.
20
+ * @docs
21
+ * @nav Backend/Database
22
+ */
23
+ export declare class Database {
24
+ static constructor_scheme: {
25
+ uri: {
26
+ type: string;
27
+ default: null;
28
+ };
29
+ client: {
30
+ type: string;
31
+ default: {};
32
+ };
33
+ _server: {
34
+ type: string[];
35
+ };
36
+ };
37
+ uri: string;
38
+ client_opts?: mongodb.MongoClientOptions;
39
+ server: Server;
40
+ client?: MongoClient;
41
+ _db?: Db;
42
+ collections: Map<string, Collection<any>>;
43
+ _listed_cols: any;
44
+ constructor({ uri, client, _server, }: Database.Opts & {
45
+ _server: Server;
46
+ });
47
+ db(): Promise<Db>;
48
+ connected: boolean;
49
+ private connect_promise?;
50
+ connect(): Promise<void>;
51
+ /** Initialize. */
52
+ initialize(): Promise<void>;
53
+ /** Ensure connection. */
54
+ ensure_connection(): Promise<void>;
55
+ close(): Promise<void>;
56
+ /**
57
+ * {Create Collection}
58
+ * Initialize database collection.
59
+ * @note When called multiple times with the same name, it will return the same cached collection.
60
+ * @param info.unique If true, an error will be thrown if the collection already exists.
61
+ * Defauls to `true`.
62
+ */
63
+ collection<Data extends mongodb.Document = mongodb.Document>(info: string | (Omit<Collection.Opts<Data>, "db"> & {
64
+ unique?: boolean;
65
+ })): Collection<Data>;
66
+ }
@@ -0,0 +1,196 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Libraries.
7
+ // External imports.
8
+ import { MongoClient, ServerApiVersion } from 'mongodb';
9
+ // Imports.
10
+ import { Collection } from "./collection.js";
11
+ /**
12
+ * The MongoDB database class, accessable under `Server.db`.
13
+ * @docs
14
+ * @nav Backend/Database
15
+ */
16
+ export class Database {
17
+ static constructor_scheme = {
18
+ uri: { type: "string", default: null },
19
+ client: { type: "object", default: {} },
20
+ _server: { type: ["object", "undefined"] },
21
+ // source: {type: "string", default: null},
22
+ // config: {type: "object", default: {}},
23
+ // start_args: {type: "array", default: []},
24
+ // preview: {type: "boolean", default: true},
25
+ // preview_ip_whitelist: {type: "array", default: []},
26
+ // daemon: {type: ["object", "boolean"], default: {}},
27
+ };
28
+ // Attributes.
29
+ uri;
30
+ client_opts;
31
+ server;
32
+ client;
33
+ _db;
34
+ collections = new Map();
35
+ // System.
36
+ _listed_cols;
37
+ constructor({ uri, client, _server, }) {
38
+ this.uri = uri;
39
+ this.client_opts = client;
40
+ this.server = _server;
41
+ // DEPRECATED
42
+ // source?: string,
43
+ // config?: Record<string, any>,
44
+ // start_args?: string[],
45
+ // preview?: boolean,
46
+ // preview_ip_whitelist?: string[],
47
+ // daemon?: Record<string, any> | boolean,
48
+ // Checks.
49
+ // if (!_server || (_server.is_primary && uri == null)) {
50
+ // ({uri, config, start_args, config, client} = vlib.Schema.verify({
51
+ // object: arguments[0],
52
+ // check_unknown: true,
53
+ // throw_err: true,
54
+ // scheme: Database.constructor_scheme
55
+ // }));
56
+ // }
57
+ // Arguments.
58
+ // this.preview = preview;
59
+ // this.preview_ip_whitelist = preview_ip_whitelist;
60
+ // this.config = config || {};
61
+ // this.source = source != null ? new vlib.Path(source) : _server?.source.join(".db");
62
+ // this.start_args = start_args;
63
+ // Initialize the service daemon.
64
+ // if (this.server?.daemon && daemon !== false) {
65
+ // const log_source = this.server.source.join(".logs");
66
+ // if (!log_source.exists()) {
67
+ // log_source.mkdir_sync({ recursive: true });
68
+ // }
69
+ // if (!this.server) {
70
+ // throw new Error("Parameter 'Database._server' must be defined for this behaviour.");
71
+ // }
72
+ // this.daemon = new vlib.Daemon({
73
+ // name: this.server.daemon.name + ".mongodb",
74
+ // user: (daemon as Record<string, any>).user || this.server.daemon.user,
75
+ // group: (daemon as Record<string, any>).group || this.server.daemon.group,
76
+ // command: "mongod",
77
+ // cwd: this.server.daemon.cwd,
78
+ // args: ["--config", this.source!.join("mongod.json").str(), ...this.start_args],
79
+ // env: (daemon as Record<string, any>).env || this.server.daemon.env,
80
+ // description: (daemon as Record<string, any>).description || `Service daemon for the mongo database of website ${this.server.domain}.`,
81
+ // auto_restart: true,
82
+ // logs: (daemon as Record<string, any>).logs || log_source.join("logs.mongodb").str(),
83
+ // errors: (daemon as Record<string, any>).errors || log_source.join("errors.mongodb").str(),
84
+ // })
85
+ // }
86
+ }
87
+ // Get the database.
88
+ async db() {
89
+ await this.ensure_connection();
90
+ return this._db;
91
+ }
92
+ // Connect.
93
+ connected = false;
94
+ connect_promise;
95
+ async connect() {
96
+ if (this.connect_promise) {
97
+ return await this.connect_promise;
98
+ }
99
+ return this.connect_promise = new Promise(async (resolve, reject) => {
100
+ try {
101
+ if (this.client == null) {
102
+ throw new Error('MongoDB client is not initialized.');
103
+ }
104
+ await this.client.connect();
105
+ this._db = this.client.db();
106
+ this.connected = true;
107
+ this.server.log(1, "Connected to the database.");
108
+ }
109
+ catch (error) {
110
+ this.server.log.error(error);
111
+ throw new Error('Error connecting to the database');
112
+ }
113
+ });
114
+ }
115
+ /** Initialize. */
116
+ async initialize() {
117
+ // Initialize client (same as before)
118
+ const opts = this.client_opts ?? {};
119
+ opts.serverApi ??= {
120
+ version: ServerApiVersion.v1,
121
+ strict: true,
122
+ deprecationErrors: true,
123
+ };
124
+ if (typeof opts.serverApi === "object") {
125
+ opts.serverApi.version ??= ServerApiVersion.v1;
126
+ opts.serverApi.strict ??= true;
127
+ opts.serverApi.deprecationErrors ??= true;
128
+ }
129
+ // for speeding up connect().
130
+ opts.serverSelectionTimeoutMS = 1000;
131
+ opts.connectTimeoutMS = 1000;
132
+ this.client = new MongoClient(this.uri, opts);
133
+ // In development we start the connection in the background so the server
134
+ // can finish booting immediately. In production we still block.
135
+ if (this.server.production === false) {
136
+ this.connect(); // don’t await
137
+ }
138
+ else {
139
+ await this.connect(); // block in prod
140
+ // In production we also wanna initialize all collections right away.
141
+ for (const col of this.collections.values()) {
142
+ await col.init();
143
+ }
144
+ }
145
+ }
146
+ /** Ensure connection. */
147
+ async ensure_connection() {
148
+ if (this.connected)
149
+ return;
150
+ if (this.connect_promise)
151
+ return this.connect_promise;
152
+ return this.connect();
153
+ }
154
+ // Close.
155
+ async close() {
156
+ this.server.log(0, "Stopping the database.");
157
+ await this.client?.close();
158
+ this.connect_promise = undefined;
159
+ }
160
+ /**
161
+ * {Create Collection}
162
+ * Initialize database collection.
163
+ * @note When called multiple times with the same name, it will return the same cached collection.
164
+ * @param info.unique If true, an error will be thrown if the collection already exists.
165
+ * Defauls to `true`.
166
+ */
167
+ collection(info) {
168
+ // Set name by single string argument.
169
+ let name;
170
+ let unique = true;
171
+ let args;
172
+ if (typeof info === "string") {
173
+ name = info;
174
+ }
175
+ else {
176
+ unique = info.unique ?? true;
177
+ name = info.name;
178
+ args = info;
179
+ }
180
+ // Check collection.
181
+ if (this.collections.has(name)) {
182
+ if (unique) {
183
+ throw new Error(`Collection "${name}" already exists.`);
184
+ }
185
+ return this.collections.get(name);
186
+ }
187
+ // Create collection.
188
+ const col = new Collection({
189
+ name,
190
+ db: this,
191
+ ...args,
192
+ });
193
+ this.collections.set(name, col);
194
+ return col;
195
+ }
196
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ export { StrictFilter } from "./strict_filter.js";
6
+ export { StrictUpdateFilter } from "./strict_update_filter.js";
@@ -0,0 +1,223 @@
1
+ import type { ObjectId, Document as MongoDocument, WithId } from "mongodb";
2
+ type KnownKeys<T> = {
3
+ [K in keyof T]-?: string extends K ? never : number extends K ? never : symbol extends K ? never : K;
4
+ }[keyof T];
5
+ type Comparable = number | bigint | Date;
6
+ type Elem<T> = T extends readonly (infer U)[] ? U : never;
7
+ type IsArray<T> = T extends readonly any[] ? true : false;
8
+ type Defined<T> = Exclude<T, undefined>;
9
+ type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
10
+ type Join<K, P> = K extends string | number ? P extends string | number ? `${K}.${P}` : never : never;
11
+ /** Dot paths over object properties, ignoring arrays. Depth default = 5. */
12
+ export type DotPaths<T, D extends number = 5> = [D] extends [never] ? never : T extends object ? {
13
+ [K in KnownKeys<T>]: T[K] extends object ? IsArray<T[K]> extends true ? K & string : (K & string) | Join<K & string, DotPaths<T[K], Prev[D]>> : K & string;
14
+ }[KnownKeys<T>] : never;
15
+ /** Value type at a given dot-path (subset handles up to depth ~5 cleanly). */
16
+ export type PathValue<T, P extends string> = P extends `${infer K}.${infer R}` ? K extends keyof T ? PathValue<T[K], R> : never : P extends keyof T ? T[P] : never;
17
+ export type BSONTypeName = "double" | "string" | "object" | "array" | "binData" | "undefined" | "objectId" | "bool" | "date" | "null" | "regex" | "dbPointer" | "javascript" | "symbol" | "javascriptWithScope" | "int" | "timestamp" | "long" | "decimal" | "minKey" | "maxKey";
18
+ export type BSONType = BSONTypeName | number;
19
+ export type Position = [number, number] | [number, number, number];
20
+ export type Point = {
21
+ type: "Point";
22
+ coordinates: Position;
23
+ };
24
+ export type LineString = {
25
+ type: "LineString";
26
+ coordinates: Position[];
27
+ };
28
+ export type Polygon = {
29
+ type: "Polygon";
30
+ coordinates: Position[][];
31
+ };
32
+ export type MultiPoint = {
33
+ type: "MultiPoint";
34
+ coordinates: Position[];
35
+ };
36
+ export type MultiLineString = {
37
+ type: "MultiLineString";
38
+ coordinates: Position[][];
39
+ };
40
+ export type MultiPolygon = {
41
+ type: "MultiPolygon";
42
+ coordinates: Position[][][];
43
+ };
44
+ export type Geometry = Point | LineString | Polygon | MultiPoint | MultiLineString | MultiPolygon;
45
+ type AllFieldPaths<T extends MongoDocument> = DotPaths<WithId<T>> | KnownKeys<WithId<T>>;
46
+ export type FieldRef<T extends MongoDocument> = `$${AllFieldPaths<T> & string}`;
47
+ type StrictExprString<T extends MongoDocument> = FieldRef<T> | (string extends infer S ? S extends `${string}` ? S extends FieldRef<T> ? S : never : S : never);
48
+ type NonStrictExprString<T extends MongoDocument, S> = S extends `$${infer Path}` ? Path extends AllFieldPaths<T> ? S : never : S;
49
+ type ExprValue<T extends MongoDocument> = number | boolean | null | Date | StrictExprString<T>;
50
+ /** Strict expression tree for `$expr`. */
51
+ export type Expr<T extends MongoDocument> = ExprValue<T> | Expr<T>[] | {
52
+ $add?: Expr<T>[];
53
+ $subtract?: [Expr<T>, Expr<T>];
54
+ $multiply?: Expr<T>[];
55
+ $divide?: [Expr<T>, Expr<T>];
56
+ $mod?: [Expr<T>, Expr<T>];
57
+ $eq?: [Expr<T>, Expr<T>];
58
+ $ne?: [Expr<T>, Expr<T>];
59
+ $gt?: [Expr<T>, Expr<T>];
60
+ $gte?: [Expr<T>, Expr<T>];
61
+ $lt?: [Expr<T>, Expr<T>];
62
+ $lte?: [Expr<T>, Expr<T>];
63
+ $and?: Expr<T>[];
64
+ $or?: Expr<T>[];
65
+ $not?: Expr<T>;
66
+ $concat?: Expr<T>[];
67
+ $size?: Expr<T>;
68
+ $in?: [Expr<T> | NonStrictExprString<T, string>, Expr<T>];
69
+ $toString?: Expr<T>;
70
+ $toInt?: Expr<T>;
71
+ $toDouble?: Expr<T>;
72
+ $toDecimal?: Expr<T>;
73
+ $toLong?: Expr<T>;
74
+ $toBool?: Expr<T>;
75
+ $toDate?: Expr<T>;
76
+ };
77
+ type BitwiseOps<T> = [T] extends [number | bigint] ? {
78
+ $bitsAllClear?: number;
79
+ $bitsAllSet?: number;
80
+ $bitsAnyClear?: number;
81
+ $bitsAnySet?: number;
82
+ } : {};
83
+ type NumericComparators<T> = [T] extends [Comparable] ? {
84
+ $gt?: T;
85
+ $gte?: T;
86
+ $lt?: T;
87
+ $lte?: T;
88
+ $mod?: T extends number | bigint ? [number, number] : never;
89
+ } : {};
90
+ /**
91
+ * String ops:
92
+ * - `$regex` optional overall, but `$options` is only legal when `$regex` is present.
93
+ */
94
+ type StringRegexOps = {
95
+ $regex: RegExp | string;
96
+ $options?: string;
97
+ } | {
98
+ $regex?: undefined;
99
+ $options?: undefined;
100
+ };
101
+ type StringOps<T> = [T] extends [string] ? StringRegexOps : {};
102
+ type ArrayOps<T> = [T] extends [readonly any[]] ? {
103
+ $size?: number;
104
+ $all?: Elem<T>[];
105
+ $elemMatch?: Elem<T> extends object ? StrictFilter<Elem<T>> | FieldOperators<Elem<T>> : FieldOperators<Elem<T>>;
106
+ $in?: Elem<T>[];
107
+ $nin?: Elem<T>[];
108
+ } : {};
109
+ type ExistsOp = {
110
+ $exists?: boolean;
111
+ };
112
+ /**
113
+ * `$type` differs for string fields for driver-interop:
114
+ * - For string/regex fields, the mongodb driver narrows *`$type`* to **names only** (no numeric codes).
115
+ * - For other fields we allow both numeric codes and names.
116
+ */
117
+ type TypeOpByField<T> = {
118
+ $type?: [Defined<T>] extends [string] ? BSONTypeName | BSONTypeName[] : BSONType | BSONType[];
119
+ };
120
+ /**
121
+ * For arrays, omit $in/$nin here to avoid the `string[][] & string[]` intersection.
122
+ * For union types, properly handle $in and $nin to accept arrays of the union values.
123
+ */
124
+ type EqualityOps<T> = [T] extends [readonly any[]] ? {
125
+ $eq?: T;
126
+ $ne?: T;
127
+ } : {
128
+ $eq?: T;
129
+ $ne?: T;
130
+ $in?: T[];
131
+ $nin?: T[];
132
+ };
133
+ /** Geospatial operators (field-level) */
134
+ type GeoOps = {
135
+ $geoWithin?: {
136
+ $geometry: Geometry;
137
+ } | {
138
+ $box: [Position, Position];
139
+ } | {
140
+ $polygon: Position[];
141
+ } | {
142
+ $centerSphere: [Position, number];
143
+ };
144
+ $geoIntersects?: {
145
+ $geometry: Geometry;
146
+ };
147
+ /**
148
+ * `$near`/`$nearSphere`: accept only GeoJSON Point (+ optional distance bounds).
149
+ * (Unit tests expect raw coordinate arrays to be rejected.)
150
+ */
151
+ $near?: Point & {
152
+ $maxDistance?: number;
153
+ $minDistance?: number;
154
+ };
155
+ $nearSphere?: Point & {
156
+ $maxDistance?: number;
157
+ $minDistance?: number;
158
+ };
159
+ };
160
+ /** Operators excluding equality — used as the inner type for $not */
161
+ type FieldOperatorsBase<T> = ExistsOp & TypeOpByField<T> & NumericComparators<Defined<T>> & StringOps<Defined<T>> & ArrayOps<T extends undefined ? never : T> & BitwiseOps<Defined<T>> & GeoOps;
162
+ type NotInner<T> = Omit<FieldOperatorsBase<T>, "$not">;
163
+ export type FieldOperators<T> = EqualityOps<Defined<T>> & FieldOperatorsBase<T> & {
164
+ /**
165
+ * Field-level $not wrapping EITHER a regex (only for string fields)
166
+ * OR any non-equality operators. (Equality inside $not is not allowed.)
167
+ *
168
+ * This shape also matches the driver's `FilterOperators<string | RegExp | BSONRegExp>`
169
+ * so `StrictFilter<T>` remains assignable to `mongodb.Filter<T>`.
170
+ */
171
+ $not?: (Defined<T> extends string ? RegExp : never) | NotInner<Defined<T>>;
172
+ };
173
+ /** Value OR operators for a given field type.
174
+ * For strings, allow bare RegExp because the driver accepts `{ name: /x/ }`.
175
+ */
176
+ export type FieldCondition<T> = [T] extends [string] ? string | RegExp | FieldOperators<T> : Defined<T> | FieldOperators<T>;
177
+ type IdField = {
178
+ _id?: ObjectId | FieldOperators<ObjectId>;
179
+ };
180
+ type FieldQueryMap<T extends MongoDocument> = {
181
+ [K in KnownKeys<T>]?: FieldCondition<T[K]>;
182
+ };
183
+ type DotPathQueryMap<T extends MongoDocument> = {
184
+ [P in DotPaths<T>]?: FieldCondition<PathValue<T, P>>;
185
+ };
186
+ /**
187
+ * Use `WithId<T>` in logicals for driver interop (driver defines logicals in terms of `Filter<WithId<T>>`).
188
+ * That lets `StrictFilter<T>` be assignable to `Filter<T>` and also makes arrays of `StrictFilter<T>`
189
+ * usable where the driver expects `Filter<WithId<T>>[]` (because `StrictFilter<T>` is a subtype).
190
+ */
191
+ type LogicalOps<T extends MongoDocument> = {
192
+ $and?: StrictFilter<WithId<T>>[];
193
+ $or?: StrictFilter<WithId<T>>[];
194
+ $nor?: StrictFilter<WithId<T>>[];
195
+ };
196
+ /** Top-level evaluation-ish operators accepted by find() / $match */
197
+ type TopEvalOps<T extends MongoDocument> = {
198
+ $expr?: Expr<T>;
199
+ $jsonSchema?: unknown;
200
+ /**
201
+ * Accept a $where function compatible with both our tests (WithId<T>) and the driver
202
+ * (which spells it as WithId<WithId<T>>). The intersection makes it callable as either.
203
+ */
204
+ $where?: string | (((this: WithId<T>) => boolean) & ((this: WithId<WithId<T>>) => boolean));
205
+ $text?: {
206
+ $search: string;
207
+ $language?: string;
208
+ $caseSensitive?: boolean;
209
+ $diacriticSensitive?: boolean;
210
+ };
211
+ $comment?: string;
212
+ };
213
+ /**
214
+ * StrictFilter<T>
215
+ * - Only allows T's declared keys (plus dot paths) and legal top-level operators.
216
+ * - Field operators strictly depend on the field type.
217
+ * - `$expr` has a strongly-typed expression tree with field refs limited to known paths.
218
+ * - Includes support for _id field which is always present in MongoDB documents.
219
+ *
220
+ * NOTE: No string index signatures anywhere — TS excess property checks will catch typos.
221
+ */
222
+ export type StrictFilter<TSchema extends MongoDocument> = IdField & FieldQueryMap<TSchema> & DotPathQueryMap<TSchema> & LogicalOps<TSchema> & TopEvalOps<TSchema>;
223
+ export {};
@@ -0,0 +1,3 @@
1
+ // strict_filter.ts
2
+ // Compile-time only helper types for a fully strict Filter<T> compatible with the mongodb driver.
3
+ export {};
@@ -0,0 +1,165 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ import * as mongodb from 'mongodb';
6
+ /**
7
+ * Helper type for recursive depth limiting
8
+ */
9
+ type PathsPrev = [never, 0, 1, 2, 3, 4];
10
+ /**
11
+ * Extract all valid paths from a schema including nested paths
12
+ * Supports dot notation for nested objects
13
+ */
14
+ type Paths<T, D extends number = 4> = [D] extends [never] ? never : T extends object ? {
15
+ [K in keyof T]-?: K extends string | number ? `${K}` | (T[K] extends object ? T[K] extends ReadonlyArray<any> ? never : Paths<T[K], PathsPrev[D]> extends infer P ? P extends string ? `${K}.${P}` : never : never : never) : never;
16
+ }[keyof T] : '';
17
+ /**
18
+ * Get the value type at a specific path in the schema
19
+ */
20
+ type PathValue<T, P extends string> = P extends keyof T ? T[P] : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? PathValue<T[K], Rest> : never : never;
21
+ /**
22
+ * MongoDB bitwise operations — exactly one of 'and' | 'or' | 'xor',
23
+ * each requiring an integer value per the driver typings.
24
+ */
25
+ type BitwiseOperators = {
26
+ and: mongodb.IntegerType;
27
+ } | {
28
+ or: mongodb.IntegerType;
29
+ } | {
30
+ xor: mongodb.IntegerType;
31
+ };
32
+ /**
33
+ * Create an exact object type that doesn't allow extra properties
34
+ * This is the key to making our types strict
35
+ */
36
+ type Exact<T, Shape = T> = T extends Shape ? T extends infer O ? {
37
+ [K in keyof O]: O[K];
38
+ } & {
39
+ [K in Exclude<keyof T, keyof Shape>]?: never;
40
+ } : never : Shape;
41
+ /**
42
+ * Strict set/update fields
43
+ */
44
+ type SetFields<TSchema> = Exact<{
45
+ [K in Paths<TSchema>]?: PathValue<TSchema, K>;
46
+ }>;
47
+ /**
48
+ * Strict numeric fields for math operations
49
+ */
50
+ type NumericFields<TSchema> = Exact<{
51
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends number | undefined ? K : never]?: number;
52
+ }>;
53
+ /**
54
+ * Strict unset fields
55
+ */
56
+ type UnsetFields<TSchema> = Exact<{
57
+ [K in Paths<TSchema>]?: '' | true | 1;
58
+ }>;
59
+ /**
60
+ * Strict rename fields
61
+ */
62
+ type RenameFields<TSchema> = Exact<{
63
+ [K in Paths<TSchema>]?: string;
64
+ }>;
65
+ /**
66
+ * Strict date fields
67
+ */
68
+ type DateFields<TSchema> = Exact<{
69
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends Date | mongodb.Timestamp | undefined ? K : never]?: true | {
70
+ $type: 'date' | 'timestamp';
71
+ };
72
+ }>;
73
+ /**
74
+ * Strict array fields for array operations
75
+ */
76
+ type ArrayAddFields<TSchema> = Exact<{
77
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends any[] ? K : never]?: PathValue<TSchema, K> extends (infer U)[] ? U | {
78
+ $each: U[];
79
+ } : never;
80
+ }>;
81
+ type ArrayPopFields<TSchema> = Exact<{
82
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends any[] ? K : never]?: 1 | -1;
83
+ }>;
84
+ type ArrayPullFields<TSchema> = Exact<{
85
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends any[] ? K : never]?: PathValue<TSchema, K> extends (infer U)[] ? U | mongodb.FilterOperators<U> : never;
86
+ }>;
87
+ type ArrayPushFields<TSchema> = Exact<{
88
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends any[] ? K : never]?: PathValue<TSchema, K> extends (infer U)[] ? U | mongodb.ArrayOperator<PathValue<TSchema, K>> : never;
89
+ }>;
90
+ type ArrayPullAllFields<TSchema> = Exact<{
91
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends any[] ? K : never]?: PathValue<TSchema, K> extends (infer U)[] ? U[] : never;
92
+ }>;
93
+ /**
94
+ * Strict bit fields
95
+ */
96
+ type BitFields<TSchema> = Exact<{
97
+ [K in Paths<TSchema> as PathValue<TSchema, K> extends number | undefined ? K : never]?: BitwiseOperators;
98
+ }>;
99
+ /**
100
+ * Strict version of MongoDB UpdateFilter that only allows updating existing fields
101
+ * @template TSchema - The document schema type
102
+ */
103
+ export type StrictUpdateFilter<TSchema> = Exact<{
104
+ /**
105
+ * The $set operator replaces the value of a field with the specified value.
106
+ */
107
+ $set?: SetFields<TSchema>;
108
+ /**
109
+ * The $setOnInsert operator assigns values to fields during an upsert only when inserting a new document.
110
+ */
111
+ $setOnInsert?: SetFields<TSchema>;
112
+ /**
113
+ * The $unset operator deletes a particular field.
114
+ */
115
+ $unset?: UnsetFields<TSchema>;
116
+ /**
117
+ * The $inc operator increments a field by a specified value.
118
+ */
119
+ $inc?: NumericFields<TSchema>;
120
+ /**
121
+ * The $mul operator multiplies the value of a field by a number.
122
+ */
123
+ $mul?: NumericFields<TSchema>;
124
+ /**
125
+ * The $min operator updates the value of the field to a specified value if the specified value is less than the current value of the field.
126
+ */
127
+ $min?: SetFields<TSchema>;
128
+ /**
129
+ * The $max operator updates the value of the field to a specified value if the specified value is greater than the current value of the field.
130
+ */
131
+ $max?: SetFields<TSchema>;
132
+ /**
133
+ * The $currentDate operator sets the value of a field to the current date.
134
+ */
135
+ $currentDate?: DateFields<TSchema>;
136
+ /**
137
+ * The $rename operator updates the name of a field.
138
+ */
139
+ $rename?: RenameFields<TSchema>;
140
+ /**
141
+ * The $addToSet operator adds a value to an array unless the value is already present.
142
+ */
143
+ $addToSet?: ArrayAddFields<TSchema>;
144
+ /**
145
+ * The $pop operator removes the first or last element of an array.
146
+ */
147
+ $pop?: ArrayPopFields<TSchema>;
148
+ /**
149
+ * The $pull operator removes from an array all instances of a value or values that match a specified condition.
150
+ */
151
+ $pull?: ArrayPullFields<TSchema>;
152
+ /**
153
+ * The $push operator appends a specified value to an array.
154
+ */
155
+ $push?: ArrayPushFields<TSchema>;
156
+ /**
157
+ * The $pullAll operator removes all instances of the specified values from an array.
158
+ */
159
+ $pullAll?: ArrayPullAllFields<TSchema>;
160
+ /**
161
+ * The $bit operator performs a bitwise update of a field.
162
+ */
163
+ $bit?: BitFields<TSchema>;
164
+ }>;
165
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ export {};