@vandenberghinc/volt 1.2.6 → 1.2.7

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 (462) hide show
  1. package/backend/dist/cjs/backend/src/blacklist.d.ts +12 -0
  2. package/backend/dist/cjs/backend/src/blacklist.js +78 -0
  3. package/backend/dist/cjs/backend/src/cli.d.ts +2 -0
  4. package/backend/dist/cjs/backend/src/cli.js +198 -0
  5. package/backend/dist/cjs/backend/src/database/collection.d.ts +1765 -0
  6. package/backend/dist/cjs/backend/src/database/collection.js +3301 -0
  7. package/backend/dist/cjs/backend/src/database/database.d.ts +92 -0
  8. package/backend/dist/cjs/backend/src/database/database.js +170 -0
  9. package/backend/dist/cjs/backend/src/database/document.d.ts +1 -0
  10. package/backend/dist/cjs/backend/src/database/document.js +15 -0
  11. package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
  12. package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
  13. package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
  14. package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
  15. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  16. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
  17. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  18. package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
  19. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  20. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
  21. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  22. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
  23. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  24. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
  25. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  26. package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
  27. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  28. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
  29. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  30. package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
  31. package/backend/dist/cjs/backend/src/database/flatten.d.ts +78 -0
  32. package/backend/dist/cjs/backend/src/database/flatten.js +53 -0
  33. package/backend/dist/cjs/backend/src/database/flatten_test.d.ts +1 -0
  34. package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
  35. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.d.ts +533 -0
  36. package/backend/dist/cjs/backend/src/database/quota/quoata_v2.js +1046 -0
  37. package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +551 -0
  38. package/backend/dist/cjs/backend/src/database/quota/quota.js +1108 -0
  39. package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
  40. package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
  41. package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +412 -0
  42. package/backend/dist/cjs/backend/src/database/quota/safe_int.js +745 -0
  43. package/backend/dist/cjs/backend/src/endpoint.d.ts +346 -0
  44. package/backend/dist/cjs/backend/src/endpoint.js +468 -0
  45. package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
  46. package/backend/dist/cjs/backend/src/errors/index.js +25 -0
  47. package/backend/dist/cjs/backend/src/errors/internal_external.d.ts +52 -0
  48. package/backend/dist/cjs/backend/src/errors/internal_external.js +95 -0
  49. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +41 -0
  50. package/backend/dist/cjs/backend/src/errors/invalid_usage_error.js +47 -0
  51. package/backend/dist/cjs/backend/src/errors/system_error.d.ts +261 -0
  52. package/backend/dist/cjs/backend/src/errors/system_error.js +436 -0
  53. package/backend/dist/cjs/backend/src/events.d.ts +97 -0
  54. package/backend/dist/cjs/backend/src/events.js +15 -0
  55. package/backend/dist/cjs/backend/src/frontend.d.ts +13 -0
  56. package/backend/dist/cjs/backend/src/frontend.js +56 -0
  57. package/backend/dist/cjs/backend/src/image_endpoint.d.ts +44 -0
  58. package/backend/dist/cjs/backend/src/image_endpoint.js +185 -0
  59. package/backend/dist/cjs/backend/src/index.d.ts +23 -0
  60. package/backend/dist/cjs/backend/src/index.js +70 -0
  61. package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
  62. package/backend/dist/cjs/backend/src/logger.js +15 -0
  63. package/backend/dist/cjs/backend/src/meta.d.ts +112 -0
  64. package/backend/dist/cjs/backend/src/meta.js +181 -0
  65. package/backend/dist/cjs/backend/src/payments/paddle.d.ts +329 -0
  66. package/backend/dist/cjs/backend/src/payments/paddle.js +1996 -0
  67. package/backend/dist/cjs/backend/src/payments/stripe/checkout.d.ts +113 -0
  68. package/backend/dist/cjs/backend/src/payments/stripe/checkout.js +295 -0
  69. package/backend/dist/cjs/backend/src/payments/stripe/customers.d.ts +17 -0
  70. package/backend/dist/cjs/backend/src/payments/stripe/customers.js +164 -0
  71. package/backend/dist/cjs/backend/src/payments/stripe/error.d.ts +74 -0
  72. package/backend/dist/cjs/backend/src/payments/stripe/error.js +64 -0
  73. package/backend/dist/cjs/backend/src/payments/stripe/events.d.ts +155 -0
  74. package/backend/dist/cjs/backend/src/payments/stripe/events.js +15 -0
  75. package/backend/dist/cjs/backend/src/payments/stripe/meters.d.ts +105 -0
  76. package/backend/dist/cjs/backend/src/payments/stripe/meters.js +230 -0
  77. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  78. package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.js +109 -0
  79. package/backend/dist/cjs/backend/src/payments/stripe/products.d.ts +519 -0
  80. package/backend/dist/cjs/backend/src/payments/stripe/products.js +650 -0
  81. package/backend/dist/cjs/backend/src/payments/stripe/stripe.d.ts +215 -0
  82. package/backend/dist/cjs/backend/src/payments/stripe/stripe.js +468 -0
  83. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  84. package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.js +557 -0
  85. package/backend/dist/cjs/backend/src/payments/stripe/utils.d.ts +63 -0
  86. package/backend/dist/cjs/backend/src/payments/stripe/utils.js +118 -0
  87. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.d.ts +105 -0
  88. package/backend/dist/cjs/backend/src/payments/stripe/webhooks.js +627 -0
  89. package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
  90. package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
  91. package/backend/dist/cjs/backend/src/plugins/communication.d.ts +70 -0
  92. package/backend/dist/cjs/backend/src/plugins/communication.js +196 -0
  93. package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +255 -0
  94. package/backend/dist/cjs/backend/src/plugins/mail/mail.js +381 -0
  95. package/backend/dist/cjs/backend/src/plugins/mail/ui.d.ts +297 -0
  96. package/backend/dist/cjs/backend/src/plugins/mail/ui.js +1370 -0
  97. package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
  98. package/backend/dist/cjs/backend/src/plugins/pdf.js +1456 -0
  99. package/backend/dist/cjs/backend/src/plugins/thread_monitor.d.ts +18 -0
  100. package/backend/dist/cjs/backend/src/plugins/thread_monitor.js +116 -0
  101. package/backend/dist/cjs/backend/src/rate_limit.d.ts +148 -0
  102. package/backend/dist/cjs/backend/src/rate_limit.js +543 -0
  103. package/backend/dist/cjs/backend/src/route.d.ts +39 -0
  104. package/backend/dist/cjs/backend/src/route.js +172 -0
  105. package/backend/dist/cjs/backend/src/server.d.ts +502 -0
  106. package/backend/dist/cjs/backend/src/server.js +1710 -0
  107. package/backend/dist/cjs/backend/src/server.old.d.ts +594 -0
  108. package/backend/dist/cjs/backend/src/server.old.js +2058 -0
  109. package/backend/dist/cjs/backend/src/splash_screen.d.ts +93 -0
  110. package/backend/dist/cjs/backend/src/splash_screen.js +119 -0
  111. package/backend/dist/cjs/backend/src/status.d.ts +89 -0
  112. package/backend/dist/cjs/backend/src/status.js +211 -0
  113. package/backend/dist/cjs/backend/src/stream.d.ts +494 -0
  114. package/backend/dist/cjs/backend/src/stream.js +1370 -0
  115. package/backend/dist/cjs/backend/src/users.d.ts +926 -0
  116. package/backend/dist/cjs/backend/src/users.js +2223 -0
  117. package/backend/dist/cjs/backend/src/utils.d.ts +22 -0
  118. package/backend/dist/cjs/backend/src/utils.js +626 -0
  119. package/backend/dist/cjs/backend/src/view.d.ts +115 -0
  120. package/backend/dist/cjs/backend/src/view.js +519 -0
  121. package/backend/dist/cjs/backend/src/vinc.d.ts +6 -0
  122. package/backend/dist/cjs/backend/src/vinc.js +40 -0
  123. package/backend/dist/cjs/backend/src/volt.d.ts +24 -0
  124. package/backend/dist/cjs/backend/src/volt.js +72 -0
  125. package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
  126. package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
  127. package/backend/dist/cjs/package.json +1 -0
  128. package/backend/dist/esm/backend/src/blacklist.d.ts +12 -0
  129. package/backend/dist/esm/backend/src/blacklist.js +52 -0
  130. package/backend/dist/esm/backend/src/cli.d.ts +2 -0
  131. package/backend/dist/esm/backend/src/cli.js +211 -0
  132. package/backend/dist/esm/backend/src/database/collection.d.ts +1765 -0
  133. package/backend/dist/esm/backend/src/database/collection.js +3779 -0
  134. package/backend/dist/esm/backend/src/database/database.d.ts +92 -0
  135. package/backend/dist/esm/backend/src/database/database.js +214 -0
  136. package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
  137. package/backend/dist/esm/backend/src/database/document.js +558 -0
  138. package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
  139. package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
  140. package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
  141. package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
  142. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
  143. package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
  144. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
  145. package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
  146. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
  147. package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
  148. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
  149. package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
  150. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
  151. package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
  152. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
  153. package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
  154. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  155. package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
  156. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
  157. package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +415 -0
  158. package/backend/dist/esm/backend/src/database/flatten.d.ts +78 -0
  159. package/backend/dist/esm/backend/src/database/flatten.js +22 -0
  160. package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
  161. package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
  162. package/backend/dist/esm/backend/src/database/quota/quoata_v2.d.ts +533 -0
  163. package/backend/dist/esm/backend/src/database/quota/quoata_v2.js +1155 -0
  164. package/backend/dist/esm/backend/src/database/quota/quota.d.ts +551 -0
  165. package/backend/dist/esm/backend/src/database/quota/quota.js +1219 -0
  166. package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
  167. package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
  168. package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +412 -0
  169. package/backend/dist/esm/backend/src/database/quota/safe_int.js +810 -0
  170. package/backend/dist/esm/backend/src/endpoint.d.ts +346 -0
  171. package/backend/dist/esm/backend/src/endpoint.js +479 -0
  172. package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
  173. package/backend/dist/esm/backend/src/errors/index.js +7 -0
  174. package/backend/dist/esm/backend/src/errors/internal_external.d.ts +52 -0
  175. package/backend/dist/esm/backend/src/errors/internal_external.js +86 -0
  176. package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +41 -0
  177. package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +33 -0
  178. package/backend/dist/esm/backend/src/errors/system_error.d.ts +261 -0
  179. package/backend/dist/esm/backend/src/errors/system_error.js +444 -0
  180. package/backend/dist/esm/backend/src/events.d.ts +97 -0
  181. package/backend/dist/esm/backend/src/events.js +5 -0
  182. package/backend/dist/esm/backend/src/frontend.d.ts +13 -0
  183. package/backend/dist/esm/backend/src/frontend.js +23 -0
  184. package/backend/dist/esm/backend/src/image_endpoint.d.ts +44 -0
  185. package/backend/dist/esm/backend/src/image_endpoint.js +196 -0
  186. package/backend/dist/esm/backend/src/index.d.ts +23 -0
  187. package/backend/dist/esm/backend/src/index.js +26 -0
  188. package/backend/dist/esm/backend/src/logger.d.ts +5 -0
  189. package/backend/dist/esm/backend/src/logger.js +8 -0
  190. package/backend/dist/esm/backend/src/meta.d.ts +112 -0
  191. package/backend/dist/esm/backend/src/meta.js +152 -0
  192. package/backend/dist/esm/backend/src/payments/paddle.d.ts +329 -0
  193. package/backend/dist/esm/backend/src/payments/paddle.js +2276 -0
  194. package/backend/dist/esm/backend/src/payments/stripe/checkout.d.ts +113 -0
  195. package/backend/dist/esm/backend/src/payments/stripe/checkout.js +356 -0
  196. package/backend/dist/esm/backend/src/payments/stripe/customers.d.ts +17 -0
  197. package/backend/dist/esm/backend/src/payments/stripe/customers.js +193 -0
  198. package/backend/dist/esm/backend/src/payments/stripe/error.d.ts +74 -0
  199. package/backend/dist/esm/backend/src/payments/stripe/error.js +51 -0
  200. package/backend/dist/esm/backend/src/payments/stripe/events.d.ts +155 -0
  201. package/backend/dist/esm/backend/src/payments/stripe/events.js +5 -0
  202. package/backend/dist/esm/backend/src/payments/stripe/meters.d.ts +105 -0
  203. package/backend/dist/esm/backend/src/payments/stripe/meters.js +318 -0
  204. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  205. package/backend/dist/esm/backend/src/payments/stripe/payment_methods.js +135 -0
  206. package/backend/dist/esm/backend/src/payments/stripe/products.d.ts +519 -0
  207. package/backend/dist/esm/backend/src/payments/stripe/products.js +896 -0
  208. package/backend/dist/esm/backend/src/payments/stripe/stripe.d.ts +215 -0
  209. package/backend/dist/esm/backend/src/payments/stripe/stripe.js +464 -0
  210. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  211. package/backend/dist/esm/backend/src/payments/stripe/subscriptions.js +754 -0
  212. package/backend/dist/esm/backend/src/payments/stripe/utils.d.ts +63 -0
  213. package/backend/dist/esm/backend/src/payments/stripe/utils.js +131 -0
  214. package/backend/dist/esm/backend/src/payments/stripe/webhooks.d.ts +105 -0
  215. package/backend/dist/esm/backend/src/payments/stripe/webhooks.js +752 -0
  216. package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
  217. package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
  218. package/backend/dist/esm/backend/src/plugins/communication.d.ts +70 -0
  219. package/backend/dist/esm/backend/src/plugins/communication.js +169 -0
  220. package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +255 -0
  221. package/backend/dist/esm/backend/src/plugins/mail/mail.js +396 -0
  222. package/backend/dist/esm/backend/src/plugins/mail/ui.d.ts +297 -0
  223. package/backend/dist/esm/backend/src/plugins/mail/ui.js +1400 -0
  224. package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
  225. package/backend/dist/esm/backend/src/plugins/pdf.js +1694 -0
  226. package/backend/dist/esm/backend/src/plugins/thread_monitor.d.ts +18 -0
  227. package/backend/dist/esm/backend/src/plugins/thread_monitor.js +120 -0
  228. package/backend/dist/esm/backend/src/rate_limit.d.ts +148 -0
  229. package/backend/dist/esm/backend/src/rate_limit.js +667 -0
  230. package/backend/dist/esm/backend/src/route.d.ts +39 -0
  231. package/backend/dist/esm/backend/src/route.js +222 -0
  232. package/backend/dist/esm/backend/src/server.d.ts +502 -0
  233. package/backend/dist/esm/backend/src/server.js +2031 -0
  234. package/backend/dist/esm/backend/src/server.old.d.ts +594 -0
  235. package/backend/dist/esm/backend/src/server.old.js +2630 -0
  236. package/backend/dist/esm/backend/src/splash_screen.d.ts +93 -0
  237. package/backend/dist/esm/backend/src/splash_screen.js +156 -0
  238. package/backend/dist/esm/backend/src/status.d.ts +89 -0
  239. package/backend/dist/esm/backend/src/status.js +213 -0
  240. package/backend/dist/esm/backend/src/stream.d.ts +494 -0
  241. package/backend/dist/esm/backend/src/stream.js +1611 -0
  242. package/backend/dist/esm/backend/src/users.d.ts +926 -0
  243. package/backend/dist/esm/backend/src/users.js +2423 -0
  244. package/backend/dist/esm/backend/src/utils.d.ts +22 -0
  245. package/backend/dist/esm/backend/src/utils.js +463 -0
  246. package/backend/dist/esm/backend/src/view.d.ts +115 -0
  247. package/backend/dist/esm/backend/src/view.js +584 -0
  248. package/backend/dist/esm/backend/src/vinc.d.ts +6 -0
  249. package/backend/dist/esm/backend/src/vinc.js +6 -0
  250. package/backend/dist/esm/backend/src/volt.d.ts +24 -0
  251. package/backend/dist/esm/backend/src/volt.js +27 -0
  252. package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
  253. package/backend/dist/esm/frontend/src/modules/request.js +117 -0
  254. package/frontend/dist/backend/src/database/collection.d.ts +1765 -0
  255. package/frontend/dist/backend/src/database/collection.js +3779 -0
  256. package/frontend/dist/backend/src/database/database.d.ts +92 -0
  257. package/frontend/dist/backend/src/database/database.js +214 -0
  258. package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
  259. package/frontend/dist/backend/src/database/filters/filters.js +1 -0
  260. package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
  261. package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
  262. package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
  263. package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
  264. package/frontend/dist/backend/src/database/flatten.d.ts +78 -0
  265. package/frontend/dist/backend/src/database/flatten.js +22 -0
  266. package/frontend/dist/backend/src/endpoint.d.ts +346 -0
  267. package/frontend/dist/backend/src/endpoint.js +479 -0
  268. package/frontend/dist/backend/src/errors/index.d.ts +7 -0
  269. package/frontend/dist/backend/src/errors/index.js +7 -0
  270. package/frontend/dist/backend/src/errors/internal_external.d.ts +52 -0
  271. package/frontend/dist/backend/src/errors/internal_external.js +86 -0
  272. package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +41 -0
  273. package/frontend/dist/backend/src/errors/invalid_usage_error.js +33 -0
  274. package/frontend/dist/backend/src/errors/system_error.d.ts +261 -0
  275. package/frontend/dist/backend/src/errors/system_error.js +444 -0
  276. package/frontend/dist/backend/src/events.d.ts +97 -0
  277. package/frontend/dist/backend/src/events.js +5 -0
  278. package/frontend/dist/backend/src/frontend.d.ts +13 -0
  279. package/frontend/dist/backend/src/frontend.js +23 -0
  280. package/frontend/dist/backend/src/image_endpoint.d.ts +44 -0
  281. package/frontend/dist/backend/src/image_endpoint.js +196 -0
  282. package/frontend/dist/backend/src/meta.d.ts +112 -0
  283. package/frontend/dist/backend/src/meta.js +152 -0
  284. package/frontend/dist/backend/src/payments/paddle.d.ts +329 -0
  285. package/frontend/dist/backend/src/payments/paddle.js +2276 -0
  286. package/frontend/dist/backend/src/payments/stripe/checkout.d.ts +113 -0
  287. package/frontend/dist/backend/src/payments/stripe/checkout.js +356 -0
  288. package/frontend/dist/backend/src/payments/stripe/customers.d.ts +17 -0
  289. package/frontend/dist/backend/src/payments/stripe/customers.js +193 -0
  290. package/frontend/dist/backend/src/payments/stripe/error.d.ts +74 -0
  291. package/frontend/dist/backend/src/payments/stripe/error.js +51 -0
  292. package/frontend/dist/backend/src/payments/stripe/events.d.ts +155 -0
  293. package/frontend/dist/backend/src/payments/stripe/events.js +5 -0
  294. package/frontend/dist/backend/src/payments/stripe/meters.d.ts +105 -0
  295. package/frontend/dist/backend/src/payments/stripe/meters.js +318 -0
  296. package/frontend/dist/backend/src/payments/stripe/payment_methods.d.ts +58 -0
  297. package/frontend/dist/backend/src/payments/stripe/payment_methods.js +135 -0
  298. package/frontend/dist/backend/src/payments/stripe/products.d.ts +519 -0
  299. package/frontend/dist/backend/src/payments/stripe/products.js +896 -0
  300. package/frontend/dist/backend/src/payments/stripe/stripe.d.ts +215 -0
  301. package/frontend/dist/backend/src/payments/stripe/stripe.js +464 -0
  302. package/frontend/dist/backend/src/payments/stripe/subscriptions.d.ts +172 -0
  303. package/frontend/dist/backend/src/payments/stripe/subscriptions.js +754 -0
  304. package/frontend/dist/backend/src/payments/stripe/utils.d.ts +63 -0
  305. package/frontend/dist/backend/src/payments/stripe/utils.js +131 -0
  306. package/frontend/dist/backend/src/payments/stripe/webhooks.d.ts +105 -0
  307. package/frontend/dist/backend/src/payments/stripe/webhooks.js +752 -0
  308. package/frontend/dist/backend/src/plugins/mail/mail.d.ts +255 -0
  309. package/frontend/dist/backend/src/plugins/mail/mail.js +396 -0
  310. package/frontend/dist/backend/src/plugins/mail/ui.d.ts +297 -0
  311. package/frontend/dist/backend/src/plugins/mail/ui.js +1400 -0
  312. package/frontend/dist/backend/src/rate_limit.d.ts +148 -0
  313. package/frontend/dist/backend/src/rate_limit.js +667 -0
  314. package/frontend/dist/backend/src/route.d.ts +39 -0
  315. package/frontend/dist/backend/src/route.js +222 -0
  316. package/frontend/dist/backend/src/server.d.ts +502 -0
  317. package/frontend/dist/backend/src/server.js +2031 -0
  318. package/frontend/dist/backend/src/splash_screen.d.ts +93 -0
  319. package/frontend/dist/backend/src/splash_screen.js +156 -0
  320. package/frontend/dist/backend/src/status.d.ts +89 -0
  321. package/frontend/dist/backend/src/status.js +213 -0
  322. package/frontend/dist/backend/src/stream.d.ts +494 -0
  323. package/frontend/dist/backend/src/stream.js +1611 -0
  324. package/frontend/dist/backend/src/users.d.ts +926 -0
  325. package/frontend/dist/backend/src/users.js +2423 -0
  326. package/frontend/dist/backend/src/utils.d.ts +22 -0
  327. package/frontend/dist/backend/src/utils.js +463 -0
  328. package/frontend/dist/backend/src/view.d.ts +115 -0
  329. package/frontend/dist/backend/src/view.js +584 -0
  330. package/frontend/dist/frontend/src/css/adyen.css +92 -0
  331. package/frontend/dist/frontend/src/css/volt.css +75 -0
  332. package/frontend/dist/frontend/src/elements/base.d.ts +3743 -0
  333. package/frontend/dist/frontend/src/elements/base.js +12151 -0
  334. package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
  335. package/frontend/dist/frontend/src/elements/module.js +216 -0
  336. package/frontend/dist/frontend/src/elements/register_element.d.ts +3 -0
  337. package/frontend/dist/frontend/src/elements/register_element.js +22 -0
  338. package/frontend/dist/frontend/src/elements/resize_query_manager.d.ts +0 -0
  339. package/frontend/dist/frontend/src/elements/resize_query_manager.js +150 -0
  340. package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
  341. package/frontend/dist/frontend/src/elements/types.js +5 -0
  342. package/frontend/dist/frontend/src/index.d.ts +21 -0
  343. package/frontend/dist/frontend/src/index.js +29 -0
  344. package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
  345. package/frontend/dist/frontend/src/modules/attachment.js +306 -0
  346. package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
  347. package/frontend/dist/frontend/src/modules/auth.js +80 -0
  348. package/frontend/dist/frontend/src/modules/color.d.ts +160 -0
  349. package/frontend/dist/frontend/src/modules/color.js +316 -0
  350. package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
  351. package/frontend/dist/frontend/src/modules/compression.js +102 -0
  352. package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
  353. package/frontend/dist/frontend/src/modules/cookies.js +143 -0
  354. package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
  355. package/frontend/dist/frontend/src/modules/events.js +79 -0
  356. package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
  357. package/frontend/dist/frontend/src/modules/google.js +52 -0
  358. package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
  359. package/frontend/dist/frontend/src/modules/meta.js +48 -0
  360. package/frontend/dist/frontend/src/modules/paddle.d.ts +1207 -0
  361. package/frontend/dist/frontend/src/modules/paddle.js +2594 -0
  362. package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
  363. package/frontend/dist/frontend/src/modules/request.js +117 -0
  364. package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
  365. package/frontend/dist/frontend/src/modules/settings.js +5 -0
  366. package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
  367. package/frontend/dist/frontend/src/modules/statics.js +43 -0
  368. package/frontend/dist/frontend/src/modules/stripe/cart.d.ts +112 -0
  369. package/frontend/dist/frontend/src/modules/stripe/cart.js +321 -0
  370. package/frontend/dist/frontend/src/modules/stripe/checkout.d.ts +7 -0
  371. package/frontend/dist/frontend/src/modules/stripe/checkout.js +37 -0
  372. package/frontend/dist/frontend/src/modules/stripe/index.m.d.ts +6 -0
  373. package/frontend/dist/frontend/src/modules/stripe/index.m.js +6 -0
  374. package/frontend/dist/frontend/src/modules/stripe/payments.d.ts +58 -0
  375. package/frontend/dist/frontend/src/modules/stripe/payments.js +92 -0
  376. package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
  377. package/frontend/dist/frontend/src/modules/support.js +53 -0
  378. package/frontend/dist/frontend/src/modules/theme.d.ts +133 -0
  379. package/frontend/dist/frontend/src/modules/theme.js +406 -0
  380. package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
  381. package/frontend/dist/frontend/src/modules/themes.js +22 -0
  382. package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
  383. package/frontend/dist/frontend/src/modules/user.js +270 -0
  384. package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
  385. package/frontend/dist/frontend/src/modules/utils.js +569 -0
  386. package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
  387. package/frontend/dist/frontend/src/types/gradient.js +79 -0
  388. package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
  389. package/frontend/dist/frontend/src/ui/border_button.js +228 -0
  390. package/frontend/dist/frontend/src/ui/button.d.ts +241 -0
  391. package/frontend/dist/frontend/src/ui/button.js +682 -0
  392. package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
  393. package/frontend/dist/frontend/src/ui/canvas.js +444 -0
  394. package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
  395. package/frontend/dist/frontend/src/ui/checkbox.js +321 -0
  396. package/frontend/dist/frontend/src/ui/code.d.ts +235 -0
  397. package/frontend/dist/frontend/src/ui/code.js +1007 -0
  398. package/frontend/dist/frontend/src/ui/context_menu.d.ts +36 -0
  399. package/frontend/dist/frontend/src/ui/context_menu.js +205 -0
  400. package/frontend/dist/frontend/src/ui/css.d.ts +16 -0
  401. package/frontend/dist/frontend/src/ui/css.js +48 -0
  402. package/frontend/dist/frontend/src/ui/divider.d.ts +15 -0
  403. package/frontend/dist/frontend/src/ui/divider.js +78 -0
  404. package/frontend/dist/frontend/src/ui/dropdown.d.ts +176 -0
  405. package/frontend/dist/frontend/src/ui/dropdown.js +481 -0
  406. package/frontend/dist/frontend/src/ui/for_each.d.ts +37 -0
  407. package/frontend/dist/frontend/src/ui/for_each.js +92 -0
  408. package/frontend/dist/frontend/src/ui/form.d.ts +34 -0
  409. package/frontend/dist/frontend/src/ui/form.js +233 -0
  410. package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
  411. package/frontend/dist/frontend/src/ui/frame_modes.js +108 -0
  412. package/frontend/dist/frontend/src/ui/google_map.d.ts +24 -0
  413. package/frontend/dist/frontend/src/ui/google_map.js +106 -0
  414. package/frontend/dist/frontend/src/ui/gradient.d.ts +25 -0
  415. package/frontend/dist/frontend/src/ui/gradient.js +131 -0
  416. package/frontend/dist/frontend/src/ui/image.d.ts +111 -0
  417. package/frontend/dist/frontend/src/ui/image.js +576 -0
  418. package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
  419. package/frontend/dist/frontend/src/ui/input.js +1201 -0
  420. package/frontend/dist/frontend/src/ui/link.d.ts +25 -0
  421. package/frontend/dist/frontend/src/ui/link.js +140 -0
  422. package/frontend/dist/frontend/src/ui/list.d.ts +37 -0
  423. package/frontend/dist/frontend/src/ui/list.js +170 -0
  424. package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
  425. package/frontend/dist/frontend/src/ui/loader_button.js +193 -0
  426. package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
  427. package/frontend/dist/frontend/src/ui/loaders.js +157 -0
  428. package/frontend/dist/frontend/src/ui/popup.d.ts +94 -0
  429. package/frontend/dist/frontend/src/ui/popup.js +510 -0
  430. package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
  431. package/frontend/dist/frontend/src/ui/pseudo.js +154 -0
  432. package/frontend/dist/frontend/src/ui/scroller.d.ts +105 -0
  433. package/frontend/dist/frontend/src/ui/scroller.js +1253 -0
  434. package/frontend/dist/frontend/src/ui/slider.d.ts +45 -0
  435. package/frontend/dist/frontend/src/ui/slider.js +217 -0
  436. package/frontend/dist/frontend/src/ui/spacer.d.ts +15 -0
  437. package/frontend/dist/frontend/src/ui/spacer.js +78 -0
  438. package/frontend/dist/frontend/src/ui/span.d.ts +15 -0
  439. package/frontend/dist/frontend/src/ui/span.js +73 -0
  440. package/frontend/dist/frontend/src/ui/stack.d.ts +66 -0
  441. package/frontend/dist/frontend/src/ui/stack.js +335 -0
  442. package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
  443. package/frontend/dist/frontend/src/ui/steps.js +308 -0
  444. package/frontend/dist/frontend/src/ui/style.d.ts +17 -0
  445. package/frontend/dist/frontend/src/ui/style.js +73 -0
  446. package/frontend/dist/frontend/src/ui/switch.d.ts +69 -0
  447. package/frontend/dist/frontend/src/ui/switch.js +357 -0
  448. package/frontend/dist/frontend/src/ui/table.d.ts +100 -0
  449. package/frontend/dist/frontend/src/ui/table.js +405 -0
  450. package/frontend/dist/frontend/src/ui/tabs.d.ts +111 -0
  451. package/frontend/dist/frontend/src/ui/tabs.js +424 -0
  452. package/frontend/dist/frontend/src/ui/text.d.ts +15 -0
  453. package/frontend/dist/frontend/src/ui/text.js +83 -0
  454. package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
  455. package/frontend/dist/frontend/src/ui/title.js +272 -0
  456. package/frontend/dist/frontend/src/ui/ui.d.ts +35 -0
  457. package/frontend/dist/frontend/src/ui/ui.js +38 -0
  458. package/frontend/dist/frontend/src/ui/view.d.ts +15 -0
  459. package/frontend/dist/frontend/src/ui/view.js +88 -0
  460. package/frontend/dist/frontend/src/volt.d.ts +20 -0
  461. package/frontend/dist/frontend/src/volt.js +27 -0
  462. package/package.json +7 -2
