Convert the bundled backend/internal/plugins/calcomblock package into a standalone reactor-mode wasm plugin, dropping every git.dev.alexdunmow.com/block/cms import (forbidden in standalone plugins): - package calcomblock -> package main; add wasip1 main.go with wasmguest.Serve(Registration). go.mod module git.dev.alexdunmow.com/block/calcomblock, block/core v0.18.2, no replace directives. - Settings persistence: replace the pool-backed poolQuerier (direct SQL against the public-schema `settings` table, which a sandboxed plugin role cannot read) with capabilityQuerier over the SDK settings.Settings / settings.Updater capabilities. GetSiteTimezone now resolves via GetSiteSettings host-side. - Vendor the small CMS-internal helpers the plugin used into internal/helpers (GetRealIP, StartCleanupLoop, MaskSecret, GetStringOr, the PluginSettingsQuerier settings helpers, PluginCrypto for tests) and internal/db (minimal Setting / UpsertSettingParams), each with a provenance header. - Inline the captcha widget: vendor blocks.CaptchaWidget as a local CaptchaWidget templ (captcha_widget.templ) and regenerate templ; drop the block/cms/blocks import from booking.templ. - blockConfig (server-authoritative captcha requirement via a page_block_snapshots scan) has no wasm-ABI capability, so it is left nil: honeypot + per-IP rate limit still apply. Documented as a follow-up. - web: @block-ninja/ui workspace:* -> ^0.1.0 registry version; eslint.config.js repointed at ../../../cms/web/eslint.config.js; rebuild web/dist. - Rewrite CLAUDE.md for the standalone wasm reality; add .gitignore. Full test suite preserved and passing; builds to calcomblock-2.0.0.bnp; check-safety passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
258 lines
12 KiB
Go
258 lines
12 KiB
Go
package main
|
|
|
|
// Country is one ITU dialing entry for the booking phone country selector.
|
|
type Country struct {
|
|
Name string
|
|
Code string // ISO 3166-1 alpha-2
|
|
Dial string // E.164 calling code, e.g. "+61"
|
|
}
|
|
|
|
// countries is the full country list (sorted by name) rendered in the phone
|
|
// country combobox, and the source of truth for country lookups (countryByCode,
|
|
// countryLabel). Generated from the public CountryCodes dataset
|
|
// (gist anubhavshrimal/75f6183458db8c453306f93521e93d37).
|
|
var countries = []Country{
|
|
{Name: "Afghanistan", Code: "AF", Dial: "+93"},
|
|
{Name: "Aland Islands", Code: "AX", Dial: "+358"},
|
|
{Name: "Albania", Code: "AL", Dial: "+355"},
|
|
{Name: "Algeria", Code: "DZ", Dial: "+213"},
|
|
{Name: "AmericanSamoa", Code: "AS", Dial: "+1684"},
|
|
{Name: "Andorra", Code: "AD", Dial: "+376"},
|
|
{Name: "Angola", Code: "AO", Dial: "+244"},
|
|
{Name: "Anguilla", Code: "AI", Dial: "+1264"},
|
|
{Name: "Antarctica", Code: "AQ", Dial: "+672"},
|
|
{Name: "Antigua and Barbuda", Code: "AG", Dial: "+1268"},
|
|
{Name: "Argentina", Code: "AR", Dial: "+54"},
|
|
{Name: "Armenia", Code: "AM", Dial: "+374"},
|
|
{Name: "Aruba", Code: "AW", Dial: "+297"},
|
|
{Name: "Australia", Code: "AU", Dial: "+61"},
|
|
{Name: "Austria", Code: "AT", Dial: "+43"},
|
|
{Name: "Azerbaijan", Code: "AZ", Dial: "+994"},
|
|
{Name: "Bahamas", Code: "BS", Dial: "+1242"},
|
|
{Name: "Bahrain", Code: "BH", Dial: "+973"},
|
|
{Name: "Bangladesh", Code: "BD", Dial: "+880"},
|
|
{Name: "Barbados", Code: "BB", Dial: "+1246"},
|
|
{Name: "Belarus", Code: "BY", Dial: "+375"},
|
|
{Name: "Belgium", Code: "BE", Dial: "+32"},
|
|
{Name: "Belize", Code: "BZ", Dial: "+501"},
|
|
{Name: "Benin", Code: "BJ", Dial: "+229"},
|
|
{Name: "Bermuda", Code: "BM", Dial: "+1441"},
|
|
{Name: "Bhutan", Code: "BT", Dial: "+975"},
|
|
{Name: "Bolivia, Plurinational State of", Code: "BO", Dial: "+591"},
|
|
{Name: "Bosnia and Herzegovina", Code: "BA", Dial: "+387"},
|
|
{Name: "Botswana", Code: "BW", Dial: "+267"},
|
|
{Name: "Brazil", Code: "BR", Dial: "+55"},
|
|
{Name: "British Indian Ocean Territory", Code: "IO", Dial: "+246"},
|
|
{Name: "Brunei Darussalam", Code: "BN", Dial: "+673"},
|
|
{Name: "Bulgaria", Code: "BG", Dial: "+359"},
|
|
{Name: "Burkina Faso", Code: "BF", Dial: "+226"},
|
|
{Name: "Burundi", Code: "BI", Dial: "+257"},
|
|
{Name: "Cambodia", Code: "KH", Dial: "+855"},
|
|
{Name: "Cameroon", Code: "CM", Dial: "+237"},
|
|
{Name: "Canada", Code: "CA", Dial: "+1"},
|
|
{Name: "Cape Verde", Code: "CV", Dial: "+238"},
|
|
{Name: "Cayman Islands", Code: "KY", Dial: "+345"},
|
|
{Name: "Central African Republic", Code: "CF", Dial: "+236"},
|
|
{Name: "Chad", Code: "TD", Dial: "+235"},
|
|
{Name: "Chile", Code: "CL", Dial: "+56"},
|
|
{Name: "China", Code: "CN", Dial: "+86"},
|
|
{Name: "Christmas Island", Code: "CX", Dial: "+61"},
|
|
{Name: "Cocos (Keeling) Islands", Code: "CC", Dial: "+61"},
|
|
{Name: "Colombia", Code: "CO", Dial: "+57"},
|
|
{Name: "Comoros", Code: "KM", Dial: "+269"},
|
|
{Name: "Congo", Code: "CG", Dial: "+242"},
|
|
{Name: "Congo, The Democratic Republic of the Congo", Code: "CD", Dial: "+243"},
|
|
{Name: "Cook Islands", Code: "CK", Dial: "+682"},
|
|
{Name: "Costa Rica", Code: "CR", Dial: "+506"},
|
|
{Name: "Cote d'Ivoire", Code: "CI", Dial: "+225"},
|
|
{Name: "Croatia", Code: "HR", Dial: "+385"},
|
|
{Name: "Cuba", Code: "CU", Dial: "+53"},
|
|
{Name: "Cyprus", Code: "CY", Dial: "+357"},
|
|
{Name: "Czech Republic", Code: "CZ", Dial: "+420"},
|
|
{Name: "Denmark", Code: "DK", Dial: "+45"},
|
|
{Name: "Djibouti", Code: "DJ", Dial: "+253"},
|
|
{Name: "Dominica", Code: "DM", Dial: "+1767"},
|
|
{Name: "Dominican Republic", Code: "DO", Dial: "+1849"},
|
|
{Name: "Ecuador", Code: "EC", Dial: "+593"},
|
|
{Name: "Egypt", Code: "EG", Dial: "+20"},
|
|
{Name: "El Salvador", Code: "SV", Dial: "+503"},
|
|
{Name: "Equatorial Guinea", Code: "GQ", Dial: "+240"},
|
|
{Name: "Eritrea", Code: "ER", Dial: "+291"},
|
|
{Name: "Estonia", Code: "EE", Dial: "+372"},
|
|
{Name: "Ethiopia", Code: "ET", Dial: "+251"},
|
|
{Name: "Falkland Islands (Malvinas)", Code: "FK", Dial: "+500"},
|
|
{Name: "Faroe Islands", Code: "FO", Dial: "+298"},
|
|
{Name: "Fiji", Code: "FJ", Dial: "+679"},
|
|
{Name: "Finland", Code: "FI", Dial: "+358"},
|
|
{Name: "France", Code: "FR", Dial: "+33"},
|
|
{Name: "French Guiana", Code: "GF", Dial: "+594"},
|
|
{Name: "French Polynesia", Code: "PF", Dial: "+689"},
|
|
{Name: "Gabon", Code: "GA", Dial: "+241"},
|
|
{Name: "Gambia", Code: "GM", Dial: "+220"},
|
|
{Name: "Georgia", Code: "GE", Dial: "+995"},
|
|
{Name: "Germany", Code: "DE", Dial: "+49"},
|
|
{Name: "Ghana", Code: "GH", Dial: "+233"},
|
|
{Name: "Gibraltar", Code: "GI", Dial: "+350"},
|
|
{Name: "Greece", Code: "GR", Dial: "+30"},
|
|
{Name: "Greenland", Code: "GL", Dial: "+299"},
|
|
{Name: "Grenada", Code: "GD", Dial: "+1473"},
|
|
{Name: "Guadeloupe", Code: "GP", Dial: "+590"},
|
|
{Name: "Guam", Code: "GU", Dial: "+1671"},
|
|
{Name: "Guatemala", Code: "GT", Dial: "+502"},
|
|
{Name: "Guernsey", Code: "GG", Dial: "+44"},
|
|
{Name: "Guinea", Code: "GN", Dial: "+224"},
|
|
{Name: "Guinea-Bissau", Code: "GW", Dial: "+245"},
|
|
{Name: "Guyana", Code: "GY", Dial: "+595"},
|
|
{Name: "Haiti", Code: "HT", Dial: "+509"},
|
|
{Name: "Holy See (Vatican City State)", Code: "VA", Dial: "+379"},
|
|
{Name: "Honduras", Code: "HN", Dial: "+504"},
|
|
{Name: "Hong Kong", Code: "HK", Dial: "+852"},
|
|
{Name: "Hungary", Code: "HU", Dial: "+36"},
|
|
{Name: "Iceland", Code: "IS", Dial: "+354"},
|
|
{Name: "India", Code: "IN", Dial: "+91"},
|
|
{Name: "Indonesia", Code: "ID", Dial: "+62"},
|
|
{Name: "Iran, Islamic Republic of Persian Gulf", Code: "IR", Dial: "+98"},
|
|
{Name: "Iraq", Code: "IQ", Dial: "+964"},
|
|
{Name: "Ireland", Code: "IE", Dial: "+353"},
|
|
{Name: "Isle of Man", Code: "IM", Dial: "+44"},
|
|
{Name: "Israel", Code: "IL", Dial: "+972"},
|
|
{Name: "Italy", Code: "IT", Dial: "+39"},
|
|
{Name: "Jamaica", Code: "JM", Dial: "+1876"},
|
|
{Name: "Japan", Code: "JP", Dial: "+81"},
|
|
{Name: "Jersey", Code: "JE", Dial: "+44"},
|
|
{Name: "Jordan", Code: "JO", Dial: "+962"},
|
|
{Name: "Kazakhstan", Code: "KZ", Dial: "+77"},
|
|
{Name: "Kenya", Code: "KE", Dial: "+254"},
|
|
{Name: "Kiribati", Code: "KI", Dial: "+686"},
|
|
{Name: "Korea, Democratic People's Republic of Korea", Code: "KP", Dial: "+850"},
|
|
{Name: "Korea, Republic of South Korea", Code: "KR", Dial: "+82"},
|
|
{Name: "Kuwait", Code: "KW", Dial: "+965"},
|
|
{Name: "Kyrgyzstan", Code: "KG", Dial: "+996"},
|
|
{Name: "Laos", Code: "LA", Dial: "+856"},
|
|
{Name: "Latvia", Code: "LV", Dial: "+371"},
|
|
{Name: "Lebanon", Code: "LB", Dial: "+961"},
|
|
{Name: "Lesotho", Code: "LS", Dial: "+266"},
|
|
{Name: "Liberia", Code: "LR", Dial: "+231"},
|
|
{Name: "Libyan Arab Jamahiriya", Code: "LY", Dial: "+218"},
|
|
{Name: "Liechtenstein", Code: "LI", Dial: "+423"},
|
|
{Name: "Lithuania", Code: "LT", Dial: "+370"},
|
|
{Name: "Luxembourg", Code: "LU", Dial: "+352"},
|
|
{Name: "Macao", Code: "MO", Dial: "+853"},
|
|
{Name: "Macedonia", Code: "MK", Dial: "+389"},
|
|
{Name: "Madagascar", Code: "MG", Dial: "+261"},
|
|
{Name: "Malawi", Code: "MW", Dial: "+265"},
|
|
{Name: "Malaysia", Code: "MY", Dial: "+60"},
|
|
{Name: "Maldives", Code: "MV", Dial: "+960"},
|
|
{Name: "Mali", Code: "ML", Dial: "+223"},
|
|
{Name: "Malta", Code: "MT", Dial: "+356"},
|
|
{Name: "Marshall Islands", Code: "MH", Dial: "+692"},
|
|
{Name: "Martinique", Code: "MQ", Dial: "+596"},
|
|
{Name: "Mauritania", Code: "MR", Dial: "+222"},
|
|
{Name: "Mauritius", Code: "MU", Dial: "+230"},
|
|
{Name: "Mayotte", Code: "YT", Dial: "+262"},
|
|
{Name: "Mexico", Code: "MX", Dial: "+52"},
|
|
{Name: "Micronesia, Federated States of Micronesia", Code: "FM", Dial: "+691"},
|
|
{Name: "Moldova", Code: "MD", Dial: "+373"},
|
|
{Name: "Monaco", Code: "MC", Dial: "+377"},
|
|
{Name: "Mongolia", Code: "MN", Dial: "+976"},
|
|
{Name: "Montenegro", Code: "ME", Dial: "+382"},
|
|
{Name: "Montserrat", Code: "MS", Dial: "+1664"},
|
|
{Name: "Morocco", Code: "MA", Dial: "+212"},
|
|
{Name: "Mozambique", Code: "MZ", Dial: "+258"},
|
|
{Name: "Myanmar", Code: "MM", Dial: "+95"},
|
|
{Name: "Namibia", Code: "NA", Dial: "+264"},
|
|
{Name: "Nauru", Code: "NR", Dial: "+674"},
|
|
{Name: "Nepal", Code: "NP", Dial: "+977"},
|
|
{Name: "Netherlands", Code: "NL", Dial: "+31"},
|
|
{Name: "Netherlands Antilles", Code: "AN", Dial: "+599"},
|
|
{Name: "New Caledonia", Code: "NC", Dial: "+687"},
|
|
{Name: "New Zealand", Code: "NZ", Dial: "+64"},
|
|
{Name: "Nicaragua", Code: "NI", Dial: "+505"},
|
|
{Name: "Niger", Code: "NE", Dial: "+227"},
|
|
{Name: "Nigeria", Code: "NG", Dial: "+234"},
|
|
{Name: "Niue", Code: "NU", Dial: "+683"},
|
|
{Name: "Norfolk Island", Code: "NF", Dial: "+672"},
|
|
{Name: "Northern Mariana Islands", Code: "MP", Dial: "+1670"},
|
|
{Name: "Norway", Code: "NO", Dial: "+47"},
|
|
{Name: "Oman", Code: "OM", Dial: "+968"},
|
|
{Name: "Pakistan", Code: "PK", Dial: "+92"},
|
|
{Name: "Palau", Code: "PW", Dial: "+680"},
|
|
{Name: "Palestinian Territory, Occupied", Code: "PS", Dial: "+970"},
|
|
{Name: "Panama", Code: "PA", Dial: "+507"},
|
|
{Name: "Papua New Guinea", Code: "PG", Dial: "+675"},
|
|
{Name: "Paraguay", Code: "PY", Dial: "+595"},
|
|
{Name: "Peru", Code: "PE", Dial: "+51"},
|
|
{Name: "Philippines", Code: "PH", Dial: "+63"},
|
|
{Name: "Pitcairn", Code: "PN", Dial: "+872"},
|
|
{Name: "Poland", Code: "PL", Dial: "+48"},
|
|
{Name: "Portugal", Code: "PT", Dial: "+351"},
|
|
{Name: "Puerto Rico", Code: "PR", Dial: "+1939"},
|
|
{Name: "Qatar", Code: "QA", Dial: "+974"},
|
|
{Name: "Reunion", Code: "RE", Dial: "+262"},
|
|
{Name: "Romania", Code: "RO", Dial: "+40"},
|
|
{Name: "Russia", Code: "RU", Dial: "+7"},
|
|
{Name: "Rwanda", Code: "RW", Dial: "+250"},
|
|
{Name: "Saint Barthelemy", Code: "BL", Dial: "+590"},
|
|
{Name: "Saint Helena, Ascension and Tristan Da Cunha", Code: "SH", Dial: "+290"},
|
|
{Name: "Saint Kitts and Nevis", Code: "KN", Dial: "+1869"},
|
|
{Name: "Saint Lucia", Code: "LC", Dial: "+1758"},
|
|
{Name: "Saint Martin", Code: "MF", Dial: "+590"},
|
|
{Name: "Saint Pierre and Miquelon", Code: "PM", Dial: "+508"},
|
|
{Name: "Saint Vincent and the Grenadines", Code: "VC", Dial: "+1784"},
|
|
{Name: "Samoa", Code: "WS", Dial: "+685"},
|
|
{Name: "San Marino", Code: "SM", Dial: "+378"},
|
|
{Name: "Sao Tome and Principe", Code: "ST", Dial: "+239"},
|
|
{Name: "Saudi Arabia", Code: "SA", Dial: "+966"},
|
|
{Name: "Senegal", Code: "SN", Dial: "+221"},
|
|
{Name: "Serbia", Code: "RS", Dial: "+381"},
|
|
{Name: "Seychelles", Code: "SC", Dial: "+248"},
|
|
{Name: "Sierra Leone", Code: "SL", Dial: "+232"},
|
|
{Name: "Singapore", Code: "SG", Dial: "+65"},
|
|
{Name: "Slovakia", Code: "SK", Dial: "+421"},
|
|
{Name: "Slovenia", Code: "SI", Dial: "+386"},
|
|
{Name: "Solomon Islands", Code: "SB", Dial: "+677"},
|
|
{Name: "Somalia", Code: "SO", Dial: "+252"},
|
|
{Name: "South Africa", Code: "ZA", Dial: "+27"},
|
|
{Name: "South Georgia and the South Sandwich Islands", Code: "GS", Dial: "+500"},
|
|
{Name: "South Sudan", Code: "SS", Dial: "+211"},
|
|
{Name: "Spain", Code: "ES", Dial: "+34"},
|
|
{Name: "Sri Lanka", Code: "LK", Dial: "+94"},
|
|
{Name: "Sudan", Code: "SD", Dial: "+249"},
|
|
{Name: "Suriname", Code: "SR", Dial: "+597"},
|
|
{Name: "Svalbard and Jan Mayen", Code: "SJ", Dial: "+47"},
|
|
{Name: "Swaziland", Code: "SZ", Dial: "+268"},
|
|
{Name: "Sweden", Code: "SE", Dial: "+46"},
|
|
{Name: "Switzerland", Code: "CH", Dial: "+41"},
|
|
{Name: "Syrian Arab Republic", Code: "SY", Dial: "+963"},
|
|
{Name: "Taiwan", Code: "TW", Dial: "+886"},
|
|
{Name: "Tajikistan", Code: "TJ", Dial: "+992"},
|
|
{Name: "Tanzania, United Republic of Tanzania", Code: "TZ", Dial: "+255"},
|
|
{Name: "Thailand", Code: "TH", Dial: "+66"},
|
|
{Name: "Timor-Leste", Code: "TL", Dial: "+670"},
|
|
{Name: "Togo", Code: "TG", Dial: "+228"},
|
|
{Name: "Tokelau", Code: "TK", Dial: "+690"},
|
|
{Name: "Tonga", Code: "TO", Dial: "+676"},
|
|
{Name: "Trinidad and Tobago", Code: "TT", Dial: "+1868"},
|
|
{Name: "Tunisia", Code: "TN", Dial: "+216"},
|
|
{Name: "Turkey", Code: "TR", Dial: "+90"},
|
|
{Name: "Turkmenistan", Code: "TM", Dial: "+993"},
|
|
{Name: "Turks and Caicos Islands", Code: "TC", Dial: "+1649"},
|
|
{Name: "Tuvalu", Code: "TV", Dial: "+688"},
|
|
{Name: "Uganda", Code: "UG", Dial: "+256"},
|
|
{Name: "Ukraine", Code: "UA", Dial: "+380"},
|
|
{Name: "United Arab Emirates", Code: "AE", Dial: "+971"},
|
|
{Name: "United Kingdom", Code: "GB", Dial: "+44"},
|
|
{Name: "United States", Code: "US", Dial: "+1"},
|
|
{Name: "Uruguay", Code: "UY", Dial: "+598"},
|
|
{Name: "Uzbekistan", Code: "UZ", Dial: "+998"},
|
|
{Name: "Vanuatu", Code: "VU", Dial: "+678"},
|
|
{Name: "Venezuela, Bolivarian Republic of Venezuela", Code: "VE", Dial: "+58"},
|
|
{Name: "Vietnam", Code: "VN", Dial: "+84"},
|
|
{Name: "Virgin Islands, British", Code: "VG", Dial: "+1284"},
|
|
{Name: "Virgin Islands, U.S.", Code: "VI", Dial: "+1340"},
|
|
{Name: "Wallis and Futuna", Code: "WF", Dial: "+681"},
|
|
{Name: "Yemen", Code: "YE", Dial: "+967"},
|
|
{Name: "Zambia", Code: "ZM", Dial: "+260"},
|
|
{Name: "Zimbabwe", Code: "ZW", Dial: "+263"},
|
|
}
|