@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,479 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
// ---------------------------------------------------------
|
|
6
|
+
// Imports.
|
|
7
|
+
import { View } from './view.js';
|
|
8
|
+
import * as vlib from "@vandenberghinc/vlib";
|
|
9
|
+
import { ExternalError, InternalError } from "./errors/internal_external.js";
|
|
10
|
+
import { Status } from "./status.js";
|
|
11
|
+
import { RateLimits } from "./rate_limit.js";
|
|
12
|
+
import { Route } from './route.js';
|
|
13
|
+
import Meta from './meta.js';
|
|
14
|
+
import { Utils } from './utils.js';
|
|
15
|
+
const { debug } = vlib;
|
|
16
|
+
// ---------------------------------------------------------
|
|
17
|
+
// Endpoint
|
|
18
|
+
/**
|
|
19
|
+
* The endpoint class.
|
|
20
|
+
* @nav Endpoints
|
|
21
|
+
* @docs
|
|
22
|
+
*/
|
|
23
|
+
export class Endpoint {
|
|
24
|
+
/** Route attributes */
|
|
25
|
+
id;
|
|
26
|
+
route;
|
|
27
|
+
/** Requires authentication */
|
|
28
|
+
authenticated;
|
|
29
|
+
/** Parameter scheme validator */
|
|
30
|
+
params_validator;
|
|
31
|
+
params_schema;
|
|
32
|
+
allow_unknown_params;
|
|
33
|
+
/** The default response headers */
|
|
34
|
+
headers;
|
|
35
|
+
/** Option 2) View based endpoint */
|
|
36
|
+
view;
|
|
37
|
+
/** Option 3) Data endpoint, raw */
|
|
38
|
+
data;
|
|
39
|
+
raw_data;
|
|
40
|
+
/** Option 4 Data endpoint by file path. */
|
|
41
|
+
file_path;
|
|
42
|
+
/** Content length & type */
|
|
43
|
+
content_type;
|
|
44
|
+
/** Booleans */
|
|
45
|
+
is_static;
|
|
46
|
+
is_image_endpoint = false;
|
|
47
|
+
allow_sitemap;
|
|
48
|
+
allow_robots;
|
|
49
|
+
/** Rate limit groups for internal use. */
|
|
50
|
+
rate_limit_groups;
|
|
51
|
+
/** Private attributes */
|
|
52
|
+
_compress;
|
|
53
|
+
_cache;
|
|
54
|
+
ip_whitelist;
|
|
55
|
+
// private _is_compressed?: boolean;
|
|
56
|
+
_dynamic_initialized = false;
|
|
57
|
+
/** A reference to the server. */
|
|
58
|
+
server;
|
|
59
|
+
/**
|
|
60
|
+
* Clone this endpoint, used to create a modified copy of the current endpoint.
|
|
61
|
+
* @param override Override specific endpoint options, note that this will be shallow merged.
|
|
62
|
+
*
|
|
63
|
+
* @docs
|
|
64
|
+
*/
|
|
65
|
+
static clone(endpoint, override) {
|
|
66
|
+
return new Endpoint({
|
|
67
|
+
...vlib.Object.deep_copy({
|
|
68
|
+
method: endpoint.route.method,
|
|
69
|
+
endpoint: endpoint.route.endpoint,
|
|
70
|
+
authenticated: endpoint.authenticated,
|
|
71
|
+
rate_limit: endpoint.rate_limit_groups,
|
|
72
|
+
params: endpoint.params_schema,
|
|
73
|
+
compress: endpoint._compress,
|
|
74
|
+
cache: endpoint._cache,
|
|
75
|
+
ip_whitelist: endpoint.ip_whitelist,
|
|
76
|
+
sitemap: endpoint.allow_sitemap,
|
|
77
|
+
robots: endpoint.allow_robots,
|
|
78
|
+
allow_unknown_params: endpoint.allow_unknown_params,
|
|
79
|
+
_is_static: endpoint.is_static,
|
|
80
|
+
data: endpoint.data,
|
|
81
|
+
file_path: endpoint.file_path,
|
|
82
|
+
content_type: endpoint.content_type,
|
|
83
|
+
callback: endpoint.callback,
|
|
84
|
+
}),
|
|
85
|
+
view: endpoint.view?.clone(),
|
|
86
|
+
...override,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Static function to create a very strict method.
|
|
91
|
+
* This is a utility type that can be used when defining frontend `Request.Info` types.
|
|
92
|
+
* With this function we can enforce that the method matches the method defined in the `Request.Info` type,
|
|
93
|
+
* which can be useful to prevent mistakes when defining endpoints.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* {Create Strict Endpoint}
|
|
97
|
+
* Create a strict endpoint based on a frontend request info type.
|
|
98
|
+
* If there are any mismatches between the defined method,
|
|
99
|
+
* endpoint or result data with the `Request.Info` type,
|
|
100
|
+
* a TypeScript compile-time error will be thrown.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* import { Request } from "@vandenberghinc/volt/frontend";
|
|
104
|
+
* import * as volt from "@vandenberghinc/volt";
|
|
105
|
+
*
|
|
106
|
+
* type MyRequestInfo = Request.Info<
|
|
107
|
+
* "POST", // method
|
|
108
|
+
* "/api/my-endpoint", // endpoint
|
|
109
|
+
* { id: string } // params
|
|
110
|
+
* { name: string } // result
|
|
111
|
+
* undefined // error
|
|
112
|
+
* >;
|
|
113
|
+
*
|
|
114
|
+
* server.endpoint({
|
|
115
|
+
* method: volt.Endpoint.method<MyRequestInfo>("POST"),
|
|
116
|
+
* endpoint: volt.Endpoint.endpoint<MyRequestInfo>("/api/my-endpoint"),
|
|
117
|
+
* params: { id: "string" },
|
|
118
|
+
* callback: async (stream, params) => {
|
|
119
|
+
* // Send a success response.
|
|
120
|
+
* stream.send<MyRequestInfo["result"]>({
|
|
121
|
+
* status: 200,
|
|
122
|
+
* data: { name: "John Doe" },
|
|
123
|
+
* });
|
|
124
|
+
*. },
|
|
125
|
+
* })
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
static method(method) {
|
|
129
|
+
return method;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Static function to create a very strict endpoint.
|
|
133
|
+
* This is a utility type that can be used when defining frontend `Request.Info` types.
|
|
134
|
+
* With this function we can enforce that the endpoint matches the endpoint defined in the `Request.Info` type,
|
|
135
|
+
* which can be useful to prevent mistakes when defining endpoints.
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* {Create Strict Endpoint}
|
|
139
|
+
* Create a strict endpoint based on a frontend request info type.
|
|
140
|
+
* If there are any mismatches between the defined method,
|
|
141
|
+
* endpoint or result data with the `Request.Info` type,
|
|
142
|
+
* a TypeScript compile-time error will be thrown.
|
|
143
|
+
*
|
|
144
|
+
* ```ts
|
|
145
|
+
* import { Request } from "@vandenberghinc/volt/frontend";
|
|
146
|
+
* import * as volt from "@vandenberghinc/volt";
|
|
147
|
+
*
|
|
148
|
+
* type MyRequestInfo = Request.Info<
|
|
149
|
+
* "POST", // method
|
|
150
|
+
* "/api/my-endpoint", // endpoint
|
|
151
|
+
* { id: string } // params
|
|
152
|
+
* { name: string } // result
|
|
153
|
+
* undefined // error
|
|
154
|
+
* >;
|
|
155
|
+
*
|
|
156
|
+
* server.endpoint({
|
|
157
|
+
* method: volt.Endpoint.method<MyRequestInfo>("POST"),
|
|
158
|
+
* endpoint: volt.Endpoint.endpoint<MyRequestInfo>("/api/my-endpoint"),
|
|
159
|
+
* params: { id: "string" },
|
|
160
|
+
* callback: async (stream, params) => {
|
|
161
|
+
* // Send a success response.
|
|
162
|
+
* stream.send<MyRequestInfo["result"]>({
|
|
163
|
+
* status: 200,
|
|
164
|
+
* data: { name: "John Doe" },
|
|
165
|
+
* });
|
|
166
|
+
*. },
|
|
167
|
+
* })
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
static endpoint(endpoint) {
|
|
171
|
+
return endpoint;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Construct an endpoint.
|
|
175
|
+
* @docs
|
|
176
|
+
*/
|
|
177
|
+
constructor({ method, endpoint, authenticated = false, rate_limit = undefined, params = undefined, compress = true, cache = true, ip_whitelist = undefined, sitemap = undefined, robots = undefined, allow_unknown_params = false, _is_static = false,
|
|
178
|
+
// mode options.
|
|
179
|
+
callback = undefined, view = undefined, data = undefined, file_path = undefined, content_type, // = "text/plain",
|
|
180
|
+
}) {
|
|
181
|
+
// Attributes.
|
|
182
|
+
this.route = new Route(method ?? "GET", endpoint);
|
|
183
|
+
this.id = this.route.id;
|
|
184
|
+
this.authenticated = authenticated;
|
|
185
|
+
if (this.callback === undefined) { // only assign when undefined, so derived classes can also define the callback function.
|
|
186
|
+
this.callback = callback;
|
|
187
|
+
}
|
|
188
|
+
this.data = data;
|
|
189
|
+
this.content_type = content_type;
|
|
190
|
+
this._cache = cache;
|
|
191
|
+
this.allow_sitemap = sitemap ?? true;
|
|
192
|
+
this.allow_robots = robots ?? true;
|
|
193
|
+
this.file_path = file_path == null ? file_path : new vlib.Path(file_path).abs();
|
|
194
|
+
this.ip_whitelist = Array.isArray(ip_whitelist) ? ip_whitelist : undefined;
|
|
195
|
+
this.is_static = _is_static;
|
|
196
|
+
this.headers = [];
|
|
197
|
+
this.params_schema = params;
|
|
198
|
+
this.allow_unknown_params = allow_unknown_params;
|
|
199
|
+
// Excluded endpoint chars
|
|
200
|
+
if (typeof endpoint === "string") {
|
|
201
|
+
["\n", "\,"].forEach((c) => {
|
|
202
|
+
if (endpoint.indexOf(c) !== -1) {
|
|
203
|
+
throw Error("The \",\" character is not allowed inside an endpoint url.");
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
// Argument `view` may also be passed as an object instead of class View.
|
|
208
|
+
if (view == null) {
|
|
209
|
+
this.view = undefined;
|
|
210
|
+
}
|
|
211
|
+
else if (view instanceof View) {
|
|
212
|
+
this.view = view;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.view = new View(view);
|
|
216
|
+
}
|
|
217
|
+
// Set content type from file path.
|
|
218
|
+
if (this.file_path != null && this.content_type == null) {
|
|
219
|
+
this.content_type = Utils.mime_type(this.file_path.extension()) ?? "application/octet-stream";
|
|
220
|
+
}
|
|
221
|
+
// Set content type from defined view after view is defined.
|
|
222
|
+
else if (this.view != null) {
|
|
223
|
+
this.content_type = "text/html";
|
|
224
|
+
}
|
|
225
|
+
// Set compression after content type is defined.
|
|
226
|
+
if (compress === false) {
|
|
227
|
+
this._compress = false;
|
|
228
|
+
}
|
|
229
|
+
else if (this.file_path) {
|
|
230
|
+
this._compress = !(Utils.is_compressed_extension(this.file_path.extension()) ?? false);
|
|
231
|
+
}
|
|
232
|
+
else if (this.content_type != null) {
|
|
233
|
+
this._compress = !Utils.is_compressed_content_type(this.content_type);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this._compress = true;
|
|
237
|
+
}
|
|
238
|
+
// Set default visible in sitemap.
|
|
239
|
+
if (this.allow_sitemap == null) {
|
|
240
|
+
if (this.view != null &&
|
|
241
|
+
this.route.endpoint != "robots.txt" &&
|
|
242
|
+
this.route.endpoint != "sitemap.xml" &&
|
|
243
|
+
!this.authenticated) {
|
|
244
|
+
this.allow_sitemap = true;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
this.allow_sitemap = false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Set crawling by robots.
|
|
251
|
+
if (this.allow_robots == null) {
|
|
252
|
+
this.allow_robots = !this.authenticated && (this.view != null || this.route.endpoint == "robots.txt" || this.route.endpoint == "sitemap.xml");
|
|
253
|
+
}
|
|
254
|
+
// Assign rate limits.
|
|
255
|
+
this.rate_limit_groups = [];
|
|
256
|
+
if (Array.isArray(rate_limit)) {
|
|
257
|
+
rate_limit.forEach((item) => {
|
|
258
|
+
if (typeof item === "string") {
|
|
259
|
+
const group = RateLimits.groups.get(item);
|
|
260
|
+
if (!group)
|
|
261
|
+
throw new Error(`Rate limit group "${item}" does not exist.`);
|
|
262
|
+
this.rate_limit_groups.push(group);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
this.rate_limit_groups.push(RateLimits.add(item));
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
else if (typeof rate_limit === "string") {
|
|
270
|
+
const group = RateLimits.groups.get(rate_limit);
|
|
271
|
+
if (!group)
|
|
272
|
+
throw new Error(`Rate limit group "${rate_limit}" does not exist.`);
|
|
273
|
+
this.rate_limit_groups.push(group);
|
|
274
|
+
}
|
|
275
|
+
else if (typeof rate_limit === "object" && rate_limit != null) {
|
|
276
|
+
this.rate_limit_groups.push(RateLimits.add(rate_limit));
|
|
277
|
+
}
|
|
278
|
+
// Add path parameters from route.
|
|
279
|
+
let params_scheme = params;
|
|
280
|
+
if (this.route.params.length > 0) {
|
|
281
|
+
params_scheme ??= {};
|
|
282
|
+
this.route.params.forEach((item) => {
|
|
283
|
+
if (params_scheme[item.name] == null) {
|
|
284
|
+
params_scheme[item.name] = {
|
|
285
|
+
type: "string",
|
|
286
|
+
required: item.required ?? true,
|
|
287
|
+
allow_empty: false,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
// Initialize the parameter scheme validator.
|
|
293
|
+
if (params_scheme != null) {
|
|
294
|
+
this.params_validator = new vlib.Schema.Validator({
|
|
295
|
+
schema: params_scheme,
|
|
296
|
+
unknown: allow_unknown_params,
|
|
297
|
+
parent: this.route.id + ":",
|
|
298
|
+
throw: false,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Serve this endpoint manually from a stream.
|
|
304
|
+
* This can for instance be used to serve a HTML `/error` endpoint from within a callback.
|
|
305
|
+
* @docs
|
|
306
|
+
*/
|
|
307
|
+
async serve({ stream, status: status_code = 200, templates, }) {
|
|
308
|
+
if (!this._dynamic_initialized) {
|
|
309
|
+
await this._dynamic_initialize();
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
// Check IP whitelist.
|
|
313
|
+
if (this.ip_whitelist && !this.ip_whitelist.includes(stream.ip)) {
|
|
314
|
+
this.server?.log(2, this.route.id, ": ", "Blocking ip ", stream.ip, " per ip whitelist.");
|
|
315
|
+
stream.send({
|
|
316
|
+
status: Status.unauthorized,
|
|
317
|
+
data: "Unauthorized.",
|
|
318
|
+
});
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
// Set headers.
|
|
322
|
+
this._set_headers(stream);
|
|
323
|
+
// Callback.
|
|
324
|
+
if (this.callback != null) {
|
|
325
|
+
this.server?.log(3, this.route.id, ": ", "Serving endpoint in callback mode.");
|
|
326
|
+
if (this.params_validator != null) {
|
|
327
|
+
const { error, invalid_fields } = this.params_validator.validate(stream.params ?? {});
|
|
328
|
+
if (error) {
|
|
329
|
+
stream.send({
|
|
330
|
+
status: Status.bad_request,
|
|
331
|
+
headers: { "Content-Type": "application/json" },
|
|
332
|
+
data: {
|
|
333
|
+
error,
|
|
334
|
+
invalid_fields,
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
try {
|
|
341
|
+
if (this.params_validator != null) {
|
|
342
|
+
await this.callback(stream, (stream.params ?? {}));
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
await this.callback(stream, {});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
catch (err) {
|
|
349
|
+
if (err instanceof ExternalError || err instanceof InternalError) {
|
|
350
|
+
err.serve(stream);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
stream.error({
|
|
354
|
+
status: Status.internal_server_error,
|
|
355
|
+
headers: { "Content-Type": "application/json" },
|
|
356
|
+
message: "Internal Server Error",
|
|
357
|
+
type: "InternalServerError",
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
this.server?.log.error(`${this.id}: `, err); // after sending the response since this edits the error.
|
|
361
|
+
}
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
// View.
|
|
365
|
+
else if (this.view != null) {
|
|
366
|
+
this.server?.log(3, this.route.id, ": ", "Serving endpoint in view mode.");
|
|
367
|
+
await this.view._serve(stream, status_code, { compress: this._compress, templates: templates });
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
// Load from file.
|
|
371
|
+
else if (this.file_path != null) {
|
|
372
|
+
this.server?.log(3, this.route.id, ": ", "Serving endpoint in file mode.");
|
|
373
|
+
stream.send({
|
|
374
|
+
status: status_code,
|
|
375
|
+
from_file: this.file_path,
|
|
376
|
+
compress: this._compress,
|
|
377
|
+
templates: templates,
|
|
378
|
+
});
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
// Data.
|
|
382
|
+
else if (this.data != null) {
|
|
383
|
+
this.server?.log(3, this.route.id, ": ", "Serving endpoint in data mode.");
|
|
384
|
+
stream.send({
|
|
385
|
+
status: status_code,
|
|
386
|
+
data: this.data,
|
|
387
|
+
compress: this._compress,
|
|
388
|
+
templates: templates,
|
|
389
|
+
});
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
// Undefined.
|
|
393
|
+
else {
|
|
394
|
+
throw new Error(`${this.id}: Undefined behaviour, define one of the following endpoint attributes [callback, view, data].`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
catch (err) {
|
|
398
|
+
throw err; // must have another catch block here otherwise when an error occurs in here it is somehow not catched by the try and catch block from Server._serve which will cause the program to crash.
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
// ----------------------------------------------------------
|
|
402
|
+
// System methods.
|
|
403
|
+
/** Initialize with server. */
|
|
404
|
+
_initialize(server) {
|
|
405
|
+
// Already initialized.
|
|
406
|
+
if (this.server != null) {
|
|
407
|
+
return this;
|
|
408
|
+
}
|
|
409
|
+
// Assign attribute.
|
|
410
|
+
this.server = server;
|
|
411
|
+
// Initialize view.
|
|
412
|
+
if (this.view != null) {
|
|
413
|
+
this.view.initialize(server, this);
|
|
414
|
+
}
|
|
415
|
+
// Init view meta.
|
|
416
|
+
if (this.view != null) {
|
|
417
|
+
if (this.view.meta == null) {
|
|
418
|
+
this.view.meta = server.meta.copy();
|
|
419
|
+
}
|
|
420
|
+
else if (typeof this.view.meta === "object" && !(this.view.meta instanceof Meta)) {
|
|
421
|
+
this.view.meta = new Meta(this.view.meta);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
return this;
|
|
425
|
+
}
|
|
426
|
+
// Initialize.
|
|
427
|
+
async _dynamic_initialize() {
|
|
428
|
+
if (!this.server) {
|
|
429
|
+
throw new Error(`Endpoint "${this.id}" is not initialized by the server yet.`);
|
|
430
|
+
}
|
|
431
|
+
// Set cache headers.
|
|
432
|
+
if (!this.server.production) {
|
|
433
|
+
this._cache = false; // @todo @tmp
|
|
434
|
+
}
|
|
435
|
+
if (typeof this._cache === "number" || this._cache === true) {
|
|
436
|
+
if (this._cache === 1 || this._cache === true) {
|
|
437
|
+
this.headers.push(["Cache-Control", "max-age=86400"]);
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
this.headers.push(["Cache-Control", `max-age=${this._cache}`]);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
// Set content type.
|
|
444
|
+
if (this.content_type != null) {
|
|
445
|
+
this.headers.push(["Content-Type", this.content_type]);
|
|
446
|
+
}
|
|
447
|
+
this._dynamic_initialized = true;
|
|
448
|
+
}
|
|
449
|
+
// Set default headers.
|
|
450
|
+
_set_headers(stream) {
|
|
451
|
+
this.headers.forEach((item) => {
|
|
452
|
+
stream.set_header(item[0], item[1]);
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
// Serve a client.
|
|
456
|
+
async _serve_options(stream) {
|
|
457
|
+
if (!this._dynamic_initialized) {
|
|
458
|
+
await this._dynamic_initialize();
|
|
459
|
+
}
|
|
460
|
+
try {
|
|
461
|
+
// Check IP whitelist.
|
|
462
|
+
if (this.ip_whitelist && !this.ip_whitelist.includes(stream.ip)) {
|
|
463
|
+
stream.error({
|
|
464
|
+
status: Status.unauthorized,
|
|
465
|
+
type: "Unauthorized",
|
|
466
|
+
message: "Unauthorized.",
|
|
467
|
+
});
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
// Set headers.
|
|
471
|
+
this._set_headers(stream);
|
|
472
|
+
// Send.
|
|
473
|
+
stream.send({ status: Status.no_content });
|
|
474
|
+
}
|
|
475
|
+
catch (err) {
|
|
476
|
+
throw err; // must have another catch block here otherwise when an error occurs in here it is somehow not catched by the try and catch block from Server._serve which will cause the program to crash.
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh.
|
|
4
|
+
*/
|
|
5
|
+
import type { Stream } from "../stream.js";
|
|
6
|
+
/**
|
|
7
|
+
* The base class for internal and external errors.
|
|
8
|
+
*/
|
|
9
|
+
declare class BaseError extends Error {
|
|
10
|
+
type: string;
|
|
11
|
+
status: number;
|
|
12
|
+
data?: any[] | Record<string, any>;
|
|
13
|
+
invalid_fields: Record<string, string>;
|
|
14
|
+
constructor({ type, message, status, data, invalid_fields, cause }: {
|
|
15
|
+
message: string;
|
|
16
|
+
type?: string;
|
|
17
|
+
status?: number;
|
|
18
|
+
data?: any[] | Record<string, any>;
|
|
19
|
+
invalid_fields?: Record<string, string>;
|
|
20
|
+
cause?: unknown;
|
|
21
|
+
});
|
|
22
|
+
serve(stream: Stream): this;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Thrown internal errors are not presented to the user, instead an internal server error message is shown.
|
|
26
|
+
*
|
|
27
|
+
* @nav Errors
|
|
28
|
+
* @docs
|
|
29
|
+
*/
|
|
30
|
+
export declare class InternalError extends BaseError {
|
|
31
|
+
constructor(args: ConstructorParameters<typeof BaseError>[0]);
|
|
32
|
+
/**
|
|
33
|
+
* Serve a generic internal server error response.
|
|
34
|
+
* @docs
|
|
35
|
+
*/
|
|
36
|
+
serve(stream: Stream): this;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Thrown external errors are presented to the user when caused inside a request context.
|
|
40
|
+
*
|
|
41
|
+
* @nav Errors
|
|
42
|
+
* @docs
|
|
43
|
+
*/
|
|
44
|
+
export declare class ExternalError extends BaseError {
|
|
45
|
+
constructor(args: ConstructorParameters<typeof BaseError>[0]);
|
|
46
|
+
/**
|
|
47
|
+
* Serve the external error response.
|
|
48
|
+
* @docs
|
|
49
|
+
*/
|
|
50
|
+
serve(stream: Stream): this;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh.
|
|
4
|
+
*/
|
|
5
|
+
import { Status } from "../status.js";
|
|
6
|
+
/**
|
|
7
|
+
* The base class for internal and external errors.
|
|
8
|
+
*/
|
|
9
|
+
class BaseError extends Error {
|
|
10
|
+
type;
|
|
11
|
+
status;
|
|
12
|
+
data;
|
|
13
|
+
invalid_fields;
|
|
14
|
+
constructor({ type = "BaseError", message, status, data, invalid_fields, cause }) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = "BaseError";
|
|
17
|
+
this.type = type;
|
|
18
|
+
this.status = status ?? Status.internal_server_error;
|
|
19
|
+
this.data = data;
|
|
20
|
+
this.invalid_fields = invalid_fields ?? {};
|
|
21
|
+
this.cause = cause;
|
|
22
|
+
}
|
|
23
|
+
serve(stream) {
|
|
24
|
+
stream.error({
|
|
25
|
+
status: this.status ?? Status.internal_server_error,
|
|
26
|
+
headers: { "Content-Type": "application/json" },
|
|
27
|
+
message: this.message,
|
|
28
|
+
type: this.type,
|
|
29
|
+
invalid_fields: this.invalid_fields,
|
|
30
|
+
});
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Thrown internal errors are not presented to the user, instead an internal server error message is shown.
|
|
36
|
+
*
|
|
37
|
+
* @nav Errors
|
|
38
|
+
* @docs
|
|
39
|
+
*/
|
|
40
|
+
export class InternalError extends BaseError {
|
|
41
|
+
constructor(args) {
|
|
42
|
+
args.type ??= "InternalError";
|
|
43
|
+
super(args);
|
|
44
|
+
this.name = "InternalError";
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Serve a generic internal server error response.
|
|
48
|
+
* @docs
|
|
49
|
+
*/
|
|
50
|
+
serve(stream) {
|
|
51
|
+
stream.error({
|
|
52
|
+
status: Status.internal_server_error,
|
|
53
|
+
headers: { "Content-Type": "application/json" },
|
|
54
|
+
message: "Internal Server Error",
|
|
55
|
+
type: "InternalServerError",
|
|
56
|
+
});
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Thrown external errors are presented to the user when caused inside a request context.
|
|
62
|
+
*
|
|
63
|
+
* @nav Errors
|
|
64
|
+
* @docs
|
|
65
|
+
*/
|
|
66
|
+
export class ExternalError extends BaseError {
|
|
67
|
+
constructor(args) {
|
|
68
|
+
args.type ??= "ExternalError";
|
|
69
|
+
super(args);
|
|
70
|
+
this.name = "ExternalError";
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Serve the external error response.
|
|
74
|
+
* @docs
|
|
75
|
+
*/
|
|
76
|
+
serve(stream) {
|
|
77
|
+
stream.error({
|
|
78
|
+
status: this.status ?? Status.internal_server_error,
|
|
79
|
+
headers: { "Content-Type": "application/json" },
|
|
80
|
+
message: this.message,
|
|
81
|
+
type: this.type,
|
|
82
|
+
invalid_fields: this.invalid_fields,
|
|
83
|
+
});
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* An invalid usage error.
|
|
7
|
+
* This only extends the base Error class.
|
|
8
|
+
* By default this class will be shown as an internal server error when caused inside an endpoint callback.
|
|
9
|
+
*
|
|
10
|
+
* @nav Errors
|
|
11
|
+
* @docs
|
|
12
|
+
*/
|
|
13
|
+
export declare class InvalidUsageError extends Error {
|
|
14
|
+
/**
|
|
15
|
+
* The reason code for the invalid usage error, e.g. `bad_ttl`
|
|
16
|
+
* or `invalid_filter`.
|
|
17
|
+
*
|
|
18
|
+
* Could be used to detect specific issues with the request,
|
|
19
|
+
*/
|
|
20
|
+
reason?: string;
|
|
21
|
+
/** The optional param/attr/field that was invalid. */
|
|
22
|
+
field?: string;
|
|
23
|
+
/** An optional error that caused the invalid usage error. */
|
|
24
|
+
cause?: unknown;
|
|
25
|
+
/** Construct an invalid usage error. */
|
|
26
|
+
constructor(opts: {
|
|
27
|
+
/** The error message. */
|
|
28
|
+
message: string;
|
|
29
|
+
/** The optional param/attr/field that was invalid. */
|
|
30
|
+
field?: string;
|
|
31
|
+
/**
|
|
32
|
+
* The reason code for the invalid usage error, e.g. `bad_ttl`
|
|
33
|
+
* or `invalid_filter`.
|
|
34
|
+
*
|
|
35
|
+
* Could be used to detect specific issues with the request,
|
|
36
|
+
*/
|
|
37
|
+
reason?: string;
|
|
38
|
+
/** An optional error that caused the invalid usage error. */
|
|
39
|
+
cause?: unknown;
|
|
40
|
+
});
|
|
41
|
+
}
|