@@ -0,0 +1,712 @@
1
+ // import { StrictFilter } from './strict_filter.js';
2
+ // import type * as mongodb from 'mongodb';
3
+ export {};
4
+ // // ============================================================================
5
+ // // COMPREHENSIVE TEST SUITE
6
+ // // ============================================================================
7
+ // interface TestSchema {
8
+ // // Basic types
9
+ // // id: string;
10
+ // objectId?: mongodb.ObjectId;
11
+ // name: string;
12
+ // age: number;
13
+ // isActive: boolean;
14
+ // createdAt: Date;
15
+ // // Arrays
16
+ // tags: string[];
17
+ // scores: number[];
18
+ // // Nested objects
19
+ // profile: {
20
+ // email: string;
21
+ // phone: string;
22
+ // address: {
23
+ // street: string;
24
+ // city: string;
25
+ // zip: number;
26
+ // };
27
+ // };
28
+ // // Optional fields
29
+ // description?: string;
30
+ // deletedAt?: Date;
31
+ // // Complex arrays
32
+ // items: Array<{
33
+ // id: string;
34
+ // quantity: number;
35
+ // price: number;
36
+ // }>;
37
+ // // Geospatial field
38
+ // location?: {
39
+ // type: 'Point';
40
+ // coordinates: [number, number];
41
+ // };
42
+ // // Binary data field
43
+ // binaryField?: mongodb.Binary;
44
+ // }
45
+ // // ============================================================================
46
+ // // StrictFilter Tests - Should FAIL (produce TypeScript errors)
47
+ // // ============================================================================
48
+ // // Test 1: Unknown top-level field in filter
49
+ // const failFilter1: StrictFilter<TestSchema> = {
50
+ // // @ts-expect-error - 'unknownField' does not exist in TestSchema
51
+ // unknownField: 'value',
52
+ // };
53
+ // // Test 2: Unknown nested field in filter
54
+ // const failFilter2: StrictFilter<TestSchema> = {
55
+ // // @ts-expect-error - 'profile.unknownField' is not a valid path
56
+ // 'profile.unknownField': 'value',
57
+ // };
58
+ // // Test 3: Unknown deep nested field in filter
59
+ // const failFilter3: StrictFilter<TestSchema> = {
60
+ // // @ts-expect-error - 'profile.address.country' does not exist
61
+ // 'profile.address.country': 'USA',
62
+ // };
63
+ // // Test 3: Unknown deep nested field in filter
64
+ // const successFilter_1: StrictFilter<TestSchema> = {
65
+ // 'profile.address.street': 'USA',
66
+ // };
67
+ // // Test 4: Typo in field name
68
+ // const failFilter4: StrictFilter<TestSchema> = {
69
+ // // @ts-expect-error - 'nmae' is a typo, should be 'name'
70
+ // nmae: 'John',
71
+ // };
72
+ // // ============================================================================
73
+ // // Valid Tests - Should PASS (no TypeScript errors)
74
+ // // ============================================================================
75
+ // // Valid filter with direct fields
76
+ // const validFilter1: StrictFilter<TestSchema> = {
77
+ // name: 'John',
78
+ // age: 30,
79
+ // isActive: true,
80
+ // };
81
+ // // Valid filter with operators
82
+ // const validFilter2: StrictFilter<TestSchema> = {
83
+ // age: { $gte: 18, $lte: 65 },
84
+ // name: { $regex: '^J' },
85
+ // tags: { $in: ['admin', 'user'] },
86
+ // };
87
+ // // Valid filter with nested paths
88
+ // const validFilter3: StrictFilter<TestSchema> = {
89
+ // 'profile.email': 'test@example.com',
90
+ // 'profile.address.city': 'New York',
91
+ // 'profile.address.zip': { $gte: 10000 },
92
+ // };
93
+ // // Valid filter with logical operators
94
+ // const validFilter4: StrictFilter<TestSchema> = {
95
+ // $or: [
96
+ // { age: { $lt: 18 } },
97
+ // { age: { $gte: 65 } }
98
+ // ],
99
+ // $and: [
100
+ // { isActive: true },
101
+ // { tags: { $in: ['premium'] } }
102
+ // ],
103
+ // };
104
+ // // ============================================================================
105
+ // // ADDITIONAL NEGATIVE TESTS (Should FAIL)
106
+ // // ============================================================================
107
+ // // Array operator with wrong element type in filter
108
+ // const failFilter5: StrictFilter<TestSchema> = {
109
+ // // @ts-expect-error - $in expects string[], not string[][]
110
+ // tags: {
111
+ // $in: [['admin']]
112
+ // }
113
+ // };
114
+ // // ============================================================================
115
+ // // ADDITIONAL POSITIVE TESTS (Should PASS)
116
+ // // ============================================================================
117
+ // // Array equality in filter
118
+ // const validFilter5: StrictFilter<TestSchema> = {
119
+ // tags: ['a', 'b'],
120
+ // };
121
+ // // Element-wise operator on array field
122
+ // const validFilter6: StrictFilter<TestSchema> = {
123
+ // scores: { $gte: 50 },
124
+ // };
125
+ // // Using $exists on optional field
126
+ // const validFilter7: StrictFilter<TestSchema> = {
127
+ // description: { $exists: false },
128
+ // };
129
+ // // Using $not with regex
130
+ // const validFilter8: StrictFilter<TestSchema> = {
131
+ // name: { $not: { $regex: '^A' } },
132
+ // };
133
+ // // Using $nor
134
+ // const validFilter9: StrictFilter<TestSchema> = {
135
+ // $nor: [{ isActive: false }, { age: { $lt: 18 } }],
136
+ // };
137
+ // // Nested numeric with $in
138
+ // const validFilter10: StrictFilter<TestSchema> = {
139
+ // 'profile.address.zip': { $in: [10000, 20000] },
140
+ // };
141
+ // // ============================================================================
142
+ // // CASTING TO OFFICIAL MONGODB TYPES (Should PASS)
143
+ // // ============================================================================
144
+ // // StrictFilter → mongodb.Filter
145
+ // const strictFilterForCast: StrictFilter<TestSchema> = {
146
+ // age: { $gte: 21 },
147
+ // isActive: true,
148
+ // tags: { $in: ['admin', 'user'] },
149
+ // };
150
+ // const mongoFilterCast: mongodb.Filter<TestSchema> = strictFilterForCast;
151
+ // // ============================================================================
152
+ // // UPDATE MANY OVERLOAD WITH STRICT UPDATE (Should PASS)
153
+ // // ============================================================================
154
+ // declare const colX: mongodb.Collection<TestSchema>;
155
+ // void colX.updateMany(
156
+ // { id: 'abc' } as StrictFilter<TestSchema>,
157
+ // {},
158
+ // {}
159
+ // );
160
+ // function update_test_1(
161
+ // filter: StrictFilter<TestSchema>,
162
+ // update_filter: mongodb.UpdateFilter<TestSchema>
163
+ // ) {
164
+ // colX.updateMany(
165
+ // filter,
166
+ // update_filter,
167
+ // {}
168
+ // );
169
+ // }
170
+ // // ============================================================================
171
+ // // SIMULATING CAST ERRORS FROM REAL CODE.
172
+ // // ============================================================================
173
+ // // A concrete schema for comparison
174
+ // type TestSchema2 = {
175
+ // id: string;
176
+ // name: string;
177
+ // age?: number;
178
+ // createdAt: Date;
179
+ // };
180
+ // // ----- Control: with a concrete schema, typical calls compile -----
181
+ // declare const colConcrete: mongodb.Collection<TestSchema2>;
182
+ // const okStrictUpdateConcrete: mongodb.UpdateFilter<TestSchema2> = { $set: { name: "x" } };
183
+ // void colConcrete.updateMany({ id: "abc" } as StrictFilter<TestSchema2>, okStrictUpdateConcrete, {}); // OK
184
+ // // ----- Repro: generic boundary (mirrors your save/bulk path) -----
185
+ // declare function acceptsBulk<T extends mongodb.Document>(
186
+ // op: mongodb.AnyBulkWriteOperation<T>
187
+ // ): void;
188
+ // function genericSaveRepro<Data extends mongodb.Document>(
189
+ // filter: mongodb.Filter<Data>,
190
+ // op: mongodb.UpdateFilter<Data>,
191
+ // ) {
192
+ // const bulkOp = {
193
+ // updateOne: {
194
+ // filter,
195
+ // update: op, // <- This is where TS2322 shows up pre-fix
196
+ // upsert: true,
197
+ // },
198
+ // };
199
+ // acceptsBulk<Data>(bulkOp);
200
+ // // Also directly:
201
+ // const _direct: mongodb.AnyBulkWriteOperation<Data> = bulkOp;
202
+ // // And findOneAndUpdate:
203
+ // const colGeneric: mongodb.Collection<Data> = null as any;
204
+ // colGeneric.findOneAndUpdate(filter, op);
205
+ // }
206
+ // // DOES NOT PASS THE FOLLOWING BECAUSE OF TEMPLATE.
207
+ // // function forcesRealCheck<Data extends mongodb.Document>(
208
+ // // filter: mongodb.Filter<Data>,
209
+ // // op: StrictUpdateFilter<Data>
210
+ // // ) {
211
+ // // // 🔴 This mirrors collection.ts exactly
212
+ // // const x: mongodb.AnyBulkWriteOperation<Data> = {
213
+ // // updateOne: { filter, update: op, upsert: true },
214
+ // // };
215
+ // // void x;
216
+ // // }
217
+ // // ============================================================================
218
+ // // ROOT FILTER OPERATORS TESTS
219
+ // // ============================================================================
220
+ // // Test $expr operator
221
+ // const testExpr: StrictFilter<TestSchema> = {
222
+ // $expr: {
223
+ // $and: [
224
+ // { $gt: ["$age", 18] },
225
+ // { $lte: [{ $add: ["$age", 10] }, 100] }
226
+ // ]
227
+ // }
228
+ // };
229
+ // // Test $expr with complex aggregation expressions
230
+ // const testExprComplex: StrictFilter<TestSchema> = {
231
+ // $expr: {
232
+ // $and: [
233
+ // { $eq: [{ $mod: ["$age", 2] }, 0] }, // even ages
234
+ // { $gte: [{ $size: "$tags" }, 2] }, // at least 2 tags
235
+ // { $lt: [{ $subtract: [new Date(), "$createdAt"] }, 86400000] } // created within last day
236
+ // ]
237
+ // }
238
+ // };
239
+ // // Test $text operator
240
+ // const testText: StrictFilter<TestSchema> = {
241
+ // $text: {
242
+ // $search: "coffee shop",
243
+ // $language: "en",
244
+ // $caseSensitive: false,
245
+ // $diacriticSensitive: true
246
+ // }
247
+ // };
248
+ // // Test $where with function
249
+ // const testWhereFunction: StrictFilter<TestSchema> = {
250
+ // $where: function () {
251
+ // return this.age > 21 && this.tags.length > 0;
252
+ // }
253
+ // };
254
+ // // Test $where with string
255
+ // const testWhereString: StrictFilter<TestSchema> = {
256
+ // $where: "this.age > 21 && this.tags.length > 0"
257
+ // };
258
+ // // Test $jsonSchema
259
+ // const testJsonSchema: StrictFilter<TestSchema> = {
260
+ // $jsonSchema: {
261
+ // required: ["name", "age"],
262
+ // properties: {
263
+ // name: {
264
+ // type: "string",
265
+ // minLength: 1,
266
+ // maxLength: 100
267
+ // },
268
+ // age: {
269
+ // type: "number",
270
+ // minimum: 0,
271
+ // maximum: 120
272
+ // }
273
+ // }
274
+ // }
275
+ // };
276
+ // // Test $comment
277
+ // const testComment: StrictFilter<TestSchema> = {
278
+ // age: { $gte: 18 },
279
+ // $comment: "Query for adult users"
280
+ // };
281
+ // // Test $comment with document
282
+ // const testCommentDocument: StrictFilter<TestSchema> = {
283
+ // $comment: {
284
+ // query: "adult_users",
285
+ // version: 2,
286
+ // timestamp: new Date()
287
+ // }
288
+ // };
289
+ // // Test $rand for random sampling
290
+ // const testRand: StrictFilter<TestSchema> = {
291
+ // $expr: { $lte: [{ $rand: {} }, 0.1] } // 10% random sample
292
+ // };
293
+ // // ============================================================================
294
+ // // FIELD-LEVEL FILTER OPERATORS TESTS
295
+ // // ============================================================================
296
+ // // Comparison operators
297
+ // const testComparison: StrictFilter<TestSchema> = {
298
+ // age: {
299
+ // $eq: 25,
300
+ // $ne: 30,
301
+ // $gt: 18,
302
+ // $gte: 18,
303
+ // $lt: 65,
304
+ // $lte: 65
305
+ // },
306
+ // name: {
307
+ // $in: ["Alice", "Bob", "Charlie"],
308
+ // $nin: ["Dave", "Eve"]
309
+ // }
310
+ // };
311
+ // // Element operators
312
+ // const testElement: StrictFilter<TestSchema> = {
313
+ // description: { $exists: true },
314
+ // deletedAt: { $exists: false },
315
+ // age: { $type: "int" },
316
+ // createdAt: { $type: "date" },
317
+ // objectId: { $type: "objectId" },
318
+ // binaryField: { $type: "binData" }
319
+ // };
320
+ // // Evaluation operators on fields
321
+ // const testFieldEvaluation: StrictFilter<TestSchema> = {
322
+ // age: { $mod: [10, 0] }, // divisible by 10
323
+ // name: {
324
+ // $regex: /^[A-Z]/,
325
+ // $options: "i"
326
+ // }
327
+ // };
328
+ // // String regex with options
329
+ // const testRegexString: StrictFilter<TestSchema> = {
330
+ // name: {
331
+ // $regex: "^user_",
332
+ // $options: "im"
333
+ // },
334
+ // "profile.email": {
335
+ // $regex: "@example\\.com$"
336
+ // }
337
+ // };
338
+ // // Logical operators on fields
339
+ // const testFieldLogical: StrictFilter<TestSchema> = {
340
+ // age: { $not: { $gte: 65 } }, // not senior
341
+ // name: { $not: /^admin/i } // name doesn't start with admin
342
+ // };
343
+ // // Geospatial operators
344
+ // const testGeo: StrictFilter<TestSchema> = {
345
+ // location: {
346
+ // $geoIntersects: {
347
+ // $geometry: {
348
+ // type: "Polygon",
349
+ // coordinates: [[[0, 0], [3, 6], [6, 1], [0, 0]]]
350
+ // }
351
+ // }
352
+ // }
353
+ // };
354
+ // const testGeoWithin: StrictFilter<TestSchema> = {
355
+ // location: {
356
+ // $geoWithin: {
357
+ // $centerSphere: [[-73.93414657, 40.82302903], 10 / 3963.2] // 10 miles
358
+ // }
359
+ // }
360
+ // };
361
+ // const testNear: StrictFilter<TestSchema> = {
362
+ // location: {
363
+ // $near: {
364
+ // $geometry: { type: "Point", coordinates: [-73.9667, 40.78] },
365
+ // $minDistance: 1000,
366
+ // $maxDistance: 5000
367
+ // }
368
+ // }
369
+ // };
370
+ // const testNearSphere: StrictFilter<TestSchema> = {
371
+ // location: {
372
+ // $nearSphere: {
373
+ // $geometry: { type: "Point", coordinates: [2.35, 48.85] },
374
+ // $maxDistance: 1000,
375
+ // // @ts-expect-error
376
+ // $unknown: { $lt: 100 }
377
+ // }
378
+ // }
379
+ // };
380
+ // // Array operators
381
+ // const testArray: StrictFilter<TestSchema> = {
382
+ // tags: {
383
+ // $all: ["javascript", "typescript"],
384
+ // $size: 3,
385
+ // },
386
+ // scores: {
387
+ // $elemMatch: { $gte: 80, $lte: 100 }
388
+ // },
389
+ // items: {
390
+ // $elemMatch: {
391
+ // quantity: { $gt: 5 },
392
+ // price: { $lt: 100 },
393
+ // // @ts-expect-error
394
+ // unknown: { $lt: 100 }
395
+ // }
396
+ // }
397
+ // };
398
+ // // Array operators
399
+ // const testArrayFail: StrictFilter<TestSchema> = {
400
+ // tags: {
401
+ // $all: ["javascript", "typescript"],
402
+ // $size: 3,
403
+ // // @ts-expect-error
404
+ // $unknown: 0,
405
+ // },
406
+ // scores: {
407
+ // $elemMatch: { $gte: 80, $lte: 100 }
408
+ // },
409
+ // items: {
410
+ // $elemMatch: {
411
+ // quantity: { $gt: 5 },
412
+ // price: { $lt: 100 },
413
+ // // @ts-expect-error
414
+ // unknown: { $lt: 100 }
415
+ // }
416
+ // }
417
+ // };
418
+ // // Bitwise operators
419
+ // const testBitwise: StrictFilter<TestSchema> = {
420
+ // age: {
421
+ // $bitsAllClear: 3, // bits 0 and 1 are clear
422
+ // $bitsAllSet: 12, // bits 2 and 3 are set
423
+ // $bitsAnyClear: [0, 1, 2], // at least one of these bit positions is clear
424
+ // $bitsAnySet: [4, 5], // at least one of these bit positions is set
425
+ // // @ts-expect-error
426
+ // $unknown: 0,
427
+ // }
428
+ // };
429
+ // // ============================================================================
430
+ // // COMPLEX COMBINED QUERIES
431
+ // // ============================================================================
432
+ // // Combining root and field operators
433
+ // const testCombined1: StrictFilter<TestSchema> = {
434
+ // $and: [
435
+ // { age: { $gte: 21 } },
436
+ // { tags: { $in: ["verified", "premium"] } }
437
+ // ],
438
+ // $or: [
439
+ // { isActive: true },
440
+ // {
441
+ // deletedAt: { $exists: false },
442
+ // // @ts-expect-error
443
+ // unknown: { $exists: false },
444
+ // }
445
+ // ],
446
+ // $expr: {
447
+ // $gt: [{
448
+ // $size: "$scores"
449
+ // }, 0]
450
+ // }
451
+ // };
452
+ // // Complex nested query
453
+ // const testCombined2: StrictFilter<TestSchema> = {
454
+ // "profile.address.city": { $in: ["New York", "Los Angeles"] },
455
+ // "profile.email": { $regex: /@(gmail|yahoo)\.com$/ },
456
+ // $text: { $search: "software engineer" },
457
+ // $comment: "Job search query",
458
+ // // @ts-expect-error
459
+ // $unknown: "Job search query"
460
+ // };
461
+ // // Query with all logical operators
462
+ // const testAllLogical: StrictFilter<TestSchema> = {
463
+ // $and: [
464
+ // { isActive: true },
465
+ // {
466
+ // $or: [
467
+ // { age: { $lt: 25 } },
468
+ // { age: { $gt: 60 } }
469
+ // ]
470
+ // }
471
+ // ],
472
+ // $nor: [
473
+ // { tags: "banned" },
474
+ // { "profile.email": { $regex: /@spam\./ } }
475
+ // ]
476
+ // };
477
+ // // Query mixing $expr with regular filters
478
+ // const testMixedExpr: StrictFilter<TestSchema> = {
479
+ // isActive: true,
480
+ // tags: { $in: ["user", "admin"] },
481
+ // $expr: {
482
+ // $and: [
483
+ // { $gte: ["$age", 18] },
484
+ // { $lte: ["$age", 65] },
485
+ // { $eq: [{ $mod: ["$age", 5] }, 0] }
486
+ // ]
487
+ // },
488
+ // $comment: "Active users of working age divisible by 5"
489
+ // };
490
+ // // ============================================================================
491
+ // // NEGATIVE TESTS - Should FAIL
492
+ // // ============================================================================
493
+ // // Invalid field in root filter
494
+ // const failRootFilter1: StrictFilter<TestSchema> = {
495
+ // // @ts-expect-error - 'unknownField' does not exist
496
+ // unknownField: "value"
497
+ // };
498
+ // // Invalid nested field
499
+ // const failRootFilter2: StrictFilter<TestSchema> = {
500
+ // // @ts-expect-error - 'profile.unknown' is not a valid path
501
+ // "profile.unknown": "value"
502
+ // };
503
+ // // Invalid $text options
504
+ // const failText: StrictFilter<TestSchema> = {
505
+ // $text: {
506
+ // $search: "query",
507
+ // // @ts-expect-error - 'fuzzy' is not a valid text search option
508
+ // $fuzzy: true
509
+ // }
510
+ // };
511
+ // // $where with wrong type
512
+ // const failWhere: StrictFilter<TestSchema> = {
513
+ // // @ts-expect-error - $where must be string or function
514
+ // $where: 123
515
+ // };
516
+ // // Invalid logical operator value
517
+ // const failLogical: StrictFilter<TestSchema> = {
518
+ // // @ts-expect-error - $and must be an array
519
+ // $and: { age: 25 }
520
+ // };
521
+ // // ============================================================================
522
+ // // CASTING TESTS - Ensure StrictFilter casts to mongodb.Filter
523
+ // // ============================================================================
524
+ // // Test basic cast
525
+ // const strictFilter1: StrictFilter<TestSchema> = {
526
+ // age: { $gte: 18 },
527
+ // tags: { $in: ["user"] }
528
+ // };
529
+ // const mongoFilter1: mongodb.Filter<TestSchema> = strictFilter1; // Should work
530
+ // // Test cast with root operators
531
+ // const strictFilter2: StrictFilter<TestSchema> = {
532
+ // $expr: { $gt: ["$age", 21] },
533
+ // $text: { $search: "test" },
534
+ // $comment: "test query"
535
+ // };
536
+ // const mongoFilter2: mongodb.Filter<TestSchema> = strictFilter2; // Should work
537
+ // // Test cast with complex query
538
+ // const strictFilter3: StrictFilter<TestSchema> = {
539
+ // $and: [
540
+ // { age: { $gte: 18 } },
541
+ // { isActive: true }
542
+ // ],
543
+ // $or: [
544
+ // { tags: "admin" },
545
+ // { tags: "moderator" }
546
+ // ],
547
+ // $expr: {
548
+ // $and: [
549
+ // { $gt: [{ $size: "$tags" }, 0] },
550
+ // { $lte: ["$age", 100] }
551
+ // ]
552
+ // },
553
+ // $text: { $search: "search term" },
554
+ // $where: "this.age > 0",
555
+ // $jsonSchema: { required: ["id"] },
556
+ // $comment: "complex query"
557
+ // };
558
+ // const mongoFilter3: mongodb.Filter<TestSchema> = strictFilter3; // Should work
559
+ // // ============================================================================
560
+ // // FUNCTION TESTS - Using filters in MongoDB operations
561
+ // // ============================================================================
562
+ // declare const collection: mongodb.Collection<TestSchema>;
563
+ // // Test with find
564
+ // async function testFind() {
565
+ // const filter: StrictFilter<TestSchema> = {
566
+ // age: { $gte: 18 },
567
+ // $text: { $search: "developer" }
568
+ // };
569
+ // const results = await collection.find(filter).toArray();
570
+ // }
571
+ // // Test with findOne
572
+ // async function testFindOne() {
573
+ // const filter: StrictFilter<TestSchema> = {
574
+ // // id: "123",
575
+ // $expr: { $gt: ["$age", 21] }
576
+ // };
577
+ // const result = await collection.findOne(filter);
578
+ // }
579
+ // // Test with countDocuments
580
+ // async function testCount() {
581
+ // const filter: StrictFilter<TestSchema> = {
582
+ // isActive: true,
583
+ // $or: [
584
+ // { age: { $lt: 25 } },
585
+ // { age: { $gt: 60 } }
586
+ // ]
587
+ // };
588
+ // const count = await collection.countDocuments(filter);
589
+ // }
590
+ // // Test with deleteMany
591
+ // async function testDelete() {
592
+ // const filter: StrictFilter<TestSchema> = {
593
+ // deletedAt: { $exists: true },
594
+ // $expr: {
595
+ // $lt: ["$deletedAt", new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)]
596
+ // }
597
+ // };
598
+ // const result = await collection.deleteMany(filter);
599
+ // }
600
+ // // Test with updateMany
601
+ // async function testUpdate() {
602
+ // const filter: StrictFilter<TestSchema> = {
603
+ // isActive: false,
604
+ // $where: "this.age >= 18"
605
+ // };
606
+ // const update: mongodb.UpdateFilter<TestSchema> = {
607
+ // $set: { isActive: true }
608
+ // };
609
+ // const result = await collection.updateMany(filter, update);
610
+ // }
611
+ // // ============================================================================
612
+ // // GENERIC FUNCTION TESTS
613
+ // // ============================================================================
614
+ // // Generic function accepting StrictFilter
615
+ // function processDocuments<T extends mongodb.Document>(
616
+ // collection: mongodb.Collection<T>,
617
+ // filter: StrictFilter<T>
618
+ // ) {
619
+ // // Should be able to pass to MongoDB operations
620
+ // return collection.find(filter as mongodb.Filter<T>).toArray();
621
+ // }
622
+ // // Test generic function
623
+ // async function testGeneric() {
624
+ // const filter: StrictFilter<TestSchema> = {
625
+ // age: { $gte: 21 },
626
+ // $text: { $search: "test" }
627
+ // };
628
+ // await processDocuments(collection, filter);
629
+ // }
630
+ // // ============================================================================
631
+ // // BULK OPERATIONS TEST
632
+ // // ============================================================================
633
+ // async function testBulkOperations() {
634
+ // const bulkOps: mongodb.AnyBulkWriteOperation<TestSchema>[] = [
635
+ // {
636
+ // updateOne: {
637
+ // filter: {
638
+ // id: "123",
639
+ // $expr: { $gt: ["$age", 18] }
640
+ // } as StrictFilter<TestSchema>,
641
+ // update: {
642
+ // $set: { isActive: true }
643
+ // } as mongodb.UpdateFilter<TestSchema>
644
+ // }
645
+ // },
646
+ // {
647
+ // deleteOne: {
648
+ // filter: {
649
+ // id: "456",
650
+ // deletedAt: { $exists: true }
651
+ // } as StrictFilter<TestSchema>
652
+ // }
653
+ // }
654
+ // ];
655
+ // await collection.bulkWrite(bulkOps);
656
+ // }
657
+ // // ============================================================================
658
+ // // EXTRA StrictFilter → mongodb.Filter casts (requested)
659
+ // // ============================================================================
660
+ // const extraCast1: mongodb.Filter<TestSchema> = ({
661
+ // 'profile.address.city': { $in: ['Paris', 'London'] },
662
+ // 'profile.email': { $regex: /@example\.com$/ }
663
+ // } as StrictFilter<TestSchema>);
664
+ // const extraCast2: mongodb.Filter<TestSchema> = ({
665
+ // $and: [{ age: { $gte: 18 } }, { isActive: true }],
666
+ // $expr: { $gt: [{ $size: '$tags' }, 0] }
667
+ // } as StrictFilter<TestSchema>);
668
+ // const extraCast3: mongodb.Filter<TestSchema> = ({
669
+ // scores: { $elemMatch: { $gte: 95 } }
670
+ // } as StrictFilter<TestSchema>);
671
+ // const extraCast4: mongodb.Filter<TestSchema> = ({
672
+ // tags: { $in: ['user'] },
673
+ // $nor: [{ 'profile.address.city': { $regex: /spam/i } }]
674
+ // } as StrictFilter<TestSchema>);
675
+ // const extraCast5: mongodb.Filter<TestSchema> = ({
676
+ // location: {
677
+ // $near: {
678
+ // $geometry: { type: 'Point', coordinates: [0, 0] },
679
+ // $maxDistance: 5000
680
+ // }
681
+ // }
682
+ // } as StrictFilter<TestSchema>);
683
+ // // Real code tests.
684
+ // class SomeClass<Data extends mongodb.Document> {
685
+ // col!: mongodb.Collection<Data>;
686
+ // cast(query: StrictFilter<Data>): void {
687
+ // const q: mongodb.Filter<Data> = query;
688
+ // }
689
+ // async find(query: StrictFilter<Data>): Promise<mongodb.WithId<Data> | undefined> {
690
+ // return await this.col.findOne(
691
+ // query,
692
+ // ) ?? undefined;
693
+ // }
694
+ // }
695
+ // // -------------------------------------------
696
+ // // Fixed type with $in etc
697
+ // // Array operator with wrong element type in filter
698
+ // const successFilterIn_1: StrictFilter<{
699
+ // status: "active" | "closed",
700
+ // }> = {
701
+ // status: {
702
+ // $in: ['active']
703
+ // }
704
+ // };
705
+ // const failedFilterIn_1: StrictFilter<{
706
+ // status: "active" | "closed",
707
+ // }> = {
708
+ // status: {
709
+ // // @ts-expect-error
710
+ // $in: ['unknown']
711
+ // }
712
+ // };