@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,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh.
|
|
4
|
+
*/
|
|
5
|
+
// imports.
|
|
6
|
+
import * as nodemailer from "nodemailer";
|
|
7
|
+
import * as vlib from "@vandenberghinc/vlib";
|
|
8
|
+
// imports.
|
|
9
|
+
import * as UI from "./ui.js";
|
|
10
|
+
import { ExternalError } from "../../errors/index.js";
|
|
11
|
+
import { Status } from "../../status.js";
|
|
12
|
+
/**
|
|
13
|
+
* The mail class, used to send emails via SMTP.
|
|
14
|
+
*
|
|
15
|
+
* @note This class is initialized under server property `mail` when the server is started with the `smtp` option.
|
|
16
|
+
*
|
|
17
|
+
* @nav Plugins
|
|
18
|
+
* @docs
|
|
19
|
+
*/
|
|
20
|
+
export class Mail {
|
|
21
|
+
/** the smpt mailer. */
|
|
22
|
+
smtp;
|
|
23
|
+
/** the smtp sender address. */
|
|
24
|
+
sender; // is defined when `smtp` is defined.
|
|
25
|
+
/** the default mail style. */
|
|
26
|
+
style;
|
|
27
|
+
/** construct a new server instance. */
|
|
28
|
+
constructor({ smtp, style = {
|
|
29
|
+
font: '"Helvetica", sans-serif',
|
|
30
|
+
title_fg: "#121B23",
|
|
31
|
+
subtitle_fg: "#121B23",
|
|
32
|
+
text_fg: "#1F2F3D",
|
|
33
|
+
button_fg: "#FFFFFF",
|
|
34
|
+
footer_fg: "#686B80",
|
|
35
|
+
bg: "#EEEEEE",
|
|
36
|
+
widget_bg: "#FFFFFF",
|
|
37
|
+
widget_border: "#E6E6E6",
|
|
38
|
+
button_bg: "#1F2F3D",
|
|
39
|
+
divider_bg: "#706780",
|
|
40
|
+
}, }) {
|
|
41
|
+
this.style = style;
|
|
42
|
+
this.sender = smtp.sender;
|
|
43
|
+
this.smtp = nodemailer.createTransport({
|
|
44
|
+
...smtp,
|
|
45
|
+
...(smtp.override ?? {}),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// ---------------------------------------------------------
|
|
49
|
+
// public methods.
|
|
50
|
+
/**
|
|
51
|
+
* send one or multiple mails.
|
|
52
|
+
*
|
|
53
|
+
* @note ensure SPF/DKIM are configured when sending attachments.
|
|
54
|
+
* @returns resolves/rejects when the mail has been sent.
|
|
55
|
+
*
|
|
56
|
+
* @param sender optional sender override.
|
|
57
|
+
* @param recipients recipient addresses.
|
|
58
|
+
* @param subject subject line.
|
|
59
|
+
* @param body html string or `UI.MailElement`.
|
|
60
|
+
* @param attachments supported inputs (paths, backend model, REST model, or nodemailer attachment).
|
|
61
|
+
* @param max_attachments limit on number of attachments; -1 disables.
|
|
62
|
+
* @param max_attachment_size max size (bytes) per attachment; -1 disables.
|
|
63
|
+
* @param max_attachments_size max total size (bytes) across attachments; -1 disables.
|
|
64
|
+
*
|
|
65
|
+
* @docs
|
|
66
|
+
*/
|
|
67
|
+
async send({ sender = undefined, recipients = [], subject = undefined, body = "", attachments = [], max_attachments = -1, max_attachment_size = -1, max_attachments_size = -1, allow_untrusted_urls = false, }) {
|
|
68
|
+
if (!this.smtp) {
|
|
69
|
+
throw new Error("smtp is not enabled, define the required server argument on initialization to enable smtp.");
|
|
70
|
+
}
|
|
71
|
+
if (body instanceof UI.MailElement) {
|
|
72
|
+
body = body.html();
|
|
73
|
+
}
|
|
74
|
+
if ((sender == null) && (this.sender != null)) {
|
|
75
|
+
sender = this.sender;
|
|
76
|
+
}
|
|
77
|
+
if (!recipients || recipients.length === 0) {
|
|
78
|
+
throw new Error("the mail has no recipients.");
|
|
79
|
+
}
|
|
80
|
+
if (sender == null) {
|
|
81
|
+
throw new Error('parameter "sender" should be a defined value of type "string" or "array".');
|
|
82
|
+
}
|
|
83
|
+
const format_address = (address) => {
|
|
84
|
+
if (Array.isArray(address))
|
|
85
|
+
return `${address[0]} <${address[1]}>`;
|
|
86
|
+
return address;
|
|
87
|
+
};
|
|
88
|
+
const to = [];
|
|
89
|
+
recipients.forEach((address) => to.push(format_address(address)));
|
|
90
|
+
const { nodemailer_attachments } = this.normalize_and_validate_attachments(attachments, {
|
|
91
|
+
max_attachments,
|
|
92
|
+
max_attachment_size,
|
|
93
|
+
max_attachments_size,
|
|
94
|
+
allow_untrusted_urls,
|
|
95
|
+
});
|
|
96
|
+
try {
|
|
97
|
+
await this.smtp.sendMail({
|
|
98
|
+
from: format_address(sender),
|
|
99
|
+
to,
|
|
100
|
+
subject,
|
|
101
|
+
html: body,
|
|
102
|
+
attachments: nodemailer_attachments,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw new Error(error?.message ?? String(error));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// ---------------------------------------------------------
|
|
110
|
+
// attachment handling (normalization + validation).
|
|
111
|
+
// ---------------------------------------------------------
|
|
112
|
+
/**
|
|
113
|
+
* convert a single generic attachment input into a nodemailer attachment.
|
|
114
|
+
*/
|
|
115
|
+
build_attachment(it, opts = {}) {
|
|
116
|
+
// filesystem path inputs (string | vlib.Path).
|
|
117
|
+
if (typeof it === "string" || (it instanceof vlib.Path)) {
|
|
118
|
+
const path = (it instanceof vlib.Path) ? it : new vlib.Path(it);
|
|
119
|
+
const file_name = path.full_name();
|
|
120
|
+
const buf = path.load_sync();
|
|
121
|
+
return {
|
|
122
|
+
filename: file_name,
|
|
123
|
+
path: path.str(),
|
|
124
|
+
content: buf,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// rest payload: either { content + encoding } or { url }.
|
|
128
|
+
if (Mail.Attachment.RestAPI.is(it)) {
|
|
129
|
+
const { name, mime_type, charset, compressed } = it;
|
|
130
|
+
// a) content + encoding -> to content Buffer/string for nodemailer.
|
|
131
|
+
if (typeof it.content === "string") {
|
|
132
|
+
const enc = (it.encoding ?? "base64").toLowerCase();
|
|
133
|
+
let payload = it.content;
|
|
134
|
+
if (enc === "base64") {
|
|
135
|
+
payload = Buffer.from(this.normalize_base64(it.content), "base64");
|
|
136
|
+
}
|
|
137
|
+
else if (enc === "hex" || enc === "latin1" || enc === "binary" || enc === "utf8" || enc === "utf-8") {
|
|
138
|
+
const node_enc = enc === "utf-8" ? "utf8" : enc;
|
|
139
|
+
payload = Buffer.from(it.content, node_enc);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
throw new ExternalError({
|
|
143
|
+
status: Status.bad_request,
|
|
144
|
+
type: "InvalidAttachment",
|
|
145
|
+
message: `Unsupported encoding '${it.encoding}'.`,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
filename: name ?? "attachment",
|
|
150
|
+
content: payload,
|
|
151
|
+
contentType: mime_type,
|
|
152
|
+
headers: this.build_content_headers({ charset, compressed }),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
// b) url (http/https/data) -> nodemailer streams from path.
|
|
156
|
+
if (it.url) {
|
|
157
|
+
if (!opts.allow_untrusted_urls && this.is_http_url(it.url)) {
|
|
158
|
+
throw new ExternalError({
|
|
159
|
+
status: Status.bad_request,
|
|
160
|
+
type: "UntrustedUrlBlocked",
|
|
161
|
+
message: "http/https attachment urls are blocked by default. set 'allow_untrusted_urls' to true to allow.",
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
filename: name ?? "attachment",
|
|
166
|
+
path: it.url,
|
|
167
|
+
contentType: mime_type,
|
|
168
|
+
headers: this.build_content_headers({ charset, compressed }),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
throw new ExternalError({
|
|
172
|
+
status: Status.bad_request,
|
|
173
|
+
type: "InvalidAttachment",
|
|
174
|
+
message: "Attachment payload missing { content, encoding } or { url }.",
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
// backend model: { bytes } or { content + encoding }.
|
|
178
|
+
if (Mail.Attachment.is(it)) {
|
|
179
|
+
const { name, mime_type, charset, compressed } = it;
|
|
180
|
+
if (it.bytes) {
|
|
181
|
+
const buf = Buffer.isBuffer(it.bytes) ? it.bytes : Buffer.from(it.bytes);
|
|
182
|
+
return {
|
|
183
|
+
filename: name ?? "attachment",
|
|
184
|
+
content: buf,
|
|
185
|
+
contentType: mime_type,
|
|
186
|
+
headers: this.build_content_headers({ charset, compressed }),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
if (typeof it.content === "string") {
|
|
190
|
+
const enc = (it.encoding ?? "base64").toLowerCase();
|
|
191
|
+
let payload;
|
|
192
|
+
if (enc === "base64") {
|
|
193
|
+
payload = Buffer.from(this.normalize_base64(it.content), "base64");
|
|
194
|
+
}
|
|
195
|
+
else if (enc === "hex" || enc === "latin1" || enc === "binary" || enc === "utf8" || enc === "utf-8") {
|
|
196
|
+
const node_enc = enc === "utf-8" ? "utf8" : enc;
|
|
197
|
+
payload = Buffer.from(it.content, node_enc);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
throw new ExternalError({
|
|
201
|
+
status: Status.bad_request,
|
|
202
|
+
type: "InvalidAttachment",
|
|
203
|
+
message: `Unsupported encoding '${it.encoding}'.`,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
filename: name ?? "attachment",
|
|
208
|
+
content: payload,
|
|
209
|
+
contentType: mime_type,
|
|
210
|
+
headers: this.build_content_headers({ charset, compressed }),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// passthrough for pre-built nodemailer attachments.
|
|
214
|
+
if (Mail.Attachment.Native.is(it)) {
|
|
215
|
+
return { ...it };
|
|
216
|
+
}
|
|
217
|
+
throw new ExternalError({
|
|
218
|
+
status: Status.bad_request,
|
|
219
|
+
type: "InvalidAttachment",
|
|
220
|
+
message: "Attachment missing content: provide bytes or { content, encoding }.",
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
throw new ExternalError({
|
|
224
|
+
status: Status.bad_request,
|
|
225
|
+
type: "InvalidAttachment",
|
|
226
|
+
message: "Unsupported attachment input.",
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
/** returns true when url starts with http:// or https:// */
|
|
230
|
+
is_http_url(u) {
|
|
231
|
+
const s = typeof u === "string" ? u : String(u);
|
|
232
|
+
return /^https?:\/\//i.test(s);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* normalize and validate a mixed attachment input into nodemailer attachments.
|
|
236
|
+
* @param input mixed list of attachments.
|
|
237
|
+
* @param limits size/count validation limits.
|
|
238
|
+
* @returns normalized nodemailer attachments.
|
|
239
|
+
* @throws {ExternalError} when limits are exceeded.
|
|
240
|
+
*/
|
|
241
|
+
normalize_and_validate_attachments(input, limits = {}) {
|
|
242
|
+
const items = input ?? [];
|
|
243
|
+
const nm_attachments = [];
|
|
244
|
+
for (const it of items) {
|
|
245
|
+
const built = this.build_attachment(it, limits);
|
|
246
|
+
nm_attachments.push(built);
|
|
247
|
+
}
|
|
248
|
+
const { max_attachments, max_attachment_size, max_attachments_size, } = limits;
|
|
249
|
+
if (typeof max_attachments === "number" && max_attachments !== -1 && nm_attachments.length > max_attachments) {
|
|
250
|
+
throw new ExternalError({
|
|
251
|
+
status: Status.bad_request,
|
|
252
|
+
type: "TooManyAttachments",
|
|
253
|
+
message: `Too many attachments. max is ${max_attachments}.`,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
if (typeof max_attachment_size === "number" && max_attachment_size !== -1) {
|
|
257
|
+
for (const a of nm_attachments) {
|
|
258
|
+
const size = this.measure_attachment_bytes(a);
|
|
259
|
+
if (size > max_attachment_size) {
|
|
260
|
+
throw new ExternalError({
|
|
261
|
+
status: Status.bad_request,
|
|
262
|
+
type: "AttachmentTooLarge",
|
|
263
|
+
message: `Attachment '${a.filename ?? "unnamed"}' exceeds max size of ${max_attachment_size} bytes.`,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (typeof max_attachments_size === "number" && max_attachments_size !== -1) {
|
|
269
|
+
let total = 0;
|
|
270
|
+
for (const a of nm_attachments)
|
|
271
|
+
total += this.measure_attachment_bytes(a);
|
|
272
|
+
if (total > max_attachments_size) {
|
|
273
|
+
throw new ExternalError({
|
|
274
|
+
status: Status.bad_request,
|
|
275
|
+
type: "AttachmentsTooLarge",
|
|
276
|
+
message: `Total attachments size ${total} bytes exceeds max of ${max_attachments_size} bytes.`,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return { nodemailer_attachments: nm_attachments };
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* measure the on-wire payload size (approx) of a nodemailer attachment content.
|
|
284
|
+
* note: if `encoding: "base64"` is set, we decode to compute raw byte size.
|
|
285
|
+
*/
|
|
286
|
+
measure_attachment_bytes(a) {
|
|
287
|
+
if (a.content) {
|
|
288
|
+
if (Buffer.isBuffer(a.content))
|
|
289
|
+
return a.content.length;
|
|
290
|
+
if (typeof a.content === "string") {
|
|
291
|
+
if (a.encoding === "base64") {
|
|
292
|
+
try {
|
|
293
|
+
return Buffer.from(a.content, "base64").length;
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return a.content.length;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return Buffer.byteLength(a.content);
|
|
300
|
+
}
|
|
301
|
+
// stream size unknown beforehand.
|
|
302
|
+
return 0;
|
|
303
|
+
}
|
|
304
|
+
if (a.path) {
|
|
305
|
+
try {
|
|
306
|
+
const p = new vlib.Path(String(a.path));
|
|
307
|
+
return p.size ?? 0;
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
return 0;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return 0;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* normalize a base64 or url-safe base64 string to standard base64 (no decoding).
|
|
317
|
+
* trims whitespace and converts url-safe chars.
|
|
318
|
+
*/
|
|
319
|
+
normalize_base64(b64) {
|
|
320
|
+
let t = String(b64).trim().replace(/-/g, "+").replace(/_/g, "/");
|
|
321
|
+
const mod = t.length % 4;
|
|
322
|
+
if (mod)
|
|
323
|
+
t += "=".repeat(4 - mod);
|
|
324
|
+
return t;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* optional content headers for charset/compression hints.
|
|
328
|
+
* email clients usually ignore custom headers; added for traceability.
|
|
329
|
+
*/
|
|
330
|
+
build_content_headers({ charset, compressed }) {
|
|
331
|
+
const headers = {};
|
|
332
|
+
if (charset)
|
|
333
|
+
headers["X-Attachment-Charset"] = charset;
|
|
334
|
+
if (typeof compressed === "boolean")
|
|
335
|
+
headers["X-Attachment-Compressed"] = compressed ? "gzip" : "none";
|
|
336
|
+
return Object.keys(headers).length ? headers : undefined;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/** nested types for the mail module. */
|
|
340
|
+
(function (Mail) {
|
|
341
|
+
/** Nested attachment types. */
|
|
342
|
+
let Attachment;
|
|
343
|
+
(function (Attachment) {
|
|
344
|
+
Attachment.encodings = new Set(["base64", "hex", "utf8", "utf-8", "binary", "latin1"]);
|
|
345
|
+
/** Type guard. */
|
|
346
|
+
function is(a) {
|
|
347
|
+
return a && typeof a === "object"
|
|
348
|
+
&& ("name" in a)
|
|
349
|
+
&& (!("path" in a) || typeof a.path === "string")
|
|
350
|
+
&& (!("mime_type" in a) || typeof a.mime_type === "string")
|
|
351
|
+
&& (!("charset" in a) || typeof a.charset === "string")
|
|
352
|
+
&& (!("bytes" in a) || (Buffer.isBuffer(a.bytes) || a.bytes instanceof Uint8Array))
|
|
353
|
+
&& (!("content" in a) || typeof a.content === "string")
|
|
354
|
+
&& (!("encoding" in a) || Attachment.encodings.has(a.encoding))
|
|
355
|
+
&& (!("compressed" in a) || typeof a.compressed === "boolean");
|
|
356
|
+
}
|
|
357
|
+
Attachment.is = is;
|
|
358
|
+
let RestAPI;
|
|
359
|
+
(function (RestAPI) {
|
|
360
|
+
/** Type guard. */
|
|
361
|
+
function is(a) {
|
|
362
|
+
return a && typeof a === "object"
|
|
363
|
+
&& ("name" in a)
|
|
364
|
+
&& (!("path" in a) || typeof a.path === "string")
|
|
365
|
+
&& (!("mime_type" in a) || typeof a.mime_type === "string")
|
|
366
|
+
&& (!("charset" in a) || typeof a.charset === "string")
|
|
367
|
+
&& (!("compressed" in a) || typeof a.compressed === "boolean")
|
|
368
|
+
&& (!("content" in a) || typeof a.content === "string")
|
|
369
|
+
&& (!("encoding" in a) || Attachment.encodings.has(a.encoding))
|
|
370
|
+
&& (!("url" in a) || typeof a.url === "string");
|
|
371
|
+
}
|
|
372
|
+
RestAPI.is = is;
|
|
373
|
+
/** Schema validation. */
|
|
374
|
+
RestAPI.Schema = {
|
|
375
|
+
name: { type: "string", required: true },
|
|
376
|
+
path: { type: "string", required: false },
|
|
377
|
+
mime_type: { type: "string", required: false },
|
|
378
|
+
charset: { type: "string", required: false },
|
|
379
|
+
compressed: { type: "boolean", required: false },
|
|
380
|
+
content: { type: "string", required: false },
|
|
381
|
+
encoding: { type: "string", enum: Array.from(Attachment.encodings), required: false },
|
|
382
|
+
url: { type: "string", required: false },
|
|
383
|
+
};
|
|
384
|
+
})(RestAPI = Attachment.RestAPI || (Attachment.RestAPI = {}));
|
|
385
|
+
/** Nested native types. */
|
|
386
|
+
let Native;
|
|
387
|
+
(function (Native) {
|
|
388
|
+
/** Simple type guard. */
|
|
389
|
+
function is(a) {
|
|
390
|
+
return a && typeof a === "object"
|
|
391
|
+
&& ("content" in a || "path" in a || "filename" in a);
|
|
392
|
+
}
|
|
393
|
+
Native.is = is;
|
|
394
|
+
})(Native = Attachment.Native || (Attachment.Native = {}));
|
|
395
|
+
})(Attachment = Mail.Attachment || (Mail.Attachment = {}));
|
|
396
|
+
})(Mail || (Mail = {}));
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
type none = undefined | null;
|
|
6
|
+
export declare class Element {
|
|
7
|
+
type: string;
|
|
8
|
+
element_type: string;
|
|
9
|
+
tag: string;
|
|
10
|
+
_style: Record<string, string>;
|
|
11
|
+
_attrs: Record<string, any>;
|
|
12
|
+
classes: string[];
|
|
13
|
+
_inner_html: string | null;
|
|
14
|
+
children: any[];
|
|
15
|
+
_lang?: string;
|
|
16
|
+
_charset?: string;
|
|
17
|
+
_viewport?: string;
|
|
18
|
+
_title?: string;
|
|
19
|
+
_links?: (string | Record<string, string>)[];
|
|
20
|
+
_disabled?: boolean;
|
|
21
|
+
constructor({ type, tag, default_style, default_attributes, default_events, }: {
|
|
22
|
+
type?: string;
|
|
23
|
+
tag?: string;
|
|
24
|
+
default_style?: Record<string, string> | null;
|
|
25
|
+
default_attributes?: Record<string, string> | null;
|
|
26
|
+
default_events?: Record<string, (event: Event) => any> | null;
|
|
27
|
+
});
|
|
28
|
+
pad_numeric(value: string | number, padding?: string): string;
|
|
29
|
+
html(): string;
|
|
30
|
+
links(links: (string | Record<string, string>)[]): this;
|
|
31
|
+
/**
|
|
32
|
+
* Get or set the background color of the element.
|
|
33
|
+
* @param value The color value to set.
|
|
34
|
+
* @returns The current value when getting, or the element instance when setting.
|
|
35
|
+
* @funcs 3
|
|
36
|
+
*/
|
|
37
|
+
background_color(): string | undefined;
|
|
38
|
+
background_color(value: string): this;
|
|
39
|
+
/**
|
|
40
|
+
* Get or set the display property.
|
|
41
|
+
* @funcs 3
|
|
42
|
+
*/
|
|
43
|
+
display(): string | undefined;
|
|
44
|
+
display(value: string): this;
|
|
45
|
+
/**
|
|
46
|
+
* Get or set the background image.
|
|
47
|
+
* @funcs 3
|
|
48
|
+
*/
|
|
49
|
+
background_image(): string | undefined;
|
|
50
|
+
background_image(value: string): this;
|
|
51
|
+
background_repeat(): string | undefined;
|
|
52
|
+
background_repeat(value: string): this;
|
|
53
|
+
border_top(): string | undefined;
|
|
54
|
+
border_top(value: string): this;
|
|
55
|
+
border_bottom(): string | undefined;
|
|
56
|
+
border_bottom(value: string): this;
|
|
57
|
+
border_right(): string | undefined;
|
|
58
|
+
border_right(value: string): this;
|
|
59
|
+
border_left(): string | undefined;
|
|
60
|
+
border_left(value: string): this;
|
|
61
|
+
border_color(): string | undefined;
|
|
62
|
+
border_color(value: string): this;
|
|
63
|
+
border_style(): string | undefined;
|
|
64
|
+
border_style(value: string): this;
|
|
65
|
+
cursor(): string | undefined;
|
|
66
|
+
cursor(value: string): this;
|
|
67
|
+
justify_items(): string | undefined;
|
|
68
|
+
justify_items(value: string): this;
|
|
69
|
+
letter_spacing(): string | undefined;
|
|
70
|
+
letter_spacing(value: string): this;
|
|
71
|
+
line_height(): string | undefined;
|
|
72
|
+
line_height(value: string): this;
|
|
73
|
+
outline(): string | undefined;
|
|
74
|
+
outline(value: string): this;
|
|
75
|
+
overflow(): string | undefined;
|
|
76
|
+
overflow(value: string): this;
|
|
77
|
+
overflow_x(): string | undefined;
|
|
78
|
+
overflow_x(value: string): this;
|
|
79
|
+
overflow_y(): string | undefined;
|
|
80
|
+
overflow_y(value: string): this;
|
|
81
|
+
text_align(): string | undefined;
|
|
82
|
+
text_align(value: string): this;
|
|
83
|
+
text_align_last(): string | undefined;
|
|
84
|
+
text_align_last(value: string): this;
|
|
85
|
+
text_decoration(): string | undefined;
|
|
86
|
+
text_decoration(value: string): this;
|
|
87
|
+
text_decoration_color(): string | undefined;
|
|
88
|
+
text_decoration_color(value: string): this;
|
|
89
|
+
text_wrap(): string | undefined;
|
|
90
|
+
text_wrap(value: string): this;
|
|
91
|
+
white_space(): string | undefined;
|
|
92
|
+
white_space(value: string): this;
|
|
93
|
+
overflow_wrap(): string | undefined;
|
|
94
|
+
overflow_wrap(value: string): this;
|
|
95
|
+
word_wrap(): string | undefined;
|
|
96
|
+
word_wrap(value: string): this;
|
|
97
|
+
box_shadow(): string | undefined;
|
|
98
|
+
box_shadow(value: string): this;
|
|
99
|
+
drop_shadow(): string | undefined;
|
|
100
|
+
drop_shadow(value: string): this;
|
|
101
|
+
font_size(): string | undefined;
|
|
102
|
+
font_size(value: string | number): this;
|
|
103
|
+
font(): string | undefined;
|
|
104
|
+
font(value: string | number): this;
|
|
105
|
+
font_family(): string | undefined;
|
|
106
|
+
font_family(value: string | number): this;
|
|
107
|
+
font_style(): string | undefined;
|
|
108
|
+
font_style(value: string | number): this;
|
|
109
|
+
font_weight(): string | undefined;
|
|
110
|
+
font_weight(value: string | number): this;
|
|
111
|
+
width(): string | undefined;
|
|
112
|
+
width(value: string | number): this;
|
|
113
|
+
min_width(): string | undefined;
|
|
114
|
+
min_width(value: string | number): this;
|
|
115
|
+
max_width(): string | undefined;
|
|
116
|
+
max_width(value: string | number): this;
|
|
117
|
+
height(): string | undefined;
|
|
118
|
+
height(value: string | number): this;
|
|
119
|
+
min_height(): string | undefined;
|
|
120
|
+
min_height(value: string | number): this;
|
|
121
|
+
max_height(): string | undefined;
|
|
122
|
+
max_height(value: string | number): this;
|
|
123
|
+
margin_top(): string | undefined;
|
|
124
|
+
margin_top(value: string | number): this;
|
|
125
|
+
margin_bottom(): string | undefined;
|
|
126
|
+
margin_bottom(value: string | number): this;
|
|
127
|
+
margin_right(): string | undefined;
|
|
128
|
+
margin_right(value: string | number): this;
|
|
129
|
+
margin_left(): string | undefined;
|
|
130
|
+
margin_left(value: string | number): this;
|
|
131
|
+
padding_top(): string | undefined;
|
|
132
|
+
padding_top(value: string | number): this;
|
|
133
|
+
padding_bottom(): string | undefined;
|
|
134
|
+
padding_bottom(value: string | number): this;
|
|
135
|
+
padding_right(): string | undefined;
|
|
136
|
+
padding_right(value: string | number): this;
|
|
137
|
+
padding_left(): string | undefined;
|
|
138
|
+
padding_left(value: string | number): this;
|
|
139
|
+
border_width(): string | undefined;
|
|
140
|
+
border_width(value: string | number): this;
|
|
141
|
+
align_items(): string | undefined;
|
|
142
|
+
align_items(value: string): this;
|
|
143
|
+
align_content(): string | undefined;
|
|
144
|
+
align_content(value: string): this;
|
|
145
|
+
background_size(): string | undefined;
|
|
146
|
+
background_size(value: string): this;
|
|
147
|
+
box_sizing(): string | undefined;
|
|
148
|
+
box_sizing(value: string): this;
|
|
149
|
+
flex(): string | undefined;
|
|
150
|
+
flex(value: string): this;
|
|
151
|
+
flex_grow(): string | undefined;
|
|
152
|
+
flex_grow(value: string): this;
|
|
153
|
+
flex_shrink(): string | undefined;
|
|
154
|
+
flex_shrink(value: string): this;
|
|
155
|
+
justify_content(): string | undefined;
|
|
156
|
+
justify_content(value: string): this;
|
|
157
|
+
mask(): string | undefined;
|
|
158
|
+
mask(value: string): this;
|
|
159
|
+
user_select(): string | undefined;
|
|
160
|
+
user_select(value: string): this;
|
|
161
|
+
styles(styles: Record<string, string>): this;
|
|
162
|
+
attrs(attrs: Record<string, string>): this;
|
|
163
|
+
events(events: Record<string, (event: Event) => void>): this;
|
|
164
|
+
add_class(name: string): this;
|
|
165
|
+
remove_class(name: string): this;
|
|
166
|
+
append(...children: (Element | any[] | Function | none)[]): this;
|
|
167
|
+
inner_html(): string | null;
|
|
168
|
+
inner_html(value: string): this;
|
|
169
|
+
center(): this;
|
|
170
|
+
padding(): string;
|
|
171
|
+
padding(value: string | number): this;
|
|
172
|
+
padding(top_bottom: string | number, left_right: string | number): this;
|
|
173
|
+
padding(top: string | number, right: string | number, bottom: string | number, left: string | number): this;
|
|
174
|
+
margin(): string | undefined;
|
|
175
|
+
margin(value: string | number): this;
|
|
176
|
+
margin(value: none | string | number, value2: none | string | number): this;
|
|
177
|
+
margin(value: none | string | number, value2: none | string | number, value3: none | string | number, value4: none | string | number): this;
|
|
178
|
+
fixed_width(): string | undefined;
|
|
179
|
+
fixed_width(value: string | number): this;
|
|
180
|
+
fixed_height(): string | undefined;
|
|
181
|
+
fixed_height(value: string | number): this;
|
|
182
|
+
frame(width: string | number | undefined, height: string | number | undefined): this;
|
|
183
|
+
min_frame(width: string | number | undefined, height: string | number | undefined): this;
|
|
184
|
+
max_frame(width: string | number | undefined, height: string | number | undefined): this;
|
|
185
|
+
fixed_frame(width: string | number | undefined, height: string | number | undefined): this;
|
|
186
|
+
color(): string | undefined;
|
|
187
|
+
color(value: string): this;
|
|
188
|
+
border(): string | undefined;
|
|
189
|
+
border(a: string): this;
|
|
190
|
+
border(a: string | number, b: string | number): this;
|
|
191
|
+
border(a: string | number, b: string | number, c: string | number): this;
|
|
192
|
+
border_radius(): string | undefined;
|
|
193
|
+
border_radius(value: string | number): this;
|
|
194
|
+
background(): string | undefined;
|
|
195
|
+
background(value: string): this;
|
|
196
|
+
ellipsis_overflow(): boolean | undefined;
|
|
197
|
+
ellipsis_overflow(to: boolean): this;
|
|
198
|
+
on_click(): ((e: this, t: Event) => void) | undefined;
|
|
199
|
+
on_click(callback: (e: this, t: Event) => void): this;
|
|
200
|
+
lang(): string | undefined;
|
|
201
|
+
lang(value: string): this;
|
|
202
|
+
charset(): string | undefined;
|
|
203
|
+
charset(value: string): this;
|
|
204
|
+
viewport(): string | undefined;
|
|
205
|
+
viewport(value: string): this;
|
|
206
|
+
title(): string | undefined;
|
|
207
|
+
title(value: string): this;
|
|
208
|
+
}
|
|
209
|
+
export declare class TitleElement extends Element {
|
|
210
|
+
constructor(text?: string);
|
|
211
|
+
}
|
|
212
|
+
export declare const Title: <Extensions extends object = {}>(text?: string | undefined) => TitleElement & Extensions;
|
|
213
|
+
export declare const NullTitle: <Extensions extends object = {}>() => TitleElement & Extensions;
|
|
214
|
+
export declare class SubtitleElement extends Element {
|
|
215
|
+
constructor(text?: string);
|
|
216
|
+
}
|
|
217
|
+
export declare const Subtitle: <Extensions extends object = {}>(text?: string | undefined) => SubtitleElement & Extensions;
|
|
218
|
+
export declare const NullSubtitle: <Extensions extends object = {}>() => SubtitleElement & Extensions;
|
|
219
|
+
export declare class TextElement extends Element {
|
|
220
|
+
constructor(text?: string);
|
|
221
|
+
}
|
|
222
|
+
export declare const Text: <Extensions extends object = {}>(text?: string | undefined) => TextElement & Extensions;
|
|
223
|
+
export declare const NullText: <Extensions extends object = {}>() => TextElement & Extensions;
|
|
224
|
+
export declare class ImageElement extends Element {
|
|
225
|
+
constructor(src?: string);
|
|
226
|
+
}
|
|
227
|
+
export declare const Image: <Extensions extends object = {}>(src?: string | undefined) => ImageElement & Extensions;
|
|
228
|
+
export declare const NullImageElement: <Extensions extends object = {}>() => ImageElement & Extensions;
|
|
229
|
+
export declare class ImageMaskElement extends Element {
|
|
230
|
+
mask_child: VStackElement;
|
|
231
|
+
_src?: string;
|
|
232
|
+
constructor(src?: string);
|
|
233
|
+
mask_color(): string | undefined;
|
|
234
|
+
mask_color(value: string): this;
|
|
235
|
+
src(): string | undefined;
|
|
236
|
+
src(value: string): this;
|
|
237
|
+
mask(): string | undefined;
|
|
238
|
+
mask(value: string): this;
|
|
239
|
+
}
|
|
240
|
+
export declare const ImageMask: <Extensions extends object = {}>(src?: string | undefined) => ImageMaskElement & Extensions;
|
|
241
|
+
export declare const NullImageMaskElement: <Extensions extends object = {}>() => ImageMaskElement & Extensions;
|
|
242
|
+
export declare class VStackElement extends Element {
|
|
243
|
+
constructor(...children: any[]);
|
|
244
|
+
}
|
|
245
|
+
export declare const VStack: <Extensions extends object = {}>(...args: any[]) => VStackElement & Extensions;
|
|
246
|
+
export declare const NullVStackElement: <Extensions extends object = {}>() => VStackElement & Extensions;
|
|
247
|
+
export declare class DividerElement extends Element {
|
|
248
|
+
constructor(text?: string);
|
|
249
|
+
}
|
|
250
|
+
export declare const Divider: <Extensions extends object = {}>(text?: string | undefined) => DividerElement & Extensions;
|
|
251
|
+
export declare const NullDividerElement: <Extensions extends object = {}>() => DividerElement & Extensions;
|
|
252
|
+
export declare class TableDataElement extends Element {
|
|
253
|
+
constructor(...children: any[]);
|
|
254
|
+
center(): this;
|
|
255
|
+
center_vertical(): this;
|
|
256
|
+
leading_vertical(): this;
|
|
257
|
+
trailing_vertical(): this;
|
|
258
|
+
}
|
|
259
|
+
export declare const TableData: <Extensions extends object = {}>(...args: any[]) => TableDataElement & Extensions;
|
|
260
|
+
export declare const NullTableDataElement: <Extensions extends object = {}>() => TableDataElement & Extensions;
|
|
261
|
+
export declare class TableRowElement extends Element {
|
|
262
|
+
private current_cell;
|
|
263
|
+
private _wrap;
|
|
264
|
+
constructor(...children: any[]);
|
|
265
|
+
append(...children: any[]): this;
|
|
266
|
+
wrap(): boolean;
|
|
267
|
+
wrap(value: boolean): this;
|
|
268
|
+
center(): this;
|
|
269
|
+
center_vertical(): this;
|
|
270
|
+
leading_vertical(): this;
|
|
271
|
+
trailing_vertical(): this;
|
|
272
|
+
}
|
|
273
|
+
export declare const TableRow: <Extensions extends object = {}>(...args: any[]) => TableRowElement & Extensions;
|
|
274
|
+
export declare const NullTableRowElement: <Extensions extends object = {}>() => TableRowElement & Extensions;
|
|
275
|
+
export declare class TableElement extends Element {
|
|
276
|
+
current_cell?: TableDataElement;
|
|
277
|
+
current_row: TableRowElement;
|
|
278
|
+
constructor(...children: any[]);
|
|
279
|
+
row(...children: any[]): this;
|
|
280
|
+
append(...children: any[]): this;
|
|
281
|
+
}
|
|
282
|
+
export declare const Table: <Extensions extends object = {}>(...args: any[]) => TableElement & Extensions;
|
|
283
|
+
export declare const NullTableElement: <Extensions extends object = {}>() => TableElement & Extensions;
|
|
284
|
+
export declare class CSSElement extends Element {
|
|
285
|
+
constructor(style?: string);
|
|
286
|
+
}
|
|
287
|
+
export declare const CSS: <Extensions extends object = {}>(style?: string | undefined) => CSSElement & Extensions;
|
|
288
|
+
export declare const NullCSSElement: <Extensions extends object = {}>() => CSSElement & Extensions;
|
|
289
|
+
export declare class MailElement extends Element {
|
|
290
|
+
private _subject?;
|
|
291
|
+
constructor(...children: any[]);
|
|
292
|
+
subject(): string | undefined;
|
|
293
|
+
subject(subj: string): this;
|
|
294
|
+
}
|
|
295
|
+
export declare const Mail: <Extensions extends object = {}>(...args: any[]) => MailElement & Extensions;
|
|
296
|
+
export declare const NullMailElement: <Extensions extends object = {}>() => MailElement & Extensions;
|
|
297
|
+
export {};
|