{"ScriptPreparationCode":"// For accuracy declare the regex in root scope\r\n// assume this tester doesnt rerun the setup on each test case\r\nconst DOMAIN_TO_LOCALE = Object.freeze({\r\n com: \u0027en-us\u0027,\r\n dk: \u0027da\u0027,\r\n de: \u0027de\u0027,\r\n fr: \u0027fr-fr\u0027,\r\n no: \u0027nb\u0027,\r\n pt: \u0027pt\u0027,\r\n se: \u0027sv\u0027,\r\n \u0027com.br\u0027: \u0027pt-br\u0027,\r\n \u0027com.es\u0027: \u0027es\u0027,\r\n});\r\nconst FOO_VALID_TLDS = Object.keys(DOMAIN_TO_LOCALE).join(\u0027|\u0027);\r\nconst FOO_DOMAIN_REGEX = new RegExp(\r\n \u0060^https://(?:[\\\\w-]\u002B\\\\.)*foo\\\\.(?:${FOO_VALID_TLDS})\\\\.?(?::[\\\\d]{1,5})?$\u0060\r\n);\r\n\r\nfunction checkRegex(url) {\r\n return FOO_DOMAIN_REGEX.test(url)\r\n}\r\n\r\nfunction checkProcedural(url) {\r\n const {\r\n protocol,\r\n hostname\r\n } = new URL(url);\r\n const [subdomain, tld] = hostname.split(\u0027foo.\u0027);\r\n \r\n if (typeof tld === \u0027undefined\u0027) return;\r\n\r\n const isSecure = protocol.startsWith(\u0027https\u0027);\r\n const isValidTld = tld in DOMAIN_TO_LOCALE;\r\n\r\n return isSecure \u0026\u0026 isValidTld;\r\n}\r\n\r\nwindow.validCases = [\r\n \u0027https://foo.com\u0027,\r\n \u0027https://bar.foo.com\u0027,\r\n \u0027https://foo.bar.foo.com\u0027,\r\n \u0027https://BAR.foo.com\u0027,\r\n \u0027https://-_47.foo.com\u0027,\r\n \u0027https://foo.foo.com\u0027,\r\n \u0027https://foo.com:1\u0027,\r\n \u0027https://foo.com:65535\u0027,\r\n \u0027https://foo.com.\u0027,\r\n \u0027https://foo.com.:47\u0027,\r\n \u0027https://foo.fr\u0027,\r\n \u0027https://develop.foo.fr\u0027,\r\n \u0027https://develop.nested.foo.fr\u0027,\r\n \u0027https://develop.nested.foo.com.es\u0027,\r\n];\r\n\r\nwindow.invalidCases = [\r\n \u0027https://foo.com.fake.com\u0027,\r\n \u0027https://foo.com.org\u0027,\r\n \u0027https://foofoo.com\u0027,\r\n \u0027file://foo.com\u0027,\r\n \u0027http://foo.com\u0027,\r\n \u0027https://.foo.com\u0027,\r\n];","TestCases":[{"Name":"Regex: Valid Cases","Code":"validCases.every(url =\u003E checkRegex(url));","IsDeferred":false},{"Name":"Regex: Invalid Cases","Code":"invalidCases.every(url =\u003E !checkRegex(url));","IsDeferred":false},{"Name":"Procedural: Valid Cases","Code":"validCases.every(url =\u003E checkProcedural(url));","IsDeferred":false},{"Name":"Procedural: Invalid Cases","Code":"invalidCases.every(url =\u003E !checkProcedural(url));","IsDeferred":false}]}