@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,405 @@
1
+ // ============================================================================
2
+ // StrictUpdateFilter Tests - Should FAIL (produce TypeScript errors)
3
+ // ============================================================================
4
+ // Test 5: Unknown field in $set
5
+ const failUpdate1 = {
6
+ $set: {
7
+ // @ts-expect-error - 'unknown' does not exist in TestSchema
8
+ unknown: true,
9
+ }
10
+ };
11
+ // Test 6: Unknown nested field in $set
12
+ const failUpdate2 = {
13
+ $set: {
14
+ // @ts-expect-error - 'profile.unknown' is not a valid path
15
+ 'profile.unknown': 'value',
16
+ }
17
+ };
18
+ // Test 7: Unknown field in $inc
19
+ const failUpdate3 = {
20
+ $inc: {
21
+ // @ts-expect-error - 'unknownNumber' does not exist
22
+ unknownNumber: 1,
23
+ }
24
+ };
25
+ // Test 8: Using $inc on non-numeric field
26
+ const failUpdate4 = {
27
+ $inc: {
28
+ // @ts-expect-error - 'name' is a string, not a number
29
+ name: 1,
30
+ }
31
+ };
32
+ // Test 9: Unknown field in $unset
33
+ const failUpdate5 = {
34
+ $unset: {
35
+ // @ts-expect-error - 'notAField' does not exist
36
+ notAField: true,
37
+ }
38
+ };
39
+ // Test 10: Unknown field in $push
40
+ const failUpdate6 = {
41
+ $push: {
42
+ // @ts-expect-error - 'unknownArray' does not exist
43
+ unknownArray: 'item',
44
+ }
45
+ };
46
+ // Test 11: Using $push on non-array field
47
+ const failUpdate7 = {
48
+ $push: {
49
+ // @ts-expect-error - 'name' is not an array
50
+ name: 'value',
51
+ }
52
+ };
53
+ // Test 12: Unknown field in $pull
54
+ const failUpdate8 = {
55
+ $pull: {
56
+ // @ts-expect-error - 'fakeArray' does not exist
57
+ fakeArray: 'item',
58
+ }
59
+ };
60
+ // Test 13: Unknown field in $rename
61
+ const failUpdate9 = {
62
+ $rename: {
63
+ // @ts-expect-error - 'oldField' does not exist
64
+ oldField: 'newField',
65
+ }
66
+ };
67
+ // Test 14: Unknown field in $currentDate
68
+ const failUpdate10 = {
69
+ $currentDate: {
70
+ // @ts-expect-error - 'timestamp' does not exist
71
+ timestamp: true,
72
+ }
73
+ };
74
+ // Test 15: Using $currentDate on non-date field
75
+ const failUpdate11 = {
76
+ $currentDate: {
77
+ // @ts-expect-error - 'name' is not a Date field
78
+ name: true,
79
+ }
80
+ };
81
+ // Test 16: Unknown field in $mul
82
+ const failUpdate12 = {
83
+ $mul: {
84
+ // @ts-expect-error - 'multiplier' does not exist
85
+ multiplier: 2,
86
+ }
87
+ };
88
+ // Test 17: Using $mul on non-numeric field
89
+ const failUpdate13 = {
90
+ $mul: {
91
+ // @ts-expect-error - 'isActive' is boolean, not number
92
+ isActive: 2,
93
+ }
94
+ };
95
+ // Test 18: Unknown field in $min
96
+ const failUpdate14 = {
97
+ $min: {
98
+ // @ts-expect-error - 'minimum' does not exist
99
+ minimum: 10,
100
+ }
101
+ };
102
+ // Test 19: Unknown field in $max
103
+ const failUpdate15 = {
104
+ $max: {
105
+ // @ts-expect-error - 'maximum' does not exist
106
+ maximum: 100,
107
+ }
108
+ };
109
+ // Test 20: Unknown field in $addToSet
110
+ const failUpdate16 = {
111
+ $addToSet: {
112
+ // @ts-expect-error - 'collection' does not exist
113
+ collection: 'item',
114
+ }
115
+ };
116
+ // Test 21: Using $pop on non-array field
117
+ const failUpdate17 = {
118
+ $pop: {
119
+ // @ts-expect-error - 'age' is not an array
120
+ age: 1,
121
+ }
122
+ };
123
+ // Test 22: Unknown field in $pullAll
124
+ const failUpdate18 = {
125
+ $pullAll: {
126
+ // @ts-expect-error - 'list' does not exist
127
+ list: ['item1', 'item2'],
128
+ }
129
+ };
130
+ // Test 23: Unknown field in $bit
131
+ const failUpdate19 = {
132
+ $bit: {
133
+ // @ts-expect-error - 'bitField' does not exist
134
+ bitField: { and: 5 },
135
+ }
136
+ };
137
+ // Test 24: Using $bit on non-numeric field
138
+ const failUpdate20 = {
139
+ $bit: {
140
+ // @ts-expect-error - 'name' is not a number
141
+ name: { or: 3 },
142
+ }
143
+ };
144
+ // ============================================================================
145
+ // Valid Tests - Should PASS (no TypeScript errors)
146
+ // ============================================================================
147
+ // Valid $set update
148
+ const validUpdate1 = {
149
+ $set: {
150
+ name: 'Jane',
151
+ age: 25,
152
+ 'profile.email': 'jane@example.com',
153
+ 'profile.address.street': '123 Main St',
154
+ }
155
+ };
156
+ // Valid $inc update
157
+ const validUpdate2 = {
158
+ $inc: {
159
+ age: 1,
160
+ 'profile.address.zip': 100,
161
+ }
162
+ };
163
+ // Valid $push and $pull
164
+ const validUpdate3 = {
165
+ $push: {
166
+ tags: 'new-tag',
167
+ scores: 95,
168
+ },
169
+ $pull: {
170
+ tags: 'old-tag',
171
+ }
172
+ };
173
+ // Valid $unset
174
+ const validUpdate4 = {
175
+ $unset: {
176
+ description: true,
177
+ deletedAt: '',
178
+ }
179
+ };
180
+ // Valid $currentDate
181
+ const validUpdate5 = {
182
+ $currentDate: {
183
+ createdAt: true,
184
+ deletedAt: { $type: 'date' },
185
+ }
186
+ };
187
+ // Valid $min and $max
188
+ const validUpdate6 = {
189
+ $min: {
190
+ age: 0,
191
+ },
192
+ $max: {
193
+ age: 120,
194
+ }
195
+ };
196
+ // Valid $mul
197
+ const validUpdate7 = {
198
+ $mul: {
199
+ age: 1.5,
200
+ 'profile.address.zip': 2,
201
+ }
202
+ };
203
+ // Valid $rename
204
+ const validUpdate8 = {
205
+ $rename: {
206
+ name: 'fullName',
207
+ 'profile.email': 'contact',
208
+ }
209
+ };
210
+ // Valid $addToSet
211
+ const validUpdate9 = {
212
+ $addToSet: {
213
+ tags: 'unique-tag',
214
+ scores: { $each: [100, 95, 90] },
215
+ }
216
+ };
217
+ // Valid $pop
218
+ const validUpdate10 = {
219
+ $pop: {
220
+ tags: 1,
221
+ scores: -1,
222
+ }
223
+ };
224
+ // Valid $pullAll
225
+ const validUpdate11 = {
226
+ $pullAll: {
227
+ tags: ['tag1', 'tag2'],
228
+ scores: [0, 50],
229
+ }
230
+ };
231
+ // Valid $bit
232
+ const validUpdate12 = {
233
+ $bit: {
234
+ age: { and: 5 },
235
+ 'profile.address.zip': { or: 100 },
236
+ }
237
+ };
238
+ // Valid complex update with multiple operators
239
+ const validUpdate13 = {
240
+ $set: {
241
+ name: 'Updated Name',
242
+ 'profile.email': 'new@example.com',
243
+ },
244
+ $inc: {
245
+ age: 1,
246
+ },
247
+ $push: {
248
+ tags: 'new',
249
+ },
250
+ $unset: {
251
+ description: true,
252
+ },
253
+ $currentDate: {
254
+ createdAt: true,
255
+ }
256
+ };
257
+ // Valid $setOnInsert
258
+ const validUpdate14 = {
259
+ $setOnInsert: {
260
+ // id: 'new-id',
261
+ name: 'Default Name',
262
+ age: 0,
263
+ 'profile.email': 'default@example.com',
264
+ }
265
+ };
266
+ // ============================================================================
267
+ // ADDITIONAL NEGATIVE TESTS (Should FAIL)
268
+ // ============================================================================
269
+ // Wrong value type pushed into number[] array
270
+ const failUpdate21 = {
271
+ $push: {
272
+ // @ts-expect-error - scores is number[], cannot push string
273
+ scores: 'oops',
274
+ }
275
+ };
276
+ // Wrong $each element type in $addToSet for number[]
277
+ const failUpdate22 = {
278
+ $addToSet: {
279
+ // @ts-expect-error - scores is number[], $each expects number[]
280
+ scores: { $each: ['100'] },
281
+ }
282
+ };
283
+ // Wrong $type option for $currentDate
284
+ const failUpdate23 = {
285
+ $currentDate: {
286
+ // @ts-expect-error - only 'date' | 'timestamp' are allowed
287
+ createdAt: { $type: 'now' },
288
+ }
289
+ };
290
+ // Wrong value for $unset (must be '' | true | 1)
291
+ const failUpdate24 = {
292
+ $unset: {
293
+ // @ts-expect-error - invalid unset spec
294
+ name: 2,
295
+ }
296
+ };
297
+ // Wrong value for $pop (must be 1 or -1)
298
+ const failUpdate25 = {
299
+ $pop: {
300
+ // @ts-expect-error - only 1 or -1 are allowed
301
+ tags: 0,
302
+ }
303
+ };
304
+ // ============================================================================
305
+ // ADDITIONAL POSITIVE TESTS (Should PASS)
306
+ // ============================================================================
307
+ // $push with $each on string[]
308
+ const validUpdate15 = {
309
+ $push: {
310
+ tags: { $each: ['x', 'y'] },
311
+ }
312
+ };
313
+ // $addToSet for array of objects
314
+ const validUpdate16 = {
315
+ $addToSet: {
316
+ items: { id: 'sku-1', quantity: 2 },
317
+ }
318
+ };
319
+ // $addToSet with $each for array of objects
320
+ const validUpdate17 = {
321
+ $addToSet: {
322
+ items: {
323
+ $each: [
324
+ { id: 'sku-2', quantity: 1 },
325
+ { id: 'sku-3', quantity: 5 },
326
+ ]
327
+ }
328
+ }
329
+ };
330
+ // $pull using operator on primitive array
331
+ const validUpdate18 = {
332
+ $pull: {
333
+ tags: { $in: ['legacy', 'old'] },
334
+ scores: { $gt: 100 },
335
+ }
336
+ };
337
+ // $min/$max on Date field
338
+ const validUpdate19 = {
339
+ $min: { createdAt: new Date(0) },
340
+ $max: { createdAt: new Date() },
341
+ };
342
+ // $rename on deep nested field
343
+ const validUpdate20 = {
344
+ $rename: {
345
+ 'profile.address.street': 'streetLine1',
346
+ }
347
+ };
348
+ // StrictUpdateFilter → mongodb.UpdateFilter
349
+ const strictUpdateForCast = {
350
+ $set: { name: 'Cast OK' },
351
+ $inc: { age: 1 },
352
+ };
353
+ const mongoUpdateCast = strictUpdateForCast;
354
+ const strictUpdateForUpdateMany = {
355
+ $set: { name: 'Overload OK' },
356
+ $inc: { age: 2 },
357
+ };
358
+ void colX.updateMany({ id: 'abc' }, strictUpdateForUpdateMany, {});
359
+ function update_test_1(filter, update_filter) {
360
+ colX.updateMany(filter, update_filter, {});
361
+ }
362
+ const okStrictUpdateConcrete = {
363
+ $set: { name: "Overload OK" },
364
+ $inc: { age: 2 },
365
+ };
366
+ function genericSaveRepro(filter, op) {
367
+ const bulkOp = {
368
+ updateOne: {
369
+ filter,
370
+ update: op, // <- This is where TS2322 shows up pre-fix
371
+ upsert: true,
372
+ },
373
+ };
374
+ // @ts-expect-error – pre-fix: StrictUpdateFilter<Data> not assignable to UpdateFilter<Data>
375
+ acceptsBulk(bulkOp);
376
+ // Also directly:
377
+ // @ts-expect-error – pre-fix: same reason
378
+ const _direct = bulkOp;
379
+ // And findOneAndUpdate:
380
+ const colGeneric = null;
381
+ // @ts-expect-error – pre-fix: StrictUpdateFilter<Data> not assignable to UpdateFilter<Data>
382
+ colGeneric.findOneAndUpdate(filter, op);
383
+ }
384
+ // ----- $currentDate guardrails still behave -----
385
+ {
386
+ // OK: $currentDate on date field
387
+ const okCD = {
388
+ $currentDate: { "createdAt": true },
389
+ };
390
+ const badCD = {
391
+ // @ts-expect-error – should be rejected: $currentDate on non-date field
392
+ $currentDate: { "name": true },
393
+ };
394
+ }
395
+ const ok_query = {
396
+ $set: {
397
+ max: 0,
398
+ interval: 0,
399
+ },
400
+ $setOnInsert: {
401
+ usage: 0,
402
+ start: 0,
403
+ },
404
+ };
405
+ export {};
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ /**
6
+ * Flatten a nested object to a flat `key.subkey` like object, suitable for {@link set} and {@link save} $inc operations.
7
+ * @param obj The object to flatten.
8
+ * @param prefix The prefix to use for the keys, used for recursive calls, new keys will be formatted as `{prefix}.key`.
9
+ * @returns A flat object with keys in the format `key.subkey`.
10
+ * @example
11
+ * const nested = { a: { b: 1, c: { d: 2 } }, e: 3 };
12
+ * const flat = flatten(nested);
13
+ * // flat = { 'a.b': 1, 'a.c.d': 2, 'e': 3 }
14
+ */
15
+ export declare function flatten<T extends Record<string, any>>(obj: T, prefix?: string): FlattenToDotNotation<T>;
16
+ export declare function flatten<T extends Record<string, any>, const Prefix extends string>(obj: T, prefix: Prefix): FlattenToDotNotation<T, Prefix>;
17
+ /**
18
+ * Convert union to intersection
19
+ */
20
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
21
+ /**
22
+ * Check if a type should be flattened (is a plain object, not a primitive or array)
23
+ */
24
+ type IsPlainObject<T> = T extends string | number | boolean | bigint | symbol | null | undefined | Date | RegExp | Function | any[] ? false : T extends object ? true : false;
25
+ /** Make all properties optional (used when recursing through optional parents) */
26
+ type MakeOptional<T> = {
27
+ [P in keyof T]?: T[P];
28
+ };
29
+ /** Depth decrementer for 25 levels: Prev25[N] = N - 1, Prev25[0] = never */
30
+ type Prev25 = [
31
+ never,
32
+ 0,
33
+ 1,
34
+ 2,
35
+ 3,
36
+ 4,
37
+ 5,
38
+ 6,
39
+ 7,
40
+ 8,
41
+ 9,
42
+ 10,
43
+ 11,
44
+ 12,
45
+ 13,
46
+ 14,
47
+ 15,
48
+ 16,
49
+ 17,
50
+ 18,
51
+ 19,
52
+ 20,
53
+ 21,
54
+ 22,
55
+ 23,
56
+ 24,
57
+ 25
58
+ ];
59
+ /** Remove undefined from a type (used before object checks) */
60
+ type NonU<T> = Exclude<T, undefined>;
61
+ /**
62
+ * Create dot notation paths from an object type.
63
+ * - Handles optional parents by making *all* their dotted children optional.
64
+ * - Stops recursing at depth 25.
65
+ */
66
+ export type FlattenToDotNotation<T, Path extends string = "", D extends number = 25> = [
67
+ D
68
+ ] extends [never] ? {} : T extends object ? UnionToIntersection<{
69
+ [K in keyof T]-?: K extends string | number ? (T[K] extends infer Raw ? (IsPlainObject<NonU<Raw>> extends true ? (undefined extends Raw ? MakeOptional<FlattenToDotNotation<NonU<Raw>, Path extends "" ? `${K}` : `${Path}.${K}`, Prev25[D]>> : FlattenToDotNotation<NonU<Raw>, Path extends "" ? `${K}` : `${Path}.${K}`, Prev25[D]>) : (undefined extends Raw ? {
70
+ [P in (Path extends "" ? `${K}` : `${Path}.${K}`)]?: NonU<Raw>;
71
+ } : {
72
+ [P in (Path extends "" ? `${K}` : `${Path}.${K}`)]: Raw;
73
+ })) : never) : never;
74
+ }[keyof T]> : T;
75
+ export {};
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @author Daan van den Bergh
3
+ * @copyright © 2022 - 2025 Daan van den Bergh.
4
+ */
5
+ import * as vlib from "@vandenberghinc/vlib";
6
+ export function flatten(obj, prefix = "") {
7
+ if (typeof obj !== "object" || obj == null || Array.isArray(obj)) {
8
+ vlib.schema.throw_invalid_type("obj", obj, "object", true);
9
+ }
10
+ const result = {};
11
+ for (const key in obj) {
12
+ if (!Object.hasOwn(obj, key))
13
+ continue; // ES2022
14
+ if (vlib.object.is_plain(obj[key])) {
15
+ Object.assign(result, flatten(obj[key], prefix ? `${prefix}.${key}` : key));
16
+ }
17
+ else {
18
+ result[prefix ? `${prefix}.${key}` : key] = obj[key];
19
+ }
20
+ }
21
+ return result;
22
+ }
@@ -0,0 +1,174 @@
1
+ // Valid assignments
2
+ const validSimple1 = {
3
+ x: true,
4
+ "y.z": 42
5
+ };
6
+ const validSimple2 = {
7
+ x: false,
8
+ "y.z": -100
9
+ };
10
+ // Invalid assignments - should produce TypeScript errors
11
+ // @ts-expect-error - missing required field "y.z"
12
+ const invalidSimple1 = {
13
+ x: true
14
+ };
15
+ const invalidSimple2 = {
16
+ x: true,
17
+ // @ts-expect-error - "y.z" should be number, not string
18
+ "y.z": "not a number"
19
+ };
20
+ const invalidSimple3 = {
21
+ x: true,
22
+ "y.z": 42,
23
+ // @ts-expect-error - "unknown" field doesn't exist
24
+ unknown: "field"
25
+ };
26
+ // Valid assignments
27
+ const validDeep1 = {
28
+ "level1.level2.level3.level4.value": "test",
29
+ "level1.level2.level3.level4.count": 10,
30
+ "level1.level2.level3.flag": true,
31
+ "level1.sibling": "hello",
32
+ top: 5
33
+ };
34
+ // Invalid assignments
35
+ // @ts-expect-error - missing required fields
36
+ const invalidDeep1 = {
37
+ top: 5
38
+ };
39
+ const invalidDeep2 = {
40
+ "level1.level2.level3.level4.value": "test",
41
+ "level1.level2.level3.level4.count": 10,
42
+ "level1.level2.level3.flag": true,
43
+ "level1.sibling": "hello",
44
+ top: 5,
45
+ // @ts-expect-error - "level1.level2.unknown" doesn't exist
46
+ "level1.level2.unknown": "nope"
47
+ };
48
+ // Valid assignments
49
+ const validMixed1 = {
50
+ name: "John",
51
+ age: 30,
52
+ tags: ["user", "admin"],
53
+ "profile.email": "john@example.com",
54
+ "profile.nested_tags": ["user", "admin"],
55
+ "profile.settings.theme": "dark",
56
+ "profile.settings.notifications": true
57
+ };
58
+ const validMixed2 = {
59
+ name: "Jane",
60
+ age: 25,
61
+ tags: ["x"],
62
+ "profile.nested_tags": ["x"],
63
+ "profile.email": "jane@example.com",
64
+ "profile.settings.theme": "light",
65
+ "profile.settings.notifications": false,
66
+ "metadata.created": new Date(),
67
+ "metadata.updated": new Date()
68
+ };
69
+ // Invalid assignments
70
+ const invalidMixed1 = {
71
+ name: "Test",
72
+ age: 20,
73
+ // @ts-expect-error - tags should be string[], not number[]
74
+ tags: [1, 2, 3],
75
+ "profile.email": "test@example.com",
76
+ "profile.settings.theme": "dark",
77
+ "profile.settings.notifications": false,
78
+ };
79
+ const invalidMixed1_1 = {
80
+ name: "Test",
81
+ age: 20,
82
+ "profile.email": "test@example.com",
83
+ "profile.settings.theme": "dark",
84
+ "profile.settings.notifications": false,
85
+ // @ts-expect-error - "profile.UNKNOWN_nested_tags" does not exist
86
+ "profile.UNKNOWN_nested_tags": ["user", "admin"],
87
+ };
88
+ const invalidMixed2 = {
89
+ name: "Test",
90
+ age: 20,
91
+ tags: ["tag"],
92
+ "profile.email": "test@example.com",
93
+ // @ts-expect-error - theme must be "dark" | "light", not "blue"
94
+ "profile.settings.theme": "blue",
95
+ "profile.settings.notifications": false
96
+ };
97
+ // Valid complex assignment
98
+ const validUser = {
99
+ id: "user123",
100
+ "personal.firstName": "John",
101
+ "personal.lastName": "Doe",
102
+ "personal.dateOfBirth": new Date("1990-01-01"),
103
+ "personal.contact.email": "john@example.com",
104
+ "personal.contact.address.street": "123 Main St",
105
+ "personal.contact.address.city": "New York",
106
+ "personal.contact.address.country": "USA",
107
+ "personal.contact.address.postal.code": "10001",
108
+ "preferences.language": "en",
109
+ "preferences.timezone": "America/New_York",
110
+ "preferences.privacy.shareEmail": true,
111
+ "preferences.privacy.sharePhone": false,
112
+ "preferences.privacy.visibility": "friends",
113
+ "stats.loginCount": 42,
114
+ "stats.lastLogin": new Date(),
115
+ "stats.accountAge": 365
116
+ };
117
+ // Invalid complex assignments
118
+ const invalidUser1 = {
119
+ id: "user123",
120
+ "personal.firstName": "John",
121
+ "personal.lastName": "Doe",
122
+ "personal.dateOfBirth": new Date("1990-01-01"),
123
+ "personal.contact.email": "john@example.com",
124
+ "personal.contact.address.street": "123 Main St",
125
+ "personal.contact.address.city": "New York",
126
+ "personal.contact.address.country": "USA",
127
+ "personal.contact.address.postal.code": "10001",
128
+ // @ts-expect-error - language must be "en" | "es" | "fr", not "de"
129
+ "preferences.language": "de",
130
+ "preferences.timezone": "America/New_York",
131
+ "preferences.privacy.shareEmail": true,
132
+ "preferences.privacy.sharePhone": false,
133
+ "preferences.privacy.visibility": "friends",
134
+ "stats.loginCount": 42,
135
+ "stats.lastLogin": new Date(),
136
+ "stats.accountAge": 365
137
+ };
138
+ const invalidUser2 = {
139
+ id: "user123",
140
+ "personal.firstName": "John",
141
+ "personal.lastName": "Doe",
142
+ "personal.dateOfBirth": new Date("1990-01-01"),
143
+ "personal.contact.email": "john@example.com",
144
+ "personal.contact.address.street": "123 Main St",
145
+ "personal.contact.address.city": "New York",
146
+ "personal.contact.address.country": "USA",
147
+ "personal.contact.address.postal.code": "10001",
148
+ "preferences.language": "en",
149
+ "preferences.timezone": "America/New_York",
150
+ "preferences.privacy.shareEmail": true,
151
+ "preferences.privacy.sharePhone": false,
152
+ // @ts-expect-error - visibility must be "public" | "private" | "friends", not "hidden"
153
+ "preferences.privacy.visibility": "hidden",
154
+ "stats.loginCount": 42,
155
+ "stats.lastLogin": new Date(),
156
+ "stats.accountAge": 365
157
+ };
158
+ const validVeryDeep = {
159
+ "l1.l2.l3.l4.l5.l6.l7.l8.l9.l10.l11.l12.l13.l14.l15.l16.l17.l18.l19.l20.l21.l22.l23.l24.l25.value": "deep!"
160
+ };
161
+ // Both should be valid
162
+ const validOptional1 = {
163
+ required: "yes"
164
+ };
165
+ const validOptional2 = {
166
+ required: "yes",
167
+ "optional.nested.value": 42
168
+ };
169
+ // Invalid optional usage
170
+ // @ts-expect-error - "required" is missing
171
+ const invalidOptional = {
172
+ "optional.nested.value": 42
173
+ };
174
+ export {};