@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.
- package/backend/dist/cjs/backend/src/blacklist.d.ts +12 -0
- package/backend/dist/cjs/backend/src/blacklist.js +78 -0
- package/backend/dist/cjs/backend/src/cli.d.ts +2 -0
- package/backend/dist/cjs/backend/src/cli.js +198 -0
- package/backend/dist/cjs/backend/src/database/collection.d.ts +1765 -0
- package/backend/dist/cjs/backend/src/database/collection.js +3301 -0
- package/backend/dist/cjs/backend/src/database/database.d.ts +92 -0
- package/backend/dist/cjs/backend/src/database/database.js +170 -0
- package/backend/dist/cjs/backend/src/database/document.d.ts +1 -0
- package/backend/dist/cjs/backend/src/database/document.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
- package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.d.ts +1 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
- package/backend/dist/cjs/backend/src/database/flatten.d.ts +78 -0
- package/backend/dist/cjs/backend/src/database/flatten.js +53 -0
- package/backend/dist/cjs/backend/src/database/flatten_test.d.ts +1 -0
- package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
- package/backend/dist/cjs/backend/src/database/quota/quoata_v2.d.ts +533 -0
- package/backend/dist/cjs/backend/src/database/quota/quoata_v2.js +1046 -0
- package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +551 -0
- package/backend/dist/cjs/backend/src/database/quota/quota.js +1108 -0
- package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
- package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
- package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +412 -0
- package/backend/dist/cjs/backend/src/database/quota/safe_int.js +745 -0
- package/backend/dist/cjs/backend/src/endpoint.d.ts +346 -0
- package/backend/dist/cjs/backend/src/endpoint.js +468 -0
- package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
- package/backend/dist/cjs/backend/src/errors/index.js +25 -0
- package/backend/dist/cjs/backend/src/errors/internal_external.d.ts +52 -0
- package/backend/dist/cjs/backend/src/errors/internal_external.js +95 -0
- package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +41 -0
- package/backend/dist/cjs/backend/src/errors/invalid_usage_error.js +47 -0
- package/backend/dist/cjs/backend/src/errors/system_error.d.ts +261 -0
- package/backend/dist/cjs/backend/src/errors/system_error.js +436 -0
- package/backend/dist/cjs/backend/src/events.d.ts +97 -0
- package/backend/dist/cjs/backend/src/events.js +15 -0
- package/backend/dist/cjs/backend/src/frontend.d.ts +13 -0
- package/backend/dist/cjs/backend/src/frontend.js +56 -0
- package/backend/dist/cjs/backend/src/image_endpoint.d.ts +44 -0
- package/backend/dist/cjs/backend/src/image_endpoint.js +185 -0
- package/backend/dist/cjs/backend/src/index.d.ts +23 -0
- package/backend/dist/cjs/backend/src/index.js +70 -0
- package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
- package/backend/dist/cjs/backend/src/logger.js +15 -0
- package/backend/dist/cjs/backend/src/meta.d.ts +112 -0
- package/backend/dist/cjs/backend/src/meta.js +181 -0
- package/backend/dist/cjs/backend/src/payments/paddle.d.ts +329 -0
- package/backend/dist/cjs/backend/src/payments/paddle.js +1996 -0
- package/backend/dist/cjs/backend/src/payments/stripe/checkout.d.ts +113 -0
- package/backend/dist/cjs/backend/src/payments/stripe/checkout.js +295 -0
- package/backend/dist/cjs/backend/src/payments/stripe/customers.d.ts +17 -0
- package/backend/dist/cjs/backend/src/payments/stripe/customers.js +164 -0
- package/backend/dist/cjs/backend/src/payments/stripe/error.d.ts +74 -0
- package/backend/dist/cjs/backend/src/payments/stripe/error.js +64 -0
- package/backend/dist/cjs/backend/src/payments/stripe/events.d.ts +155 -0
- package/backend/dist/cjs/backend/src/payments/stripe/events.js +15 -0
- package/backend/dist/cjs/backend/src/payments/stripe/meters.d.ts +105 -0
- package/backend/dist/cjs/backend/src/payments/stripe/meters.js +230 -0
- package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.d.ts +58 -0
- package/backend/dist/cjs/backend/src/payments/stripe/payment_methods.js +109 -0
- package/backend/dist/cjs/backend/src/payments/stripe/products.d.ts +519 -0
- package/backend/dist/cjs/backend/src/payments/stripe/products.js +650 -0
- package/backend/dist/cjs/backend/src/payments/stripe/stripe.d.ts +215 -0
- package/backend/dist/cjs/backend/src/payments/stripe/stripe.js +468 -0
- package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.d.ts +172 -0
- package/backend/dist/cjs/backend/src/payments/stripe/subscriptions.js +557 -0
- package/backend/dist/cjs/backend/src/payments/stripe/utils.d.ts +63 -0
- package/backend/dist/cjs/backend/src/payments/stripe/utils.js +118 -0
- package/backend/dist/cjs/backend/src/payments/stripe/webhooks.d.ts +105 -0
- package/backend/dist/cjs/backend/src/payments/stripe/webhooks.js +627 -0
- package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
- package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
- package/backend/dist/cjs/backend/src/plugins/communication.d.ts +70 -0
- package/backend/dist/cjs/backend/src/plugins/communication.js +196 -0
- package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +255 -0
- package/backend/dist/cjs/backend/src/plugins/mail/mail.js +381 -0
- package/backend/dist/cjs/backend/src/plugins/mail/ui.d.ts +297 -0
- package/backend/dist/cjs/backend/src/plugins/mail/ui.js +1370 -0
- package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
- package/backend/dist/cjs/backend/src/plugins/pdf.js +1456 -0
- package/backend/dist/cjs/backend/src/plugins/thread_monitor.d.ts +18 -0
- package/backend/dist/cjs/backend/src/plugins/thread_monitor.js +116 -0
- package/backend/dist/cjs/backend/src/rate_limit.d.ts +148 -0
- package/backend/dist/cjs/backend/src/rate_limit.js +543 -0
- package/backend/dist/cjs/backend/src/route.d.ts +39 -0
- package/backend/dist/cjs/backend/src/route.js +172 -0
- package/backend/dist/cjs/backend/src/server.d.ts +502 -0
- package/backend/dist/cjs/backend/src/server.js +1710 -0
- package/backend/dist/cjs/backend/src/server.old.d.ts +594 -0
- package/backend/dist/cjs/backend/src/server.old.js +2058 -0
- package/backend/dist/cjs/backend/src/splash_screen.d.ts +93 -0
- package/backend/dist/cjs/backend/src/splash_screen.js +119 -0
- package/backend/dist/cjs/backend/src/status.d.ts +89 -0
- package/backend/dist/cjs/backend/src/status.js +211 -0
- package/backend/dist/cjs/backend/src/stream.d.ts +494 -0
- package/backend/dist/cjs/backend/src/stream.js +1370 -0
- package/backend/dist/cjs/backend/src/users.d.ts +926 -0
- package/backend/dist/cjs/backend/src/users.js +2223 -0
- package/backend/dist/cjs/backend/src/utils.d.ts +22 -0
- package/backend/dist/cjs/backend/src/utils.js +626 -0
- package/backend/dist/cjs/backend/src/view.d.ts +115 -0
- package/backend/dist/cjs/backend/src/view.js +519 -0
- package/backend/dist/cjs/backend/src/vinc.d.ts +6 -0
- package/backend/dist/cjs/backend/src/vinc.js +40 -0
- package/backend/dist/cjs/backend/src/volt.d.ts +24 -0
- package/backend/dist/cjs/backend/src/volt.js +72 -0
- package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
- package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
- package/backend/dist/cjs/package.json +1 -0
- package/backend/dist/esm/backend/src/blacklist.d.ts +12 -0
- package/backend/dist/esm/backend/src/blacklist.js +52 -0
- package/backend/dist/esm/backend/src/cli.d.ts +2 -0
- package/backend/dist/esm/backend/src/cli.js +211 -0
- package/backend/dist/esm/backend/src/database/collection.d.ts +1765 -0
- package/backend/dist/esm/backend/src/database/collection.js +3779 -0
- package/backend/dist/esm/backend/src/database/database.d.ts +92 -0
- package/backend/dist/esm/backend/src/database/database.js +214 -0
- package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/document.js +558 -0
- package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
- package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +415 -0
- package/backend/dist/esm/backend/src/database/flatten.d.ts +78 -0
- package/backend/dist/esm/backend/src/database/flatten.js +22 -0
- package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
- package/backend/dist/esm/backend/src/database/quota/quoata_v2.d.ts +533 -0
- package/backend/dist/esm/backend/src/database/quota/quoata_v2.js +1155 -0
- package/backend/dist/esm/backend/src/database/quota/quota.d.ts +551 -0
- package/backend/dist/esm/backend/src/database/quota/quota.js +1219 -0
- package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
- package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
- package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +412 -0
- package/backend/dist/esm/backend/src/database/quota/safe_int.js +810 -0
- package/backend/dist/esm/backend/src/endpoint.d.ts +346 -0
- package/backend/dist/esm/backend/src/endpoint.js +479 -0
- package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
- package/backend/dist/esm/backend/src/errors/index.js +7 -0
- package/backend/dist/esm/backend/src/errors/internal_external.d.ts +52 -0
- package/backend/dist/esm/backend/src/errors/internal_external.js +86 -0
- package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +41 -0
- package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +33 -0
- package/backend/dist/esm/backend/src/errors/system_error.d.ts +261 -0
- package/backend/dist/esm/backend/src/errors/system_error.js +444 -0
- package/backend/dist/esm/backend/src/events.d.ts +97 -0
- package/backend/dist/esm/backend/src/events.js +5 -0
- package/backend/dist/esm/backend/src/frontend.d.ts +13 -0
- package/backend/dist/esm/backend/src/frontend.js +23 -0
- package/backend/dist/esm/backend/src/image_endpoint.d.ts +44 -0
- package/backend/dist/esm/backend/src/image_endpoint.js +196 -0
- package/backend/dist/esm/backend/src/index.d.ts +23 -0
- package/backend/dist/esm/backend/src/index.js +26 -0
- package/backend/dist/esm/backend/src/logger.d.ts +5 -0
- package/backend/dist/esm/backend/src/logger.js +8 -0
- package/backend/dist/esm/backend/src/meta.d.ts +112 -0
- package/backend/dist/esm/backend/src/meta.js +152 -0
- package/backend/dist/esm/backend/src/payments/paddle.d.ts +329 -0
- package/backend/dist/esm/backend/src/payments/paddle.js +2276 -0
- package/backend/dist/esm/backend/src/payments/stripe/checkout.d.ts +113 -0
- package/backend/dist/esm/backend/src/payments/stripe/checkout.js +356 -0
- package/backend/dist/esm/backend/src/payments/stripe/customers.d.ts +17 -0
- package/backend/dist/esm/backend/src/payments/stripe/customers.js +193 -0
- package/backend/dist/esm/backend/src/payments/stripe/error.d.ts +74 -0
- package/backend/dist/esm/backend/src/payments/stripe/error.js +51 -0
- package/backend/dist/esm/backend/src/payments/stripe/events.d.ts +155 -0
- package/backend/dist/esm/backend/src/payments/stripe/events.js +5 -0
- package/backend/dist/esm/backend/src/payments/stripe/meters.d.ts +105 -0
- package/backend/dist/esm/backend/src/payments/stripe/meters.js +318 -0
- package/backend/dist/esm/backend/src/payments/stripe/payment_methods.d.ts +58 -0
- package/backend/dist/esm/backend/src/payments/stripe/payment_methods.js +135 -0
- package/backend/dist/esm/backend/src/payments/stripe/products.d.ts +519 -0
- package/backend/dist/esm/backend/src/payments/stripe/products.js +896 -0
- package/backend/dist/esm/backend/src/payments/stripe/stripe.d.ts +215 -0
- package/backend/dist/esm/backend/src/payments/stripe/stripe.js +464 -0
- package/backend/dist/esm/backend/src/payments/stripe/subscriptions.d.ts +172 -0
- package/backend/dist/esm/backend/src/payments/stripe/subscriptions.js +754 -0
- package/backend/dist/esm/backend/src/payments/stripe/utils.d.ts +63 -0
- package/backend/dist/esm/backend/src/payments/stripe/utils.js +131 -0
- package/backend/dist/esm/backend/src/payments/stripe/webhooks.d.ts +105 -0
- package/backend/dist/esm/backend/src/payments/stripe/webhooks.js +752 -0
- package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
- package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
- package/backend/dist/esm/backend/src/plugins/communication.d.ts +70 -0
- package/backend/dist/esm/backend/src/plugins/communication.js +169 -0
- package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +255 -0
- package/backend/dist/esm/backend/src/plugins/mail/mail.js +396 -0
- package/backend/dist/esm/backend/src/plugins/mail/ui.d.ts +297 -0
- package/backend/dist/esm/backend/src/plugins/mail/ui.js +1400 -0
- package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
- package/backend/dist/esm/backend/src/plugins/pdf.js +1694 -0
- package/backend/dist/esm/backend/src/plugins/thread_monitor.d.ts +18 -0
- package/backend/dist/esm/backend/src/plugins/thread_monitor.js +120 -0
- package/backend/dist/esm/backend/src/rate_limit.d.ts +148 -0
- package/backend/dist/esm/backend/src/rate_limit.js +667 -0
- package/backend/dist/esm/backend/src/route.d.ts +39 -0
- package/backend/dist/esm/backend/src/route.js +222 -0
- package/backend/dist/esm/backend/src/server.d.ts +502 -0
- package/backend/dist/esm/backend/src/server.js +2031 -0
- package/backend/dist/esm/backend/src/server.old.d.ts +594 -0
- package/backend/dist/esm/backend/src/server.old.js +2630 -0
- package/backend/dist/esm/backend/src/splash_screen.d.ts +93 -0
- package/backend/dist/esm/backend/src/splash_screen.js +156 -0
- package/backend/dist/esm/backend/src/status.d.ts +89 -0
- package/backend/dist/esm/backend/src/status.js +213 -0
- package/backend/dist/esm/backend/src/stream.d.ts +494 -0
- package/backend/dist/esm/backend/src/stream.js +1611 -0
- package/backend/dist/esm/backend/src/users.d.ts +926 -0
- package/backend/dist/esm/backend/src/users.js +2423 -0
- package/backend/dist/esm/backend/src/utils.d.ts +22 -0
- package/backend/dist/esm/backend/src/utils.js +463 -0
- package/backend/dist/esm/backend/src/view.d.ts +115 -0
- package/backend/dist/esm/backend/src/view.js +584 -0
- package/backend/dist/esm/backend/src/vinc.d.ts +6 -0
- package/backend/dist/esm/backend/src/vinc.js +6 -0
- package/backend/dist/esm/backend/src/volt.d.ts +24 -0
- package/backend/dist/esm/backend/src/volt.js +27 -0
- package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
- package/backend/dist/esm/frontend/src/modules/request.js +117 -0
- package/frontend/dist/backend/src/database/collection.d.ts +1765 -0
- package/frontend/dist/backend/src/database/collection.js +3779 -0
- package/frontend/dist/backend/src/database/database.d.ts +92 -0
- package/frontend/dist/backend/src/database/database.js +214 -0
- package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
- package/frontend/dist/backend/src/database/filters/filters.js +1 -0
- package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
- package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
- package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
- package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
- package/frontend/dist/backend/src/database/flatten.d.ts +78 -0
- package/frontend/dist/backend/src/database/flatten.js +22 -0
- package/frontend/dist/backend/src/endpoint.d.ts +346 -0
- package/frontend/dist/backend/src/endpoint.js +479 -0
- package/frontend/dist/backend/src/errors/index.d.ts +7 -0
- package/frontend/dist/backend/src/errors/index.js +7 -0
- package/frontend/dist/backend/src/errors/internal_external.d.ts +52 -0
- package/frontend/dist/backend/src/errors/internal_external.js +86 -0
- package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +41 -0
- package/frontend/dist/backend/src/errors/invalid_usage_error.js +33 -0
- package/frontend/dist/backend/src/errors/system_error.d.ts +261 -0
- package/frontend/dist/backend/src/errors/system_error.js +444 -0
- package/frontend/dist/backend/src/events.d.ts +97 -0
- package/frontend/dist/backend/src/events.js +5 -0
- package/frontend/dist/backend/src/frontend.d.ts +13 -0
- package/frontend/dist/backend/src/frontend.js +23 -0
- package/frontend/dist/backend/src/image_endpoint.d.ts +44 -0
- package/frontend/dist/backend/src/image_endpoint.js +196 -0
- package/frontend/dist/backend/src/meta.d.ts +112 -0
- package/frontend/dist/backend/src/meta.js +152 -0
- package/frontend/dist/backend/src/payments/paddle.d.ts +329 -0
- package/frontend/dist/backend/src/payments/paddle.js +2276 -0
- package/frontend/dist/backend/src/payments/stripe/checkout.d.ts +113 -0
- package/frontend/dist/backend/src/payments/stripe/checkout.js +356 -0
- package/frontend/dist/backend/src/payments/stripe/customers.d.ts +17 -0
- package/frontend/dist/backend/src/payments/stripe/customers.js +193 -0
- package/frontend/dist/backend/src/payments/stripe/error.d.ts +74 -0
- package/frontend/dist/backend/src/payments/stripe/error.js +51 -0
- package/frontend/dist/backend/src/payments/stripe/events.d.ts +155 -0
- package/frontend/dist/backend/src/payments/stripe/events.js +5 -0
- package/frontend/dist/backend/src/payments/stripe/meters.d.ts +105 -0
- package/frontend/dist/backend/src/payments/stripe/meters.js +318 -0
- package/frontend/dist/backend/src/payments/stripe/payment_methods.d.ts +58 -0
- package/frontend/dist/backend/src/payments/stripe/payment_methods.js +135 -0
- package/frontend/dist/backend/src/payments/stripe/products.d.ts +519 -0
- package/frontend/dist/backend/src/payments/stripe/products.js +896 -0
- package/frontend/dist/backend/src/payments/stripe/stripe.d.ts +215 -0
- package/frontend/dist/backend/src/payments/stripe/stripe.js +464 -0
- package/frontend/dist/backend/src/payments/stripe/subscriptions.d.ts +172 -0
- package/frontend/dist/backend/src/payments/stripe/subscriptions.js +754 -0
- package/frontend/dist/backend/src/payments/stripe/utils.d.ts +63 -0
- package/frontend/dist/backend/src/payments/stripe/utils.js +131 -0
- package/frontend/dist/backend/src/payments/stripe/webhooks.d.ts +105 -0
- package/frontend/dist/backend/src/payments/stripe/webhooks.js +752 -0
- package/frontend/dist/backend/src/plugins/mail/mail.d.ts +255 -0
- package/frontend/dist/backend/src/plugins/mail/mail.js +396 -0
- package/frontend/dist/backend/src/plugins/mail/ui.d.ts +297 -0
- package/frontend/dist/backend/src/plugins/mail/ui.js +1400 -0
- package/frontend/dist/backend/src/rate_limit.d.ts +148 -0
- package/frontend/dist/backend/src/rate_limit.js +667 -0
- package/frontend/dist/backend/src/route.d.ts +39 -0
- package/frontend/dist/backend/src/route.js +222 -0
- package/frontend/dist/backend/src/server.d.ts +502 -0
- package/frontend/dist/backend/src/server.js +2031 -0
- package/frontend/dist/backend/src/splash_screen.d.ts +93 -0
- package/frontend/dist/backend/src/splash_screen.js +156 -0
- package/frontend/dist/backend/src/status.d.ts +89 -0
- package/frontend/dist/backend/src/status.js +213 -0
- package/frontend/dist/backend/src/stream.d.ts +494 -0
- package/frontend/dist/backend/src/stream.js +1611 -0
- package/frontend/dist/backend/src/users.d.ts +926 -0
- package/frontend/dist/backend/src/users.js +2423 -0
- package/frontend/dist/backend/src/utils.d.ts +22 -0
- package/frontend/dist/backend/src/utils.js +463 -0
- package/frontend/dist/backend/src/view.d.ts +115 -0
- package/frontend/dist/backend/src/view.js +584 -0
- package/frontend/dist/frontend/src/css/adyen.css +92 -0
- package/frontend/dist/frontend/src/css/volt.css +75 -0
- package/frontend/dist/frontend/src/elements/base.d.ts +3743 -0
- package/frontend/dist/frontend/src/elements/base.js +12151 -0
- package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
- package/frontend/dist/frontend/src/elements/module.js +216 -0
- package/frontend/dist/frontend/src/elements/register_element.d.ts +3 -0
- package/frontend/dist/frontend/src/elements/register_element.js +22 -0
- package/frontend/dist/frontend/src/elements/resize_query_manager.d.ts +0 -0
- package/frontend/dist/frontend/src/elements/resize_query_manager.js +150 -0
- package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
- package/frontend/dist/frontend/src/elements/types.js +5 -0
- package/frontend/dist/frontend/src/index.d.ts +21 -0
- package/frontend/dist/frontend/src/index.js +29 -0
- package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
- package/frontend/dist/frontend/src/modules/attachment.js +306 -0
- package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
- package/frontend/dist/frontend/src/modules/auth.js +80 -0
- package/frontend/dist/frontend/src/modules/color.d.ts +160 -0
- package/frontend/dist/frontend/src/modules/color.js +316 -0
- package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
- package/frontend/dist/frontend/src/modules/compression.js +102 -0
- package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
- package/frontend/dist/frontend/src/modules/cookies.js +143 -0
- package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
- package/frontend/dist/frontend/src/modules/events.js +79 -0
- package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
- package/frontend/dist/frontend/src/modules/google.js +52 -0
- package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
- package/frontend/dist/frontend/src/modules/meta.js +48 -0
- package/frontend/dist/frontend/src/modules/paddle.d.ts +1207 -0
- package/frontend/dist/frontend/src/modules/paddle.js +2594 -0
- package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
- package/frontend/dist/frontend/src/modules/request.js +117 -0
- package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
- package/frontend/dist/frontend/src/modules/settings.js +5 -0
- package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
- package/frontend/dist/frontend/src/modules/statics.js +43 -0
- package/frontend/dist/frontend/src/modules/stripe/cart.d.ts +112 -0
- package/frontend/dist/frontend/src/modules/stripe/cart.js +321 -0
- package/frontend/dist/frontend/src/modules/stripe/checkout.d.ts +7 -0
- package/frontend/dist/frontend/src/modules/stripe/checkout.js +37 -0
- package/frontend/dist/frontend/src/modules/stripe/index.m.d.ts +6 -0
- package/frontend/dist/frontend/src/modules/stripe/index.m.js +6 -0
- package/frontend/dist/frontend/src/modules/stripe/payments.d.ts +58 -0
- package/frontend/dist/frontend/src/modules/stripe/payments.js +92 -0
- package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
- package/frontend/dist/frontend/src/modules/support.js +53 -0
- package/frontend/dist/frontend/src/modules/theme.d.ts +133 -0
- package/frontend/dist/frontend/src/modules/theme.js +406 -0
- package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
- package/frontend/dist/frontend/src/modules/themes.js +22 -0
- package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
- package/frontend/dist/frontend/src/modules/user.js +270 -0
- package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
- package/frontend/dist/frontend/src/modules/utils.js +569 -0
- package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
- package/frontend/dist/frontend/src/types/gradient.js +79 -0
- package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
- package/frontend/dist/frontend/src/ui/border_button.js +228 -0
- package/frontend/dist/frontend/src/ui/button.d.ts +241 -0
- package/frontend/dist/frontend/src/ui/button.js +682 -0
- package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
- package/frontend/dist/frontend/src/ui/canvas.js +444 -0
- package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
- package/frontend/dist/frontend/src/ui/checkbox.js +321 -0
- package/frontend/dist/frontend/src/ui/code.d.ts +235 -0
- package/frontend/dist/frontend/src/ui/code.js +1007 -0
- package/frontend/dist/frontend/src/ui/context_menu.d.ts +36 -0
- package/frontend/dist/frontend/src/ui/context_menu.js +205 -0
- package/frontend/dist/frontend/src/ui/css.d.ts +16 -0
- package/frontend/dist/frontend/src/ui/css.js +48 -0
- package/frontend/dist/frontend/src/ui/divider.d.ts +15 -0
- package/frontend/dist/frontend/src/ui/divider.js +78 -0
- package/frontend/dist/frontend/src/ui/dropdown.d.ts +176 -0
- package/frontend/dist/frontend/src/ui/dropdown.js +481 -0
- package/frontend/dist/frontend/src/ui/for_each.d.ts +37 -0
- package/frontend/dist/frontend/src/ui/for_each.js +92 -0
- package/frontend/dist/frontend/src/ui/form.d.ts +34 -0
- package/frontend/dist/frontend/src/ui/form.js +233 -0
- package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
- package/frontend/dist/frontend/src/ui/frame_modes.js +108 -0
- package/frontend/dist/frontend/src/ui/google_map.d.ts +24 -0
- package/frontend/dist/frontend/src/ui/google_map.js +106 -0
- package/frontend/dist/frontend/src/ui/gradient.d.ts +25 -0
- package/frontend/dist/frontend/src/ui/gradient.js +131 -0
- package/frontend/dist/frontend/src/ui/image.d.ts +111 -0
- package/frontend/dist/frontend/src/ui/image.js +576 -0
- package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
- package/frontend/dist/frontend/src/ui/input.js +1201 -0
- package/frontend/dist/frontend/src/ui/link.d.ts +25 -0
- package/frontend/dist/frontend/src/ui/link.js +140 -0
- package/frontend/dist/frontend/src/ui/list.d.ts +37 -0
- package/frontend/dist/frontend/src/ui/list.js +170 -0
- package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
- package/frontend/dist/frontend/src/ui/loader_button.js +193 -0
- package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
- package/frontend/dist/frontend/src/ui/loaders.js +157 -0
- package/frontend/dist/frontend/src/ui/popup.d.ts +94 -0
- package/frontend/dist/frontend/src/ui/popup.js +510 -0
- package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
- package/frontend/dist/frontend/src/ui/pseudo.js +154 -0
- package/frontend/dist/frontend/src/ui/scroller.d.ts +105 -0
- package/frontend/dist/frontend/src/ui/scroller.js +1253 -0
- package/frontend/dist/frontend/src/ui/slider.d.ts +45 -0
- package/frontend/dist/frontend/src/ui/slider.js +217 -0
- package/frontend/dist/frontend/src/ui/spacer.d.ts +15 -0
- package/frontend/dist/frontend/src/ui/spacer.js +78 -0
- package/frontend/dist/frontend/src/ui/span.d.ts +15 -0
- package/frontend/dist/frontend/src/ui/span.js +73 -0
- package/frontend/dist/frontend/src/ui/stack.d.ts +66 -0
- package/frontend/dist/frontend/src/ui/stack.js +335 -0
- package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
- package/frontend/dist/frontend/src/ui/steps.js +308 -0
- package/frontend/dist/frontend/src/ui/style.d.ts +17 -0
- package/frontend/dist/frontend/src/ui/style.js +73 -0
- package/frontend/dist/frontend/src/ui/switch.d.ts +69 -0
- package/frontend/dist/frontend/src/ui/switch.js +357 -0
- package/frontend/dist/frontend/src/ui/table.d.ts +100 -0
- package/frontend/dist/frontend/src/ui/table.js +405 -0
- package/frontend/dist/frontend/src/ui/tabs.d.ts +111 -0
- package/frontend/dist/frontend/src/ui/tabs.js +424 -0
- package/frontend/dist/frontend/src/ui/text.d.ts +15 -0
- package/frontend/dist/frontend/src/ui/text.js +83 -0
- package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
- package/frontend/dist/frontend/src/ui/title.js +272 -0
- package/frontend/dist/frontend/src/ui/ui.d.ts +35 -0
- package/frontend/dist/frontend/src/ui/ui.js +38 -0
- package/frontend/dist/frontend/src/ui/view.d.ts +15 -0
- package/frontend/dist/frontend/src/ui/view.js +88 -0
- package/frontend/dist/frontend/src/volt.d.ts +20 -0
- package/frontend/dist/frontend/src/volt.js +27 -0
- package/package.json +7 -2
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2025 - 2025 Daan van den Bergh. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
// External imports.
|
|
6
|
+
import * as vlib from "@vandenberghinc/vlib";
|
|
7
|
+
/**
|
|
8
|
+
* The system error.
|
|
9
|
+
* Used to indicate a fatal system error that should not occur and should be reported to developers.
|
|
10
|
+
* When created, it is logged and (optionally) persisted to the configured collection.
|
|
11
|
+
* @nav Errors
|
|
12
|
+
* @docs
|
|
13
|
+
*/
|
|
14
|
+
export class SystemError extends Error {
|
|
15
|
+
/**
|
|
16
|
+
* The default logger to dump messages to.
|
|
17
|
+
* This can either be `console` or a custom logger such as `FileLogger`.
|
|
18
|
+
*
|
|
19
|
+
* This logger is shared across all system errors,
|
|
20
|
+
* unless a specific logger is passed to the {@link SystemError.Opts} constructor options.
|
|
21
|
+
*/
|
|
22
|
+
static logger = console;
|
|
23
|
+
/**
|
|
24
|
+
* The default collection to save the error to.
|
|
25
|
+
*
|
|
26
|
+
* This collection is shared across all system errors,
|
|
27
|
+
* unless a specific collection is passed to the {@link SystemError.Opts} constructor options.
|
|
28
|
+
*
|
|
29
|
+
* @warning
|
|
30
|
+
* If both {@link SystemError.collection} and field {@link SystemError.Opts.collection} are undefined,
|
|
31
|
+
* the error will not be saved to the database.
|
|
32
|
+
*
|
|
33
|
+
* @note Ensure a database index is created for field `id`.
|
|
34
|
+
*/
|
|
35
|
+
static collection;
|
|
36
|
+
/**
|
|
37
|
+
* Set a collection that will be used as default to save system errors to.
|
|
38
|
+
*
|
|
39
|
+
* @param collection The collection options to use.
|
|
40
|
+
*
|
|
41
|
+
* @docs
|
|
42
|
+
*/
|
|
43
|
+
static set_collection(opts) {
|
|
44
|
+
SystemError.collection = opts.server.db.collection({
|
|
45
|
+
name: opts.name,
|
|
46
|
+
ttl: opts.ttl,
|
|
47
|
+
indexes: [
|
|
48
|
+
{ keys: { id: 1 }, unique: true, forced: true }
|
|
49
|
+
],
|
|
50
|
+
record_version: 1,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Configure the newly created system error instances,
|
|
55
|
+
* assigning a global database collection and logger instance.
|
|
56
|
+
*
|
|
57
|
+
* @docs
|
|
58
|
+
*/
|
|
59
|
+
static setup(opts) {
|
|
60
|
+
SystemError.collection = opts.server.db.collection({
|
|
61
|
+
name: opts.collection.name,
|
|
62
|
+
ttl: opts.collection.ttl,
|
|
63
|
+
indexes: [
|
|
64
|
+
{ keys: { id: 1 }, unique: true, forced: true }
|
|
65
|
+
],
|
|
66
|
+
record_version: 1,
|
|
67
|
+
});
|
|
68
|
+
SystemError.logger = opts.logger ?? opts.server.log;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The generated identifier length (characters) for error IDs.
|
|
72
|
+
* Defaults to 256 to preserve existing behavior; tune per database constraints.
|
|
73
|
+
*/
|
|
74
|
+
static id_length = 256;
|
|
75
|
+
/**
|
|
76
|
+
* The maximum length for the stringified {@link SystemError.details} field when saved to the database collection as a string.
|
|
77
|
+
* The `details` field is stringified when it (a) contains cycles or non-plain structures, or (b) its full JSON size exceeds
|
|
78
|
+
* {@link SystemError.max_details_length}. Otherwise, the redacted plain object/array is stored.
|
|
79
|
+
*/
|
|
80
|
+
static max_details_length = 10_000;
|
|
81
|
+
/**
|
|
82
|
+
* A unique id for this error instance.
|
|
83
|
+
* Unique to this system error instance.
|
|
84
|
+
*/
|
|
85
|
+
id;
|
|
86
|
+
/** The attached message. */
|
|
87
|
+
message;
|
|
88
|
+
/** The attached details. */
|
|
89
|
+
details;
|
|
90
|
+
/** A nested error cause. */
|
|
91
|
+
cause;
|
|
92
|
+
/** The collection to save the error to. */
|
|
93
|
+
collection;
|
|
94
|
+
/**
|
|
95
|
+
* The logger to dump messages to.
|
|
96
|
+
* Defaults to static attribute {@link SystemError.logger}.
|
|
97
|
+
*/
|
|
98
|
+
logger;
|
|
99
|
+
/**
|
|
100
|
+
* An optional owner field.
|
|
101
|
+
* For instance system errors saved by the {@link QuotaManager} have an owner of `volt.QuotaManager`.
|
|
102
|
+
*/
|
|
103
|
+
owner;
|
|
104
|
+
/** The creation timestamp in milliseconds since Unix epoch. */
|
|
105
|
+
timestamp;
|
|
106
|
+
/** The captured stacktrace of the creation of the system error. */
|
|
107
|
+
trace;
|
|
108
|
+
/** A cache for the result of format({ colored: true }). */
|
|
109
|
+
_format_colored;
|
|
110
|
+
/** A cache for the result of format({ colored: false }). */
|
|
111
|
+
_format_non_colored;
|
|
112
|
+
/**
|
|
113
|
+
* Private constructor.
|
|
114
|
+
* Use {@link SystemError.create} or {@link SystemError.create_detach} to create a new system error.
|
|
115
|
+
*/
|
|
116
|
+
constructor(opts) {
|
|
117
|
+
super(opts.message);
|
|
118
|
+
// Ensures `instanceof SystemError` works in all transpilation targets.
|
|
119
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
120
|
+
// Attributes.
|
|
121
|
+
this.message = opts.message;
|
|
122
|
+
this.details = opts.details;
|
|
123
|
+
this.collection = opts.collection ?? SystemError.collection;
|
|
124
|
+
this.logger = opts.logger ?? SystemError.logger;
|
|
125
|
+
this.owner = opts.owner;
|
|
126
|
+
// Define 'cause' as non-enumerable to avoid accidental leakage on serialization.
|
|
127
|
+
if (opts.cause) {
|
|
128
|
+
Object.defineProperty(this, "cause", {
|
|
129
|
+
value: opts.cause,
|
|
130
|
+
enumerable: false,
|
|
131
|
+
configurable: true,
|
|
132
|
+
writable: true,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
// Generate an id.
|
|
136
|
+
this.id = vlib.String.random(SystemError.id_length, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
|
|
137
|
+
// Set error instance name.
|
|
138
|
+
this.name = "SystemError";
|
|
139
|
+
// Add timestamp.
|
|
140
|
+
this.timestamp = Date.now();
|
|
141
|
+
/** Capture a robust stack trace at the point of creation (cross-env safe). */
|
|
142
|
+
const holder = { name: "X", message: "Y" };
|
|
143
|
+
let prev_limit;
|
|
144
|
+
try {
|
|
145
|
+
// Feature-detect Node API.
|
|
146
|
+
const has_capture = typeof Error.captureStackTrace === "function";
|
|
147
|
+
const has_limit = typeof Error.stackTraceLimit === "number";
|
|
148
|
+
if (has_limit) {
|
|
149
|
+
prev_limit = Error.stackTraceLimit;
|
|
150
|
+
Error.stackTraceLimit = 35;
|
|
151
|
+
}
|
|
152
|
+
if (has_capture) {
|
|
153
|
+
Error.captureStackTrace(holder, this.constructor);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Fallback: use current error stack
|
|
157
|
+
holder.stack = this.stack;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
if (typeof prev_limit === "number") {
|
|
162
|
+
Error.stackTraceLimit = prev_limit;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
this.trace = (holder.stack || "")
|
|
166
|
+
.split("\n")
|
|
167
|
+
.slice(1)
|
|
168
|
+
.map((line) => line.trim());
|
|
169
|
+
// Dont log from here, log from create or create_detach.
|
|
170
|
+
// Perhaps we also want to create a constructor for loaded sys errs later.
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Construct a system error & save it to the database.
|
|
174
|
+
* @docs
|
|
175
|
+
*/
|
|
176
|
+
static async create(opts) {
|
|
177
|
+
const error = new SystemError(opts);
|
|
178
|
+
const formatted = error.format({ colored: false });
|
|
179
|
+
console.error("[debug]", formatted);
|
|
180
|
+
if (error.logger) {
|
|
181
|
+
error.logger.error(formatted);
|
|
182
|
+
}
|
|
183
|
+
if (error.collection) {
|
|
184
|
+
await error.collection.set({ id: error.id }, error.document(), { retry: 25, });
|
|
185
|
+
}
|
|
186
|
+
return error;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Construct a system error & save it to the database.
|
|
190
|
+
* This is a synchronous version of the create method.
|
|
191
|
+
* Beware that this does not join the async save operation,
|
|
192
|
+
* Instead it detaches and catches and logs any errors that occur during saving
|
|
193
|
+
* @docs
|
|
194
|
+
*/
|
|
195
|
+
static create_detach(opts) {
|
|
196
|
+
const error = new SystemError(opts);
|
|
197
|
+
const formatted = error.format({ colored: false });
|
|
198
|
+
console.error("[debug]", formatted);
|
|
199
|
+
if (error.logger) {
|
|
200
|
+
error.logger.error(formatted);
|
|
201
|
+
}
|
|
202
|
+
if (error.collection) {
|
|
203
|
+
void error.collection.set({ id: error.id }, error.document(), { retry: 25 }).catch((e) => {
|
|
204
|
+
try {
|
|
205
|
+
error.logger.error(`Failed to save system error to database: ${e instanceof Error ? e.message : String(e)}\n` + error.format({ colored: false }));
|
|
206
|
+
}
|
|
207
|
+
catch (_) { /** ignore */ }
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return error;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get the error as a database document.
|
|
214
|
+
*
|
|
215
|
+
* @returns A plain object representing the system error for database storage.
|
|
216
|
+
* @docs
|
|
217
|
+
*/
|
|
218
|
+
document() {
|
|
219
|
+
const doc = {
|
|
220
|
+
id: this.id,
|
|
221
|
+
message: this.message,
|
|
222
|
+
timestamp: this.timestamp,
|
|
223
|
+
trace: this.trace,
|
|
224
|
+
stack: this.stack,
|
|
225
|
+
format: vlib.String.truncate(this.format({ colored: false }), 10_000),
|
|
226
|
+
};
|
|
227
|
+
if (this.details) {
|
|
228
|
+
try {
|
|
229
|
+
doc.details = this.prepare_details_for_db();
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
doc.details = `Encountered an error while processing details: ${e instanceof Error ? e.message : String(e)}`;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (this.owner != null) {
|
|
236
|
+
doc.owner = this.owner;
|
|
237
|
+
}
|
|
238
|
+
if (this.cause) {
|
|
239
|
+
doc.error = {
|
|
240
|
+
name: this.cause.name,
|
|
241
|
+
message: this.cause.message,
|
|
242
|
+
stack: this.cause.stack,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return doc;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Format the error as a string.
|
|
249
|
+
* @param colored Present the formatted error with colors to make it more visually pleasing.
|
|
250
|
+
* Defaults to `false`.
|
|
251
|
+
* @returns A string representation of the system error.
|
|
252
|
+
* @docs
|
|
253
|
+
*/
|
|
254
|
+
format({ colored = false } = {}) {
|
|
255
|
+
if (colored && this._format_colored)
|
|
256
|
+
return this._format_colored;
|
|
257
|
+
else if (!colored && this._format_non_colored)
|
|
258
|
+
return this._format_non_colored;
|
|
259
|
+
try {
|
|
260
|
+
const green = (m) => colored ? vlib.Color.green(m) : m;
|
|
261
|
+
const lines = [
|
|
262
|
+
`SystemError: ${this.message}`,
|
|
263
|
+
];
|
|
264
|
+
if (this.trace) {
|
|
265
|
+
lines.push(...this.trace.map(l => ` ${l}`));
|
|
266
|
+
}
|
|
267
|
+
lines.push(` error_id: ${green('"' + this.id + '"')}`);
|
|
268
|
+
if (this.owner != null) {
|
|
269
|
+
lines.push(` owner: ${green('"' + this.owner + '"')}`);
|
|
270
|
+
}
|
|
271
|
+
let details;
|
|
272
|
+
try {
|
|
273
|
+
details = vlib.Object.stringify(this.redact_secrets(this.details), {
|
|
274
|
+
indent: 2,
|
|
275
|
+
start_indent: 1,
|
|
276
|
+
colored: colored,
|
|
277
|
+
max_length: 1000,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
details = `Encountered an error while processing details: ${e instanceof Error ? e.message : String(e)}`;
|
|
282
|
+
}
|
|
283
|
+
lines.push(` created_at: ${green('"' + new Date(this.timestamp).toISOString() + '"')}`, ` details: ${details}`);
|
|
284
|
+
if (this.cause) {
|
|
285
|
+
lines.push(` nested error:`,
|
|
286
|
+
// ...(this.cause?.stack ?? this.cause.toString()).split("\n")
|
|
287
|
+
// .map(line => ` ${line.trim()}`)
|
|
288
|
+
vlib.logging.format_error(this.cause, {
|
|
289
|
+
colored: colored,
|
|
290
|
+
indent: 2,
|
|
291
|
+
start_indent: 2,
|
|
292
|
+
}));
|
|
293
|
+
}
|
|
294
|
+
if (colored) {
|
|
295
|
+
return this._format_colored = lines.join("\n");
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
return this._format_non_colored = lines.join("\n");
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
catch (e) {
|
|
302
|
+
return `Encountered an error while formatting the system error: ${e instanceof Error ? e.message : String(e)}`;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Convert the error to a string without ANSI colors to avoid leaking escape codes into sinks
|
|
307
|
+
* (e.g., files, JSON logs) that assume plain text.
|
|
308
|
+
* @returns Non-colored string representation of the error.
|
|
309
|
+
* @docs
|
|
310
|
+
*/
|
|
311
|
+
toString() {
|
|
312
|
+
return this.format({ colored: false });
|
|
313
|
+
}
|
|
314
|
+
// ----------------------------------------------------------
|
|
315
|
+
// Private methods.
|
|
316
|
+
/**
|
|
317
|
+
* Detect a plain object (no custom prototype, not an array).
|
|
318
|
+
* @param v - The value to test.
|
|
319
|
+
*/
|
|
320
|
+
is_plain_object(v) {
|
|
321
|
+
if (v === null || typeof v !== "object" || Array.isArray(v))
|
|
322
|
+
return false;
|
|
323
|
+
const proto = Object.getPrototypeOf(v);
|
|
324
|
+
return proto === Object.prototype || proto === null;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Inspect and prepare the details for safe storage in `SystemError.Document.details`.
|
|
328
|
+
*
|
|
329
|
+
* @returns
|
|
330
|
+
* - `undefined` if no details were defined.
|
|
331
|
+
* - A string if (a) the value contains circular references, (b) it is not a plain object / array,
|
|
332
|
+
* or (c) the full stringified representation exceeds {@link SystemError.max_details_length}.
|
|
333
|
+
* - Otherwise, the redacted raw object is returned.
|
|
334
|
+
*/
|
|
335
|
+
prepare_details_for_db() {
|
|
336
|
+
if (!this.details)
|
|
337
|
+
return undefined;
|
|
338
|
+
/**
|
|
339
|
+
* Recursively verify JSON-safety and detect cycles using path-level tracking.
|
|
340
|
+
* @param val - The value to traverse.
|
|
341
|
+
* @param in_path - WeakSet to track the current recursion path for cycles.
|
|
342
|
+
*/
|
|
343
|
+
const is_json_safe = (val, in_path = new WeakSet()) => {
|
|
344
|
+
if (val == null)
|
|
345
|
+
return true;
|
|
346
|
+
const t = typeof val;
|
|
347
|
+
if (t === "undefined" || t === "boolean" || t === "number" || t === "string")
|
|
348
|
+
return true;
|
|
349
|
+
if (t === "function" || t === "symbol" || t === "bigint")
|
|
350
|
+
return false;
|
|
351
|
+
if (val instanceof String || val instanceof Date)
|
|
352
|
+
return true;
|
|
353
|
+
if (typeof val === "object") {
|
|
354
|
+
const obj = val;
|
|
355
|
+
if (in_path.has(obj))
|
|
356
|
+
return false; // cycle
|
|
357
|
+
in_path.add(obj);
|
|
358
|
+
if (Array.isArray(obj)) {
|
|
359
|
+
for (const item of obj) {
|
|
360
|
+
if (!is_json_safe(item, in_path)) {
|
|
361
|
+
in_path.delete(obj);
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
in_path.delete(obj);
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
if (this.is_plain_object(obj)) {
|
|
369
|
+
for (const v of Object.values(obj)) {
|
|
370
|
+
if (!is_json_safe(v, in_path)) {
|
|
371
|
+
in_path.delete(obj);
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
in_path.delete(obj);
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
in_path.delete(obj);
|
|
379
|
+
return false; // Non-plain object (Map/Set/RegExp/etc.)
|
|
380
|
+
}
|
|
381
|
+
return false;
|
|
382
|
+
};
|
|
383
|
+
// Redact early (never mutate the original).
|
|
384
|
+
const redacted = this.redact_secrets(this.details);
|
|
385
|
+
// If structurally unsafe => stringify (capped).
|
|
386
|
+
if (!is_json_safe(redacted)) {
|
|
387
|
+
return vlib.Object.stringify(redacted, {
|
|
388
|
+
colored: false,
|
|
389
|
+
max_length: SystemError.max_details_length,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
// Measure the *full* length (no cap) to decide storage shape.
|
|
393
|
+
// Measure the *full* length (no cap) to decide storage shape.
|
|
394
|
+
let full_string;
|
|
395
|
+
try {
|
|
396
|
+
full_string = JSON.stringify(redacted);
|
|
397
|
+
}
|
|
398
|
+
catch (_) {
|
|
399
|
+
// Extremely defensive fallback; should not execute after JSON-safety verification.
|
|
400
|
+
full_string = vlib.Object.stringify(redacted, { colored: false });
|
|
401
|
+
}
|
|
402
|
+
if (full_string.length > SystemError.max_details_length) {
|
|
403
|
+
// Persist as a truncated string to enforce the size budget.
|
|
404
|
+
return vlib.String.truncate(full_string, SystemError.max_details_length);
|
|
405
|
+
}
|
|
406
|
+
// Safe & within budget: store as object.
|
|
407
|
+
return redacted;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Deep-clone arrays/plain objects and redact sensitive keys (best-effort).
|
|
411
|
+
* Does not mutate the source object.
|
|
412
|
+
* Uses a null-prototype object & explicit property definitions to prevent prototype pollution via magic keys.
|
|
413
|
+
* @param input - The value to clone & redact.
|
|
414
|
+
* @returns A redacted deep clone of the input.
|
|
415
|
+
*/
|
|
416
|
+
redact_secrets(input) {
|
|
417
|
+
const sensitive = /^(password|pass|secret|api[_-]?key|token|access[_-]?token|refresh[_-]?token|authorization|auth|cookie|session|private[_-]?key|client[_-]?secret)$/i;
|
|
418
|
+
const define_plain = (obj, key, value) => {
|
|
419
|
+
Object.defineProperty(obj, key, { value, enumerable: true, writable: true, configurable: true });
|
|
420
|
+
};
|
|
421
|
+
const clone = (val) => {
|
|
422
|
+
if (val == null)
|
|
423
|
+
return val;
|
|
424
|
+
if (Array.isArray(val))
|
|
425
|
+
return val.map(clone);
|
|
426
|
+
if (this.is_plain_object(val)) {
|
|
427
|
+
const out = Object.create(null);
|
|
428
|
+
for (const [k, v] of Object.entries(val)) {
|
|
429
|
+
if (sensitive.test(k)) {
|
|
430
|
+
define_plain(out, k, "[REDACTED]");
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
define_plain(out, k, clone(v));
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return out;
|
|
437
|
+
}
|
|
438
|
+
// Leave other types as-is.
|
|
439
|
+
return val;
|
|
440
|
+
};
|
|
441
|
+
return clone(input);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh.
|
|
4
|
+
*/
|
|
5
|
+
import * as vlib from "@vandenberghinc/vlib";
|
|
6
|
+
import { User } from "./users.js";
|
|
7
|
+
import { MailElement } from "./plugins/mail/ui.js";
|
|
8
|
+
import { StripeEvents } from "./payments/stripe/events.js";
|
|
9
|
+
/**
|
|
10
|
+
* All events and their callback types.
|
|
11
|
+
* @nav Server
|
|
12
|
+
* @docs
|
|
13
|
+
*/
|
|
14
|
+
export type Events = {
|
|
15
|
+
/**
|
|
16
|
+
* Add an (async) callback executed at the end of `server.start()`. The callback may take arguments `({forked <boolean>})`.
|
|
17
|
+
* @example
|
|
18
|
+
* ...
|
|
19
|
+
* server.on("start", opts => console.log("Hello World!"));
|
|
20
|
+
* @docs
|
|
21
|
+
*/
|
|
22
|
+
start: (opts: {
|
|
23
|
+
forked: boolean;
|
|
24
|
+
}) => void | Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Set an (async) callback which will be executed at the start of `server.stop()`.
|
|
27
|
+
* @example
|
|
28
|
+
* ...
|
|
29
|
+
* server.on("stop", () => console.log("Hello World!"));
|
|
30
|
+
* @docs
|
|
31
|
+
*/
|
|
32
|
+
stop: () => void | Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Set an (async) callback which will be executed at the start of `server.initialize()`.
|
|
35
|
+
* @example
|
|
36
|
+
* ...
|
|
37
|
+
* server.on("initialize", () => console.log("Hello World!"));
|
|
38
|
+
* @docs
|
|
39
|
+
*/
|
|
40
|
+
initialize: (opts: {
|
|
41
|
+
/** The `worker` flag passed to `Server.initialize()` */
|
|
42
|
+
worker: boolean;
|
|
43
|
+
}) => void | Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* This callback is executed when a user is created.
|
|
46
|
+
* @note Errors thrown in this callback will be logged but ignored.
|
|
47
|
+
* @docs
|
|
48
|
+
*/
|
|
49
|
+
create_user: (opts: {
|
|
50
|
+
user: User;
|
|
51
|
+
}) => void | Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* This callback is executed when a user is deleted.
|
|
54
|
+
* @note Errors thrown in this callback will be logged but ignored.
|
|
55
|
+
* @docs
|
|
56
|
+
*/
|
|
57
|
+
delete_user: (opts: {
|
|
58
|
+
user: User;
|
|
59
|
+
}) => void | Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* The callback for creating the mail content for the 2FA verification email.
|
|
62
|
+
* @returns The HTML content of the email, or a `MailElement` instance.
|
|
63
|
+
* @docs
|
|
64
|
+
*/
|
|
65
|
+
"2fa_mail": (opts: {
|
|
66
|
+
code: string;
|
|
67
|
+
username: string;
|
|
68
|
+
email: string;
|
|
69
|
+
date: string;
|
|
70
|
+
ip: string;
|
|
71
|
+
device: string;
|
|
72
|
+
}) => string | MailElement | Promise<string | MailElement>;
|
|
73
|
+
} & StripeEvents;
|
|
74
|
+
/**
|
|
75
|
+
* Event name.
|
|
76
|
+
* @nav Server
|
|
77
|
+
* @docs
|
|
78
|
+
*/
|
|
79
|
+
export type EventName = vlib.EventName<Events>;
|
|
80
|
+
/**
|
|
81
|
+
* Event callback.
|
|
82
|
+
* @nav Server
|
|
83
|
+
* @docs
|
|
84
|
+
*/
|
|
85
|
+
export type EventCallback<N extends EventName> = vlib.EventCallback<Events, N>;
|
|
86
|
+
/**
|
|
87
|
+
* Event parameters.
|
|
88
|
+
* @nav Server
|
|
89
|
+
* @docs
|
|
90
|
+
*/
|
|
91
|
+
export type EventParams<N extends EventName> = vlib.EventParams<Events, N>;
|
|
92
|
+
/**
|
|
93
|
+
* Event result type.
|
|
94
|
+
* @nav Server
|
|
95
|
+
* @docs
|
|
96
|
+
*/
|
|
97
|
+
export type EventResult<N extends EventName> = vlib.EventResult<Events, N>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Imports.
|
|
2
|
+
import * as vlib from "@vandenberghinc/vlib";
|
|
3
|
+
var __dirname = typeof __dirname !== 'undefined' ? __dirname : import.meta.dirname;
|
|
4
|
+
/** Validate if a path exists and return. */
|
|
5
|
+
function validate_path(path) {
|
|
6
|
+
if (!vlib.Path.exists(path)) {
|
|
7
|
+
throw new Error(`Frontend path "${path}" does not exist. Please create a GitHub issue to report this.`);
|
|
8
|
+
}
|
|
9
|
+
return path; // return the raw path.
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Exported frontend paths.
|
|
13
|
+
*/
|
|
14
|
+
export const Frontend = {
|
|
15
|
+
/** The frontend assets path. */
|
|
16
|
+
assets: validate_path(__dirname + "/../../../../../frontend/assets/"),
|
|
17
|
+
/** CSS exports. */
|
|
18
|
+
css: {
|
|
19
|
+
/** The default volt css export. */
|
|
20
|
+
volt: validate_path(__dirname + "/../../../../../frontend/css/volt.css"),
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export default Frontend;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
import * as vlib from "@vandenberghinc/vlib";
|
|
6
|
+
import { Endpoint } from "./endpoint.js";
|
|
7
|
+
import { RateLimitGroup } from "./rate_limit.js";
|
|
8
|
+
/**
|
|
9
|
+
* All static images are served through the `ImageEndpoint`.
|
|
10
|
+
*
|
|
11
|
+
* The image endpoint accepts three optional query parameters when retrieving the image to transform the image.
|
|
12
|
+
* - `type` string: The input type.
|
|
13
|
+
* - `width` number: The height of the image as a number `100` or percentage `50%` / `0.5x`. The aspect ratio will be maintained when `height` is undefined.
|
|
14
|
+
* - `height` number: The width of the image as a number `100` or percentage `50%` / `0.5x`. The aspect ratio will be maintained when `width` is undefined.
|
|
15
|
+
* - `aspect_ratio` boolean: Maintain the aspect ratio when only one resizing dimension has been defined.
|
|
16
|
+
* @docs
|
|
17
|
+
* @nav Endpoints
|
|
18
|
+
*/
|
|
19
|
+
declare class ImageEndpoint extends Endpoint implements Endpoint {
|
|
20
|
+
static supported_images: Set<string>;
|
|
21
|
+
private i_path;
|
|
22
|
+
private i_type;
|
|
23
|
+
is_image_endpoint: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* A cache of all transformed image paths, mapped by cache id.
|
|
26
|
+
* We use a cached path since `stat` will be used inside the Stream.send() method.
|
|
27
|
+
* Since this is cached in the Path object, it will be efficient.
|
|
28
|
+
*/
|
|
29
|
+
private transformed_cache;
|
|
30
|
+
/**
|
|
31
|
+
* Construct an image endpoint.
|
|
32
|
+
* @docs
|
|
33
|
+
*/
|
|
34
|
+
constructor({ endpoint, path, cache, _is_static, rate_limit, }: {
|
|
35
|
+
endpoint: string;
|
|
36
|
+
path: vlib.Path;
|
|
37
|
+
cache?: boolean | number;
|
|
38
|
+
_is_static?: boolean;
|
|
39
|
+
rate_limit?: string | RateLimitGroup;
|
|
40
|
+
});
|
|
41
|
+
transform(type?: string | null, width?: number | string | null, height?: number | string | null, aspect_ratio?: string | boolean | null): Promise<Buffer>;
|
|
42
|
+
get_aspect_ratio(): Promise<string | null>;
|
|
43
|
+
}
|
|
44
|
+
export { ImageEndpoint };
|