From 13fc434a454b259ea948dff319a26d0a5017ff75 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Wed, 21 Jun 2023 14:34:07 +0200 Subject: [PATCH 01/15] Create type definitions for expensify-common --- .eslintignore | 1 + lib/CONST.d.ts | 779 +++++++++++++++++++++++++++++++++++++++++++ lib/Device.d.ts | 7 + lib/ExpensiMark.d.ts | 118 +++++++ lib/Logger.d.ts | 65 ++++ lib/Url.d.ts | 11 + lib/str.d.ts | 643 +++++++++++++++++++++++++++++++++++ lib/str.js | 2 +- lib/tlds.d.ts | 2 + 9 files changed, 1627 insertions(+), 1 deletion(-) create mode 100644 .eslintignore create mode 100644 lib/CONST.d.ts create mode 100644 lib/Device.d.ts create mode 100644 lib/ExpensiMark.d.ts create mode 100644 lib/Logger.d.ts create mode 100644 lib/Url.d.ts create mode 100644 lib/str.d.ts create mode 100644 lib/tlds.d.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..191ae4cc --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +*.d.ts \ No newline at end of file diff --git a/lib/CONST.d.ts b/lib/CONST.d.ts new file mode 100644 index 00000000..20489174 --- /dev/null +++ b/lib/CONST.d.ts @@ -0,0 +1,779 @@ +/** + * URL of our CloudFront Instance + */ +export declare const g_cloudFront: "https://d2k5nsl2zxldvw.cloudfront.net"; +/** + * URL of our image CDN + */ +export declare const g_cloudFrontImg: "https://d2k5nsl2zxldvw.cloudfront.net/images/"; +export declare const CONST: { + readonly CORPAY_DIRECT_REIMBURSEMENT_CURRENCIES: readonly ["USD", "GBP", "EUR", "AUD", "CAD"]; + /** + * Default max ACH limit. It can be overwritten by a private NVP + * + * @type {Number} + */ + readonly ACH_DEFAULT_MAX_AMOUNT_LIMIT: 2000000; + /** + * IRS remimbursement rate for mileage + * WARNING ! UPDATE THE PHP CONSTANT VERSION WHEN UPDATING THIS ONE + * + * @type Number + */ + readonly MILEAGE_IRS_RATE: 0.545 | 0.58; + readonly COUNTRY: { + readonly US: "US"; + readonly AU: "AU"; + readonly UK: "UK"; + readonly NZ: "NZ"; + }; + readonly CURRENCIES: { + readonly US: "USD"; + readonly AU: "AUD"; + readonly UK: "GBP"; + readonly NZ: "NZD"; + }; + readonly STATES: { + readonly AK: { + readonly stateISO: "AK"; + readonly stateName: "Alaska"; + }; + readonly AL: { + readonly stateISO: "AL"; + readonly stateName: "Alabama"; + }; + readonly AR: { + readonly stateISO: "AR"; + readonly stateName: "Arkansas"; + }; + readonly AZ: { + readonly stateISO: "AZ"; + readonly stateName: "Arizona"; + }; + readonly CA: { + readonly stateISO: "CA"; + readonly stateName: "California"; + }; + readonly CO: { + readonly stateISO: "CO"; + readonly stateName: "Colorado"; + }; + readonly CT: { + readonly stateISO: "CT"; + readonly stateName: "Connecticut"; + }; + readonly DE: { + readonly stateISO: "DE"; + readonly stateName: "Delaware"; + }; + readonly FL: { + readonly stateISO: "FL"; + readonly stateName: "Florida"; + }; + readonly GA: { + readonly stateISO: "GA"; + readonly stateName: "Georgia"; + }; + readonly HI: { + readonly stateISO: "HI"; + readonly stateName: "Hawaii"; + }; + readonly IA: { + readonly stateISO: "IA"; + readonly stateName: "Iowa"; + }; + readonly ID: { + readonly stateISO: "ID"; + readonly stateName: "Idaho"; + }; + readonly IL: { + readonly stateISO: "IL"; + readonly stateName: "Illinois"; + }; + readonly IN: { + readonly stateISO: "IN"; + readonly stateName: "Indiana"; + }; + readonly KS: { + readonly stateISO: "KS"; + readonly stateName: "Kansas"; + }; + readonly KY: { + readonly stateISO: "KY"; + readonly stateName: "Kentucky"; + }; + readonly LA: { + readonly stateISO: "LA"; + readonly stateName: "Louisiana"; + }; + readonly MA: { + readonly stateISO: "MA"; + readonly stateName: "Massachusetts"; + }; + readonly MD: { + readonly stateISO: "MD"; + readonly stateName: "Maryland"; + }; + readonly ME: { + readonly stateISO: "ME"; + readonly stateName: "Maine"; + }; + readonly MI: { + readonly stateISO: "MI"; + readonly stateName: "Michigan"; + }; + readonly MN: { + readonly stateISO: "MN"; + readonly stateName: "Minnesota"; + }; + readonly MO: { + readonly stateISO: "MO"; + readonly stateName: "Missouri"; + }; + readonly MS: { + readonly stateISO: "MS"; + readonly stateName: "Mississippi"; + }; + readonly MT: { + readonly stateISO: "MT"; + readonly stateName: "Montana"; + }; + readonly NC: { + readonly stateISO: "NC"; + readonly stateName: "North Carolina"; + }; + readonly ND: { + readonly stateISO: "ND"; + readonly stateName: "North Dakota"; + }; + readonly NE: { + readonly stateISO: "NE"; + readonly stateName: "Nebraska"; + }; + readonly NH: { + readonly stateISO: "NH"; + readonly stateName: "New Hampshire"; + }; + readonly NJ: { + readonly stateISO: "NJ"; + readonly stateName: "New Jersey"; + }; + readonly NM: { + readonly stateISO: "NM"; + readonly stateName: "New Mexico"; + }; + readonly NV: { + readonly stateISO: "NV"; + readonly stateName: "Nevada"; + }; + readonly NY: { + readonly stateISO: "NY"; + readonly stateName: "New York"; + }; + readonly OH: { + readonly stateISO: "OH"; + readonly stateName: "Ohio"; + }; + readonly OK: { + readonly stateISO: "OK"; + readonly stateName: "Oklahoma"; + }; + readonly OR: { + readonly stateISO: "OR"; + readonly stateName: "Oregon"; + }; + readonly PA: { + readonly stateISO: "PA"; + readonly stateName: "Pennsylvania"; + }; + readonly PR: { + readonly stateISO: "PR"; + readonly stateName: "Puerto Rico"; + }; + readonly RI: { + readonly stateISO: "RI"; + readonly stateName: "Rhode Island"; + }; + readonly SC: { + readonly stateISO: "SC"; + readonly stateName: "South Carolina"; + }; + readonly SD: { + readonly stateISO: "SD"; + readonly stateName: "South Dakota"; + }; + readonly TN: { + readonly stateISO: "TN"; + readonly stateName: "Tennessee"; + }; + readonly TX: { + readonly stateISO: "TX"; + readonly stateName: "Texas"; + }; + readonly UT: { + readonly stateISO: "UT"; + readonly stateName: "Utah"; + }; + readonly VA: { + readonly stateISO: "VA"; + readonly stateName: "Virginia"; + }; + readonly VT: { + readonly stateISO: "VT"; + readonly stateName: "Vermont"; + }; + readonly WA: { + readonly stateISO: "WA"; + readonly stateName: "Washington"; + }; + readonly WI: { + readonly stateISO: "WI"; + readonly stateName: "Wisconsin"; + }; + readonly WV: { + readonly stateISO: "WV"; + readonly stateName: "West Virginia"; + }; + readonly WY: { + readonly stateISO: "WY"; + readonly stateName: "Wyoming"; + }; + readonly DC: { + readonly stateISO: "DC"; + readonly stateName: "District Of Columbia"; + }; + }; + /** + * Store all the regular expression we are using for matching stuff + */ + readonly REG_EXP: { + /** + * Regular expression to check that a domain is valid + * + * @type RegExp + */ + readonly DOMAIN: RegExp; + /** + * Regex matching an text containing an email + * + * @type String + */ + readonly EMAIL_PART: "([\\w\\-\\+\\'#]+(?:\\.[\\w\\-\\'\\+]+)*@(?:[\\w\\-]+\\.)+[a-z]{2,})"; + /** + * Regular expression to check that a basic name is valid + * + * @type RegExp + */ + readonly FREE_NAME: RegExp; + /** + * Regular expression to check that a card is masked + * + * @type RegExp + */ + readonly MASKED_CARD: RegExp; + /** + * Regular expression to check that an email is valid + * + * @type RegExp + */ + readonly EMAIL: RegExp; + /** + * Regular expression to extract an email from a text + * + * @type RegExp + */ + readonly EXTRACT_EMAIL: RegExp; + /** + * Regular expression to search for valid email addresses in a string + * + * @type RegExp + */ + readonly EMAIL_SEARCH: RegExp; + /** + * Regular expression to detect if something is a hyperlink + * + * Adapted from: https://gist.github.com/dperini/729294 + * + * @type RegExp + */ + readonly HYPERLINK: RegExp; + /** + * Regex to match valid emails during markdown transformations + * + * @type String + */ + readonly MARKDOWN_EMAIL: "([a-zA-Z0-9.!#$%&'+/=?^`{|}-][a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]*@[a-zA-Z0-9-]+?(\\.[a-zA-Z]+)+)"; + /** + * Regex matching an text containing an Emoji + * + * @type RegExp + */ + readonly EMOJIS: RegExp; + }; + readonly REPORT: { + /** + * Limit when we decided to turn off print to pdf and use only the native feature + */ + readonly LIMIT_PRINT_PDF: 250; + readonly ACH_LIMIT: 2000000; + readonly ACH_DEFAULT_DAYS: 4; + /** + * This is the string that a user can enter in a formula to refer to the repot title field + * + * @type {String} + */ + readonly TITLE_FORMULA: "{report:title}"; + /** + * The max time a comment can be made after another to be considered the same comment, in seconds + */ + readonly MAX_AGE_SAME_COMMENT: 300; + readonly SMARTREPORT_AGENT_EMAIL: "smartreports@expensify.com"; + }; + /** + * Root URLs + */ + readonly URL: { + readonly FORUM_ROOT: "https://community.expensify.com/"; + readonly RECEIPTS: { + readonly DEVELOPMENT: "https://www.expensify.com.dev/receipts/"; + readonly STAGING: "https://staging.expensify.com/receipts/"; + readonly PRODUCTION: "https://www.expensify.com/receipts/"; + }; + readonly CLOUDFRONT: "https://d2k5nsl2zxldvw.cloudfront.net"; + readonly CLOUDFRONT_IMG: "https://d2k5nsl2zxldvw.cloudfront.net/images/"; + readonly CLOUDFRONT_FILES: "https://d2k5nsl2zxldvw.cloudfront.net/files/"; + readonly EXPENSIFY_SYNC_MANAGER: "quickbooksdesktop/Expensify_QuickBooksDesktop_Setup_230403124.exe"; + readonly USEDOT_ROOT: "https://use.expensify.com/"; + readonly ITUNES_SUBSCRIPTION: "https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions"; + }; + readonly DATE: { + readonly FORMAT_STRING: "yyyy-MM-dd"; + readonly FORMAT_STRING_PRETTY: "MMM d, yyyy"; + /** + * Expensify date format string for moment js + * usage: moment().format( CONST.DATE.MOMENT_FORMAT_STRING ) + */ + readonly MOMENT_FORMAT_STRING: "YYYY-MM-DD"; + /** + * This is a typical format of the date plus the time + * + * @type {String} + */ + readonly MOMENT_DATE_TIME: "YYYY-MM-DD HH:mm"; + /** + * Pretty format used for report history items + * + * @example Jun 19, 2019 12:38 PM + * + * @type {String} + */ + readonly MOMENT_DATE_TIME_PRETTY: "MMM DD YYYY h:mma"; + /** + * Date-time format, including timezone information, eg "2015-10-14T19:44:35+07:00" + * + * @type {String} + */ + readonly MOMENT_DATE_TIME_TIMEZONE: "YYYY-MM-DDTHH:mm:ssZ"; + /** + * Moment formatting option for a date of this format "Jul 2, 2014" + * + * @type {string} + */ + readonly MOMENT_US_DATE: "MMM D, YYYY"; + /** + * Moment formatting option for a date of this format "July 2, 2014" + * ie, full month name + * + * @type {string} + */ + readonly MOMENT_US_DATE_LONG: "MMMM D, YYYY"; + /** + * Moment formatting option for full month name and year as in "July 2015" + * + * @type {string} + */ + readonly MOMENT_US_MONTH_YEAR_LONG: "MMMM YYYY"; + /** + * Difference between the local time and UTC time in ms + */ + readonly TIMEZONE_OFFSET_MS: number; + readonly SHORT_MONTH_SHORT_DAY: "MMM d"; + readonly LONG_YEAR_MONTH_DAY_24_TIME: "yyyy-MM-dd HH:mm:ss"; + readonly SHORT_MONTH_DAY_LOCAL_TIME: "MMM D [at] LT"; + readonly SHORT_MONTH_DAY_YEAR_LOCAL_TIME: "MMM D, YYYY [at] LT"; + }; + /** + * Message used by the Func.die() exception + * + * @type String + */ + readonly FUNC_DIE_MESSAGE: "Aborting JavaScript execution"; + /** + * Default for how long the email delivery failure NVP should be valid (in seconds) + * Currently 14 days (14 * 24 * 60 * 60) + * + * WARNING ! UPDATE THE PHP CONSTANT VERSION WHEN UPDATING THIS ONE + * + * @type Integer + */ + readonly EMAIL_DELIVERY_FAILURE_VALIDITY: 1209600; + /** + * Bill Processing-related constants + */ + readonly BILL_PROCESSING_PARTNER_NAME: "expensify.cash"; + readonly BILL_PROCESSING_EMAIL_DOMAIN: "expensify.cash"; + /** + * Bank Import Logic Constants + */ + readonly BANK_IMPORT: { + readonly BANK_STATUS_BROKEN: 2; + }; + /** + * Bank Account Logic Constants + */ + readonly BANK_ACCOUNT: { + readonly VERIFICATION_MAX_ATTEMPTS: 7; + }; + /** + * Emails that the user shouldn't be interacting with from the front-end interface + * Trying to add these emails as a delegate, onto a policy, or as an approver is considered invalid + * Any changes here should be reflected in the PHP constant in web-expensify, + * which is located in _constant.php and also named EXPENSIFY_EMAILS. + * And should also be reflected in the constant in expensify/app, + * which is located in src/CONST.js and also named EXPENSIFY_EMAILS. + */ + readonly EXPENSIFY_EMAILS: readonly ["concierge@expensify.com", "help@expensify.com", "receipts@expensify.com", "chronos@expensify.com", "qa@expensify.com", "contributors@expensify.com", "firstresponders@expensify.com", "qa+travisreceipts@expensify.com", "bills@expensify.com", "studentambassadors@expensify.com", "accounting@expensify.com", "payroll@expensify.com", "svfg@expensify.com", "integrationtestingcreds@expensify.com", "admin@expensify.com"]; + /** + * Emails that the user shouldn't submit reports to nor share reports with + * Any changes here should be reflected in the PHP constant, + * which is located in _constant.php and also named INVALID_APPROVER_AND_SHAREE_EMAILS + */ + readonly INVALID_APPROVER_AND_SHAREE_EMAILS: readonly ["concierge@expensify.com", "help@expensify.com", "receipts@expensify.com", "chronos@expensify.com", "qa@expensify.com", "contributors@expensify.com", "firstresponders@expensify.com", "qa+travisreceipts@expensify.com", "bills@expensify.com", "admin@expensify.com"]; + /** + * Smart scan-related constants + */ + readonly SMART_SCAN: { + readonly COST: 20; + readonly FREE_NUMBER: 25; + }; + readonly SMS: { + readonly DOMAIN: "expensify.sms"; + readonly E164_REGEX: RegExp; + }; + readonly PASSWORD_COMPLEXITY_REGEX_STRING: "^(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}$"; + readonly INTEGRATIONS: { + /** + * Constants that specify how to map (import) Integrations data to Expensify + * Parallel to IntegrationEntityMappingTypeEnum in the IS + */ + readonly DATA_MAPPING: { + readonly NONE: "NONE"; + readonly TAG: "TAG"; + readonly REPORT_FIELD: "REPORT_FIELD"; + readonly DEFAULT: "DEFAULT"; + }; + readonly EXPORT_DATE: { + readonly LAST_EXPENSE: "LAST_EXPENSE"; + readonly REPORT_EXPORTED: "REPORT_EXPORTED"; + readonly REPORT_SUBMITTED: "REPORT_SUBMITTED"; + }; + readonly XERO_HQ_CONNECTION_NAME: "xerohq"; + readonly EXPENSIFY_SYNC_MANAGER_VERSION: "23.0.403.124"; + }; + readonly INTEGRATION_TYPES: { + readonly ACCOUNTING: "accounting"; + readonly HR: "hr"; + }; + readonly DIRECT_INTEGRATIONS: { + readonly zenefits: { + readonly value: "zenefits"; + readonly text: "Zenefits"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/zenefit.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/zenefit_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/zenefit_alert.svg"; + readonly types: readonly ["hr"]; + readonly isCorporateOnly: false; + }; + readonly gusto: { + readonly value: "gusto"; + readonly text: "Gusto"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/gusto.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/gusto_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/gusto_alert.svg"; + readonly types: readonly ["hr"]; + readonly isCorporateOnly: false; + }; + readonly quickbooksOnline: { + readonly value: "quickbooksOnline"; + readonly text: "QuickBooks Online"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/quickbooks.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/quickbooks_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/quickbooks_alert.svg"; + readonly types: readonly ["hr", "accounting"]; + readonly isCorporateOnly: false; + }; + readonly xero: { + readonly value: "xero"; + readonly text: "Xero"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/xero.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/xero_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/xero_alert.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: false; + }; + readonly netsuite: { + readonly value: "netsuite"; + readonly text: "NetSuite"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/netsuite.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/netsuite_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/netsuite_alert.svg"; + readonly types: readonly ["hr", "accounting"]; + readonly isCorporateOnly: true; + }; + readonly quickbooksDesktop: { + readonly value: "qbd"; + readonly text: "QuickBooks Desktop"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/quickbooks.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/quickbooks_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/quickbooks_alert.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: false; + }; + readonly intacct: { + readonly value: "intacct"; + readonly text: "Sage Intacct"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sage.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sage_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sage_alert.svg"; + readonly types: readonly ["hr", "accounting"]; + readonly isCorporateOnly: true; + }; + readonly financialforce: { + readonly value: "financialforce"; + readonly text: "FinancialForce"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/financialforce.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/financialforce_gray.svg"; + readonly alert_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/financialforce_alert.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: true; + }; + }; + readonly INDIRECT_INTEGRATIONS: { + readonly microsoft_dynamics: { + readonly value: "microsoft_dynamics"; + readonly text: "Microsoft Dynamics"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/microsoft_dynamics.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/microsoft_dynamics_gray.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: true; + }; + readonly oracle: { + readonly value: "oracle"; + readonly text: "Oracle"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/oracle.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/oracle_gray.svg"; + readonly types: readonly ["hr", "accounting"]; + readonly isCorporateOnly: true; + }; + readonly sage: { + readonly value: "sage"; + readonly text: "Sage"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sage.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sage_gray.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: true; + }; + readonly sap: { + readonly value: "sap"; + readonly text: "SAP"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sap.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/sap_gray.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: true; + }; + readonly myob: { + readonly value: "myob"; + readonly text: "MYOB"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/myob.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/myob_gray.svg"; + readonly types: readonly ["accounting"]; + readonly isCorporateOnly: true; + }; + readonly workday: { + readonly value: "workday"; + readonly text: "Workday"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/workday.svg"; + readonly gray_image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/workday_gray.svg"; + readonly types: readonly ["hr"]; + readonly isCorporateOnly: true; + }; + readonly adp: { + readonly value: "adp"; + readonly text: "ADP"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/export-icons/adp.svg"; + readonly types: readonly ["hr"]; + readonly isCorporateOnly: true; + }; + readonly generic_indirect_connection: { + readonly value: "generic_indirect_connection"; + readonly text: "Other"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + readonly types: readonly ["hr", "accounting"]; + }; + }; + readonly DEFAULT_IS_TEMPLATES: { + readonly default: { + readonly value: "default_template"; + readonly text: "Basic Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + readonly tag: { + readonly value: "tag_template"; + readonly text: "Tag Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + readonly category: { + readonly value: "category_template"; + readonly text: "Category Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + readonly detailed: { + readonly value: "detailed_export"; + readonly text: "All Data - Expense Level Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + readonly report: { + readonly value: "report_level_export"; + readonly text: "All Data - Report Level Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + readonly tax: { + readonly value: "multiple_tax_export"; + readonly text: "Canadian Multiple Tax Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + readonly perdiem: { + readonly value: "per_diem_export"; + readonly text: "Per Diem Export"; + readonly image: "https://d2k5nsl2zxldvw.cloudfront.net/images/icons/accounting-other--blue.svg"; + }; + }; + readonly NVP: { + readonly DISMISSED_VIOLATIONS: "dismissedViolations"; + }; + readonly FILESIZE: { + readonly BYTES_IN_MEGABYTE: 1000000; + readonly MAX: 10000000; + }; + readonly PARTNER_NAMES: { + readonly IPHONE: "iphone"; + readonly ANDROID: "android"; + readonly CHAT: "chat-expensify-com"; + }; + readonly LOGIN_TYPES: { + readonly WEB: "login"; + readonly MOBILE: "device"; + }; + readonly EXPENSIFY_CARD: { + readonly FEED_NAME: "Expensify Card"; + readonly FRAUD_STATES: { + readonly NONE: 0; + readonly DOMAIN_CARDS_REIMBURSEMENTS_INVESTIGATION: 1; + readonly DOMAIN_CARDS_RAPID_INCREASE_INVESTIGATION: 2; + readonly DOMAIN_CARDS_RAPID_INCREASE_CLEARED: 3; + readonly DOMAIN_CARDS_RAPID_INCREASE_CONFIRMED: 4; + readonly INDIVIDUAL_CARD_RAPID_INCREASE_INVESTIGATION: 5; + readonly INDIVIDUAL_CARD_RAPID_INCREASE_CLEARED: 6; + readonly INDIVIDUAL_CARD_RAPID_INCREASE_CONFIRMED: 7; + readonly SUSPICIOUS_PAN_ENTRY: 8; + readonly SUSPICIOUS_PAN_ENTRY_CLEARED: 9; + readonly SUSPICIOUS_PAN_ENTRY_CONFIRMED: 10; + }; + }; + readonly TRAVEL_BOOKING: { + readonly OPTIONS: { + readonly shortFlightFare: { + readonly economy: "Economy"; + readonly premiumEconomy: "Premium Economy"; + readonly business: "Business"; + readonly first: "First"; + }; + readonly longFlightFare: { + readonly economy: "Economy"; + readonly premiumEconomy: "Premium Economy"; + readonly business: "Business"; + readonly first: "First"; + }; + readonly hotelStar: { + readonly oneStar: "1"; + readonly twoStars: "2"; + readonly threeStars: "3"; + readonly fourStars: "4"; + readonly fiveStars: "5"; + }; + }; + readonly DEFAULT_OPTIONS: { + readonly shortFlightFare: "economy"; + readonly longFlightFare: "economy"; + readonly hotelStar: "fourStars"; + }; + }; + readonly EXPENSIFY_DOMAINS: readonly ["expensify.com", "expensifail.com", "expensicorp.com"]; + readonly SUBSCRIPTION_CHANGE_REASONS: { + readonly TOO_LIMITED: { + readonly id: "tooLimited"; + readonly label: "Functionality needs improvement"; + readonly prompt: "What software are you migrating to and what led to this decision?"; + }; + readonly TOO_EXPENSIVE: { + readonly id: "tooExpensive"; + readonly label: "Too expensive"; + readonly prompt: "What software are you migrating to and what led to this decision?"; + }; + readonly INADEQUATE_SUPPORT: { + readonly id: "inadequateSupport"; + readonly label: "Inadequate customer support"; + readonly prompt: "What software are you migrating to and what led to this decision?"; + }; + readonly BUSINESS_CLOSING: { + readonly id: "businessClosing"; + readonly label: "Company closing, downsizing, or acquired"; + readonly prompt: "What software are you migrating to and what led to this decision?"; + }; + }; +}; +/** + * UI Constants + */ +export declare const UI: { + readonly ICON: { + readonly DELETE: "trashcan"; + readonly CAR: "car"; + readonly CASH: "cash"; + readonly MANAGED_CARD: "corporate-card"; + readonly CARD: "credit-card"; + readonly CLOCK: "time"; + readonly PER_DIEM: "per-diem"; + readonly PENDING_CARD: "card-transaction-pending"; + readonly CSV_UPLOAD: "csv-upload"; + readonly PENDING_CREDIT_CARD: "credit-card-pending"; + }; + readonly spinnerDIV: "
"; + readonly spinnerSmallDIV: "
"; + readonly spinnerLargeDIV: "
"; + readonly spinnerClass: "view_spinner"; + readonly SPINNER: "spinner"; + readonly imageURLPrefix: "https://d2k5nsl2zxldvw.cloudfront.net/images/"; + readonly ACTIVE: "active"; + readonly ERROR: "error"; + readonly HIDDEN: "hidden"; + readonly INVISIBLE: "invisible"; + readonly DEPRECIATED: "depreciated"; + readonly DISABLED: "disabled"; + readonly REQUIRED: "required"; + readonly SELECT_DEFAULT: "###"; + readonly SELECTED: "selected"; + readonly QR_CODE: "js_qrCode"; + readonly DIALOG_Z_INDEX: 4000; +}; +export declare const PUBLIC_DOMAINS: readonly ["accountant.com", "afis.ch", "aol.com", "artlover.com", "asia.com", "att.net", "bellsouth.net", "bills.expensify.com", "btinternet.com", "cheerful.com", "chromeexpensify.com", "comcast.net", "consultant.com", "contractor.com", "cox.net", "cpa.com", "cryptohistoryprice.com", "dr.com", "email.com", "engineer.com", "europe.com", "evernote.user", "execs.com", "expensify.cash", "expensify.sms", "gmail.com", "gmail.con", "googlemail.com", "hey.com", "hotmail.co.uk", "hotmail.com", "hotmail.fr", "hotmail.it", "icloud.com", "iname.com", "jeeviess.com", "live.com", "mac.com", "mail.com", "mail.ru", "mailfence.com", "me.com", "msn.com", "musician.org", "myself.com", "outlook.com", "pm.me", "post.com", "privaterelay.appleid.com", "proton.me", "protonmail.ch", "protonmail.com", "qq.com", "rigl.ch", "sasktel.net", "sbcglobal.net", "spacehotline.com", "tafmail.com", "techie.com", "usa.com", "verizon.net", "vomoto.com", "wolfandcranebar.tech", "workmail.com", "writeme.com", "yahoo.ca", "yahoo.co.in", "yahoo.co.uk", "yahoo.com", "yahoo.com.br", "ymail.com"]; diff --git a/lib/Device.d.ts b/lib/Device.d.ts new file mode 100644 index 00000000..fc4b39a8 --- /dev/null +++ b/lib/Device.d.ts @@ -0,0 +1,7 @@ +declare function getOSAndName(): { + os: string | undefined; + os_version: string | undefined; + device_name: string | undefined; + device_version: string | undefined; +}; +export { getOSAndName }; diff --git a/lib/ExpensiMark.d.ts b/lib/ExpensiMark.d.ts new file mode 100644 index 00000000..88b7dbce --- /dev/null +++ b/lib/ExpensiMark.d.ts @@ -0,0 +1,118 @@ +declare type Replacement = string | ((...args: string[]) => string); +declare type Rule = { + name: string; + process?: (textToProcess: string, replacement: Replacement) => string; + regex?: RegExp; + replacement: Replacement; + pre?: (input: string) => string; + post?: (input: string) => string; +}; +export default class ExpensiMark { + rules: Rule[]; + htmlToMarkdownRules: Rule[]; + htmlToTextRules: Rule[]; + constructor(); + /** + * Replaces markdown with html elements + * + * @param {String} text - Text to parse as markdown + * @param {Object} [options] - Options to customize the markdown parser + * @param {String[]} [options.filterRules=[]] - An array of name of rules as defined in this class. + * If not provided, all available rules will be applied. + * @param {Boolean} [options.shouldEscapeText=true] - Whether or not the text should be escaped + * + * @returns {String} + */ + replace(text: string, { filterRules, shouldEscapeText }?: { + filterRules?: string[]; + shouldEscapeText?: boolean; + }): string; + /** + * Checks matched URLs for validity and replace valid links with html elements + * + * @param {RegExp} regex + * @param {String} textToCheck + * @param {Function} replacement + * + * @returns {String} + */ + modifyTextForUrlLinks(regex: RegExp, textToCheck: string, replacement: Replacement): string; + /** + * Checks matched Emails for validity and replace valid links with html elements + * + * @param {RegExp} regex + * @param {String} textToCheck + * @param {Function} replacement + * + * @returns {String} + */ + modifyTextForEmailLinks(regex: RegExp, textToCheck: string, replacement: Replacement): string; + /** + * replace block element with '\n' if : + * 1. We have text within the element. + * 2. The text does not end with a new line. + * 3. The text does not have quote mark '>' . + * 4. It's not the last element in the string. + * + * @param {String} htmlString + * @returns {String} + */ + replaceBlockElementWithNewLine(htmlString: string): string; + /** + * Replaces HTML with markdown + * + * @param {String} htmlString + * + * @returns {String} + */ + htmlToMarkdown(htmlString: string): string; + /** + * Convert HTML to text + * + * @param {String} htmlString + * @returns {String} + */ + htmlToText(htmlString: string): string; + /** + * Modify text for Quotes replacing chevrons with html elements + * + * @param {RegExp} regex + * @param {String} textToCheck + * @param {Function} replacement + * + * @returns {String} + */ + modifyTextForQuote(regex: RegExp, textToCheck: string, replacement: Replacement): string; + /** + * Format the content of blockquote if the text matches the regex or else just return the original text + * + * @param {RegExp} regex + * @param {String} textToCheck + * @param {Function} replacement + * + * @returns {String} + */ + formatTextForQuote(regex: RegExp, textToCheck: string, replacement: Replacement): string; + /** + * Check if the input text includes only the open or the close tag of an element. + * + * @param {String} textToCheck - Text to check + * + * @returns {Boolean} + */ + containsNonPairTag(textToCheck: string): boolean; + /** + * @param {String} comment + * @returns {Array} + */ + extractLinksInMarkdownComment(comment: string): string[]; + /** + * Compares two markdown comments and returns a list of the links removed in a new comment. + * + * @param {String} oldComment + * @param {String} newComment + * @returns {Array} + */ + getRemovedMarkdownLinks(oldComment: string, newComment: string): string[]; +} +export {}; diff --git a/lib/Logger.d.ts b/lib/Logger.d.ts new file mode 100644 index 00000000..2e9c3bf2 --- /dev/null +++ b/lib/Logger.d.ts @@ -0,0 +1,65 @@ +declare type Parameters = string | Record; +declare type ServerLoggingCallback = (logger: Logger, options: Record) => Promise; +declare type ClientLoggingCallBack = (message: string) => void; +export default class Logger { + logLines: Array>; + serverLoggingCallback: ServerLoggingCallback; + clientLoggingCallback: ClientLoggingCallBack; + isDebug: boolean; + constructor({ serverLoggingCallback, isDebug, clientLoggingCallback }: { + serverLoggingCallback: ServerLoggingCallback; + isDebug: boolean; + clientLoggingCallback: ClientLoggingCallBack; + }); + /** + * Ask the server to write the log message + */ + logToServer(): void; + /** + * Add a message to the list + * @param {String} message + * @param {Object|String} parameters The parameters associated with the message + * @param {Boolean} forceFlushToServer Should we force flushing all logs to server? + * @param {Boolean} onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true + */ + add(message: string, parameters: Parameters, forceFlushToServer: boolean, onlyFlushWithOthers?: boolean): void; + /** + * Caches an informational message locally, to be sent to the server if + * needed later. + * + * @param {String} message The message to log. + * @param {Boolean} sendNow if true, the message will be sent right away. + * @param {Object|String} parameters The parameters to send along with the message + * @param {Boolean} onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true + */ + info(message: string, sendNow?: boolean, parameters?: Parameters, onlyFlushWithOthers?: boolean): void; + /** + * Logs an alert. + * + * @param {String} message The message to alert. + * @param {Object|String} parameters The parameters to send along with the message + * @param {Boolean} includeStackTrace Must be disabled for testing + */ + alert(message: string, parameters?: Parameters, includeStackTrace?: boolean): void; + /** + * Logs a warn. + * + * @param {String} message The message to warn. + * @param {Object|String} parameters The parameters to send along with the message + */ + warn(message: string, parameters?: Parameters): void; + /** + * Logs a hmmm. + * + * @param {String} message The message to hmmm. + * @param {Object|String} parameters The parameters to send along with the message + */ + hmmm(message: string, parameters?: Parameters): void; + /** + * Logs a message in the browser console. + * + * @param {String} message The message to log. + */ + client(message: string): void; +} +export {}; diff --git a/lib/Url.d.ts b/lib/Url.d.ts new file mode 100644 index 00000000..6ee0df6d --- /dev/null +++ b/lib/Url.d.ts @@ -0,0 +1,11 @@ +declare const URL_PROTOCOL_REGEX: "((ht|f)tps?:\\/\\/)"; +declare const URL_WEBSITE_REGEX: "((ht|f)tps?:\\/\\/)?((?:www\\.)?[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)+(?:XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_))"; +declare const URL_PATH_REGEX: "(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*"; +declare const URL_PARAM_REGEX: "(?:\\?(?:[-\\w$@.+!*()\\/,=%{}:;\\[\\]\\|_|~]|&(?:amp|quot|#x27);)*)?"; +declare const URL_FRAGMENT_REGEX: "(?:#(?:[-\\w$@.+!*()[\\],=%;\\/:~]|&(?:amp|quot|#x27);)*)?"; +declare const URL_REGEX: "((((ht|f)tps?:\\/\\/)?((?:www\\.)?[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)+(?:XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_)))(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*(?:(?:\\?(?:[-\\w$@.+!*()\\/,=%{}:;\\[\\]\\|_|~]|&(?:amp|quot|#x27);)*)?|(?:#(?:[-\\w$@.+!*()[\\],=%;\\/:~]|&(?:amp|quot|#x27);)*)?)*)"; +declare const URL_REGEX_WITH_REQUIRED_PROTOCOL: string; +declare const LOOSE_URL_WEBSITE_REGEX: "((ht|f)tps?:\\/\\/)([-\\w]+(\\.[-\\w]+)*)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_))"; +declare const LOOSE_URL_REGEX: "((((ht|f)tps?:\\/\\/)([-\\w]+(\\.[-\\w]+)*)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_)))(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*(?:(?:\\?(?:[-\\w$@.+!*()\\/,=%{}:;\\[\\]\\|_|~]|&(?:amp|quot|#x27);)*)?|(?:#(?:[-\\w$@.+!*()[\\],=%;\\/:~]|&(?:amp|quot|#x27);)*)?)*)"; +declare const MARKDOWN_URL_REGEX: "(((((ht|f)tps?:\\/\\/)([-\\w]+(\\.[-\\w]+)*)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_)))(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*(?:(?:\\?(?:[-\\w$@.+!*()\\/,=%{}:;\\[\\]\\|_|~]|&(?:amp|quot|#x27);)*)?|(?:#(?:[-\\w$@.+!*()[\\],=%;\\/:~]|&(?:amp|quot|#x27);)*)?)*)|((((ht|f)tps?:\\/\\/)?((?:www\\.)?[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)+(?:XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_)))(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*(?:(?:\\?(?:[-\\w$@.+!*()\\/,=%{}:;\\[\\]\\|_|~]|&(?:amp|quot|#x27);)*)?|(?:#(?:[-\\w$@.+!*()[\\],=%;\\/:~]|&(?:amp|quot|#x27);)*)?)*))"; +export { URL_WEBSITE_REGEX, URL_PATH_REGEX, URL_PARAM_REGEX, URL_FRAGMENT_REGEX, URL_REGEX, URL_REGEX_WITH_REQUIRED_PROTOCOL, URL_PROTOCOL_REGEX, LOOSE_URL_REGEX, LOOSE_URL_WEBSITE_REGEX, MARKDOWN_URL_REGEX, }; diff --git a/lib/str.d.ts b/lib/str.d.ts new file mode 100644 index 00000000..647364c1 --- /dev/null +++ b/lib/str.d.ts @@ -0,0 +1,643 @@ +declare const Str: { + /** + * Return true if the string is ending with the provided suffix + * + * @param {String} str String ot search in + * @param {String} suffix What to look for + * @return {Boolean} + */ + endsWith(str: string, suffix: string): boolean; + /** + * Converts a USD string into th number of cents it represents. + * + * @param {String} amountStr A string representing a USD value. + * @param {Boolean} allowFraction Flag indicating if fractions of cents should be + * allowed in the output. + * + * @return {Number} The cent value of the @p amountStr. + */ + fromUSDToNumber(amountStr: string, allowFraction: boolean): number; + /** + * Truncates the middle section of a string based on the max allowed length + * + * @param {string} fullStr + * @param {int} maxLength + * @returns {string} + */ + truncateInMiddle(fullStr: string, maxLength: number): string; + /** + * Convert new line to
+ * + * @param {String} str + * @returns {string} + */ + nl2br(str: string): string; + /** + * Decodes the given HTML encoded string. + * + * @param {String} s The string to decode. + * @return {String} The decoded string. + */ + htmlDecode(s: string): string; + /** + * HTML encodes the given string. + * + * @param {String} s The string to encode. + * @return {String} @p s HTML encoded. + */ + htmlEncode(s: string): string; + /** + * Escape text while preventing any sort of double escape, so 'X & Y' -> 'X & Y' and 'X & Y' -> 'X & Y' + * + * @param {String} s the string to escape + * @return {String} the escaped string + */ + safeEscape(s: string): string; + /** + * HTML encoding insensitive equals. + * + * @param {String} first string to compare + * @param {String} second string to compare + * @return {Boolean} true when first === second, ignoring HTML encoding + */ + htmlEncodingInsensitiveEquals(first: string, second: string): boolean; + /** + * Creates an ID that can be used as an HTML attribute from @p str. + * + * @param {String} str A string to create an ID from. + * @return {String} The ID string made from @p str. + */ + makeID(str: string): string; + /** + * Extracts an ID made with Str.makeID from a larger string. + * + * @param {String} str A string containing an id made with Str.makeID + * @return {String|null} The ID string. + */ + extractID(str: string): string | null; + /** + * Modifies the string so the first letter of each word is capitalized and the + * rest lowercased. + * + * @param {String} val The string to modify + * @return {String} + */ + recapitalize(val: string): string; + /** + * Replace all the non alphanumerical character by _ + * + * @param {String} input + * @returns {String} + */ + sanitizeToAlphaNumeric(input: string): string; + /** + * Strip out all the non numerical characters + * + * @param {String} input + * @returns {String} + */ + stripNonNumeric(input: string): string; + /** + * Strips all non ascii characters from a string + * @param {String} input + * @returns {String} The ascii version of the string. + */ + stripNonASCIICharacters(input: string): string; + /** + * Shortens the @p text to @p length and appends an ellipses to it. + * + * The ellipses will only be appended if @p text is longer than the @p length + * given. + * + * @param {String} val The string to reduce in size. + * @param {Number} length The maximal length desired. + * @return {String} The shortened @p text. + */ + shortenText(val: string, length: number): string; + /** + * Returns the byte size of a character + * @param {String} inputChar You can input more than one character, but it will only return the size of the first + * one. + * @returns {Number} Byte size of the character + */ + getRawByteSize(inputChar: string): number; + /** + * Gets the length of a string in bytes, including non-ASCII characters + * @param {String} input + * @returns {Number} The number of bytes used by string + */ + getByteLength(input: string): number; + /** + * Shortens the input by max byte size instead of by character length + * @param {String} input + * @param {Number} maxSize The max size in bytes, e.g. 256 + * @returns {String} Returns a shorted input if the input size exceeds the max + */ + shortenByByte(input: string, maxSize: number): string; + /** + * Returns true if the haystack begins with the needle + * + * @param {String} haystack The full string to be searched + * @param {String} needle The case-sensitive string to search for + * @return {Boolean} Retruns true if the haystack starts with the needle. + */ + startsWith(haystack: string, needle: string): boolean; + /** + * Gets the textual value of the given string. + * + * @param {String} str The string to fetch the text value from. + * @return {String} The text from within the HTML string. + */ + stripHTML(str: string): string; + /** + * Modifies the string so the first letter of the string is capitalized + * + * @param {String} str The string to modify. + * @return {String} The recapitalized string. + */ + UCFirst(str: string): string; + /** + * Returns a string containing all the characters str from the beginning + * of str to the first occurrence of substr. + * Example: Str.cutAfter( 'hello$%world', '$%' ) // returns 'hello' + * + * @param {String} str The string to modify. + * @param {String} substr The substring to search for. + * @return {String} The cut/trimmed string. + */ + cutAfter(str: string, substr: string): string; + /** + * Returns a string containing all the characters str from after the first + * occurrence of substr to the end of the string. + * Example: Str.cutBefore( 'hello$%world', '$%' ) // returns 'world' + * + * @param {String} str The string to modify. + * @param {String} substr The substring to search for. + * @return {String} The cut/trimmed string. + */ + cutBefore(str: string, substr: string): string; + /** + * Checks that the string is a domain name (e.g. example.com) + * + * @param {String} string The string to check for domainnameness. + * + * @returns {Boolean} True iff the string is a domain name + */ + isValidDomainName(string: string): boolean; + /** + * Checks that the string is a valid url + * + * @param {String} string + * + * @returns {Boolean} True if the string is a valid hyperlink + */ + isValidURL(string: string): boolean; + /** + * Checks that the string is an email address. + * NOTE: TLDs are not just 2-4 characters. Keep this in sync with _inputrules.php + * + * @param {String} string The string to check for email validity. + * + * @returns {Boolean} True iff the string is an email + */ + isValidEmail(string: string): boolean; + /** + * Checks if the string is an valid email address formed during comment markdown formation. + * + * @param {String} string The string to check for email validity. + * + * @returns {Boolean} True if the string is an valid email created by comment markdown. + */ + isValidEmailMarkdown(string: string): boolean; + /** + * Remove trailing comma from a string. + * + * @param {String} string The string with any trailing comma to be removed. + * + * @returns {String} string with the trailing comma removed + */ + removeTrailingComma(string: string): string; + /** + * Checks that the string is a list of coma separated email addresss. + * + * @param {String} str The string to check for emails validity. + * + * @returns {Boolean} True if all emails are valid or if input is empty + */ + areValidEmails(str: string): boolean; + /** + * Extract the email addresses from a string + * + * @param {String} string + * @returns {String[]|null} + */ + extractEmail(string: string): RegExpMatchArray | null; + /** + * Extracts the domain name from the given email address + * (e.g. "domain.com" for "joe@domain.com"). + * + * @param {String} email The email address. + * + * @returns {String} The domain name in the email address. + */ + extractEmailDomain(email: string): string; + /** + * Tries to extract the company name from the given email address + * (e.g. "yelp" for "joe@yelp.co.uk"). + * + * @param {String} email The email address. + * + * @returns {String|null} The company name in the email address or null. + */ + extractCompanyNameFromEmailDomain(email: string): string | null; + /** + * Extracts the local part from the given email address + * (e.g. "joe" for "joe@domain.com"). + * + * @param {String} email The email address. + * + * @returns {String} The local part in the email address. + */ + extractEmailLocalPart(email: string): string; + /** + * Sanitize phone number to return only numbers. Return null if non valid phone number. + * + * @param {String} str + * @returns {String|null} + */ + sanitizePhoneNumber(str: string): string | null; + /** + * Sanitize email. Return null if non valid email. + * + * @param {String} str + * @returns {String|null} + */ + sanitizeEmail(str: string): string | null; + /** + * Escapes all special RegExp characters from a string + * + * @param {String} string The subject + * + * @returns {String} The escaped string + */ + escapeForRegExp(string: string): string; + /** + * Escapes all special RegExp characters from a string except for the period + * + * @param {String} string The subject + * @returns {String} The escaped string + */ + escapeForExpenseRule(string: string): string; + /** + * Adds a backslash in front of each of colon + * if they don't already have a backslash in front of them + * + * @param {String} string The subject + * @returns {String} The escaped string + */ + addBackslashBeforeColonsForTagNamesComingFromQBD(string: string): string; + /** + * Removes backslashes from string + * eg: myString\[\]\* -> myString[]* + * + * @param {String} string + * @returns {String} + */ + stripBackslashes(string: string): string; + /** + * Checks if a string's length is in the specified range + * + * @param {String} string The subject + * @param {Number} minimumLength + * @param {Number} [maximumLength] + * + * @returns {Boolean} true if the length is in the range, false otherwise + */ + isOfLength( + string: string, + minimumLength: number, + maximumLength: number + ): boolean; + /** + * Count the number of occurences of needle in haystack. + * This is faster than counting the results of haystack.match( /needle/g ) + * via http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string + * + * @param {String} haystack The string to look inside of + * @param {String} needle What we're looking for + * @param {Boolean} allowOverlapping Defaults to false + * + * @returns {Integer} The number of times needle is in haystack. + */ + occurences( + haystack: string, + needle: string, + allowOverlapping: boolean + ): number; + /** + * Uppercases the first letter of each word + * via https://github.com/kvz/phpjs/blob/master/functions/strings/ucwords.js + * + * @param {String} str to uppercase words + * @returns {String} Uppercase worded string + */ + ucwords(str: string): string; + /** + * Returns true if the haystack contains the needle + * + * @param {String} haystack The full string to be searched + * @param {String} needle The case-sensitive string to search for + * + * @return {Boolean} Returns true if the haystack contains the needle + */ + contains(haystack: string, needle: string): boolean; + /** + * Returns true if the haystack contains the needle, ignoring case + * + * @param {String} haystack The full string to be searched + * @param {String} needle The case-insensitive string to search for + * + * @return {Boolean} Returns true if the haystack contains the needle, ignoring case + */ + caseInsensitiveContains(haystack: string, needle: string): boolean; + /** + * Case insensitive compare function + * + * @param {String} string1 string to compare + * @param {String} string2 string to compare + * + * @return {Number} -1 if first string < second string + * 1 if first string > second string + * 0 if first string = second string + */ + caseInsensitiveCompare(string1: string, string2: string): 1 | 0 | -1; + /** + * Case insensitive equals + * + * @param {String} first string to compare + * @param {String} second string to compare + * @return {Boolean} true when first == second except for case + */ + caseInsensitiveEquals(first: string, second: string): boolean; + /** + * Compare function + * + * @param {String} string1 string to compare + * @param {String} string2 string to compare + * + * @return {Number} -1 if first string < second string + * 1 if first string > second string + * 0 if first string = second string + */ + compare(string1: string, string2: string): 1 | 0 | -1; + /** + * Check if a file extension is supported by SmartReports + * @param {String} filename + * @return {Boolean} + */ + isFileExtensionSmartReportsValid(filename: string): boolean; + /** + * Mask Permanent Account Number (PAN) the same way Auth does + * @param {Number|String} number account number + * @return {String} masked account number + */ + maskPAN(number: number | string): string; + /** + * Checks if something is a string + * Stolen from underscore + * @param {Mixed} obj + * @return {Boolean} + */ + isString(obj: unknown): boolean; + /** + * Checks if something is a number + * Stolen from underscore + * @param {Mixed} obj + * @return {Boolean} + */ + isNumber(obj: unknown): boolean; + /** + * Checks if something is a certain type + * Stolen from underscore + * @param {Mixed} obj + * @param {String} type one of ['Arguments', 'Function', 'String', 'Number', 'Date', + * 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'] + * @return {Boolean} + */ + isTypeOf( + obj: unknown, + type: + | "Arguments" + | "Function" + | "String" + | "Number" + | "Date" + | "RegExp" + | "Error" + | "Symbol" + | "Map" + | "WeakMap" + | "Set" + | "WeakSet" + ): boolean; + /** + * Checks to see if something is undefined + * Stolen from underscore + * @param {Mixed} obj + * @return {Boolean} + */ + isUndefined(obj: unknown): boolean; + /** + * Replace first N characters of the string with maskChar + * eg: maskFirstNCharacters( '1234567890', 6, 'X' ) yields XXXXXX7890 + * @param {String} str string to mask + * @param {Number} n number of characters we want to mask from the string + * @param {String} mask string we want replace the first N chars with + * @return {String} masked string + */ + maskFirstNCharacters(str: string, n: number, mask: string): string; + /** + * Trim a string + * + * @param {String} str + * @returns {string} + */ + trim(str: string): string; + /** + * Convert a percentage string like '25%' to 25/ + * @param {String} percentageString The percentage as a string + * @returns {Number} + */ + percentageStringToNumber(percentageString: string): number; + /** + * Remoce all the spaces from a string + * @param {string} input + * @returns {string} + */ + removeSpaces(input: string): string; + /** + * Returns the proper phrase depending on the count that is passed. + * Example: + * console.log(Str.pluralize('puppy', 'puppies', 1)); // puppy + * console.log(Str.pluralize('puppy', 'puppies', 3)); // puppies + * + * @param {String} singular form of the phrase + * @param {String} plural form of the phrase + * @param {Number} n the count which determines the plurality + * + * @return {String} + */ + pluralize(singular: string, plural: string, n: number): string; + /** + * Returns whether or not a string is an encrypted number or not. + * + * @param {String} number that we want to see if its encrypted or not + * + * @return {Boolean} Whether or not this string is an encrpypted number + */ + isEncryptedCardNumber(number: string): boolean; + /** + * Converts a value to boolean, case-insensitive. + * @param {mixed} value + * @return {Boolean} + */ + toBool(value: unknown): boolean; + /** + * Checks if a string could be the masked version of another one. + * + * @param {String} first string to compare + * @param {String} second string to compare + * @param {String} [mask] defaults to X + * @return {Boolean} true when first could be the masked version of second + */ + maskedEquals(first: string, second: string, mask: string): boolean; + /** + * Bold any word matching the regexp in the text. + * @param {string} text, htmlEncoded + * @param {RegExp} regexp + * @return {string} + */ + boldify(text: string, regexp: RegExp): string; + /** + * Check for whether a phone number is valid. + * @param {String} phone + * + * @return {bool} + */ + isValidPhone(phone: string): boolean; + /** + * We validate mentions by checking if it's first character is an allowed character. + * + * @param {String} mention + * @returns {bool} + */ + isValidMention(mention: string): boolean; + /** + * Returns text without our SMS domain + * + * @param {String} text + * @return {String} + */ + removeSMSDomain(text: string): string; + /** + * Returns true if the text is a valid phone number with our SMS domain removed + * + * @param {String} text + * @return {bool} + */ + isSMSLogin(text: string): boolean; + /** + * This method will return all matches of a single regex like preg_match_all() in PHP. This is not a common part of + * JS yet, so this is a good way of doing it according to + * https://github.com/airbnb/javascript/issues/1439#issuecomment-306297399 and doesn't get us in trouble with + * linting rules. + * + * @param {String} str + * @param {RegExp} regex + * + * @returns {Array} + */ + matchAll(str: string, regex: RegExp): unknown[]; + /** + * A simple GUID generator taken from https://stackoverflow.com/a/32760401/9114791 + * + * @param {String} [prefix] an optional prefix to put in front of the guid + * @returns {String} + */ + guid(prefix?: string): string; + /** + * Takes in a URL and returns it with a leading '/' + * + * @param {mixed} url The URL to be formatted + * @returns {String} The formatted URL + */ + normalizeUrl(url: string): string; + /** + * Formats a URL by converting the domain name to lowercase and adding the missing 'https://' protocol. + * + * @param {url} url The URL to be formatted + * @returns {String} The formatted URL + */ + sanitizeURL(url: string): string; + /** + * Checks if parameter is a string or function + * if it is a function then we will call it with + * any additional arguments. + * + * @param {String|Function} parameter + * @returns {String} + */ + result( + parameter: string | ((...args: A[]) => R), + ...args: A[] + ): string | R; + /** + * Get file extension for a given url with or + * without query parameters + * + * @param {String} url + * @returns {String} + */ + getExtension(url: string): string | undefined; + /** + * Takes in a URL and checks if the file extension is PDF + * + * @param {String} url The URL to be checked + * @returns {Boolean} Whether file path is PDF or not + */ + isPDF(url: string): boolean; + /** + * Takes in a URL and checks if the file extension is an image + * that can be rendered by React Native. Do NOT add extensions + * to this list unless they appear in this list and are + * supported by all platforms. + * + * https://reactnative.dev/docs/image#source + * + * @param {String} url + * @returns {Boolean} + */ + isImage(url: string): boolean; + /** + * Checks whether the given string is a +@ domain email account, such as + * +@domain.com + * + * @param {String} email + * @return {Boolean} True if is a domain account email, otherwise false. + */ + isDomainEmail(email: string): boolean; + /** + * Polyfill for String.prototype.replaceAll + * + * @param {String} text + * @param {String|RegExp} searchValue + * @param {String|Function} replaceValue + * @returns {String} + */ + replaceAll( + text: string, + searchValue: string | RegExp, + replaceValue: string | ((...args: unknown[]) => unknown) + ): string; +}; +export default Str; diff --git a/lib/str.js b/lib/str.js index 780e8448..a5679803 100644 --- a/lib/str.js +++ b/lib/str.js @@ -472,7 +472,7 @@ const Str = { * * @param {String} email The email address. * - * @returns {String} The company name in the email address or null. + * @returns {String|null} The company name in the email address or null. */ extractCompanyNameFromEmailDomain(email) { const domain = this.extractEmailDomain(email); diff --git a/lib/tlds.d.ts b/lib/tlds.d.ts new file mode 100644 index 00000000..cd343fd4 --- /dev/null +++ b/lib/tlds.d.ts @@ -0,0 +1,2 @@ +declare const TLD_REGEX: "XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX"; +export default TLD_REGEX; From e9c261ca10d35ab681ef512676a582d987f184f3 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Wed, 21 Jun 2023 15:18:56 +0200 Subject: [PATCH 02/15] Fix typo --- lib/CONST.d.ts | 2 +- lib/CONST.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/CONST.d.ts b/lib/CONST.d.ts index 20489174..01506ae3 100644 --- a/lib/CONST.d.ts +++ b/lib/CONST.d.ts @@ -318,7 +318,7 @@ export declare const CONST: { readonly ACH_LIMIT: 2000000; readonly ACH_DEFAULT_DAYS: 4; /** - * This is the string that a user can enter in a formula to refer to the repot title field + * This is the string that a user can enter in a formula to refer to the report title field * * @type {String} */ diff --git a/lib/CONST.jsx b/lib/CONST.jsx index 432998ce..0faf47c1 100644 --- a/lib/CONST.jsx +++ b/lib/CONST.jsx @@ -349,7 +349,7 @@ export const CONST = { ACH_DEFAULT_DAYS: 4, /** - * This is the string that a user can enter in a formula to refer to the repot title field + * This is the string that a user can enter in a formula to refer to the report title field * * @type {String} */ From 80c1379ae59254a334e25d297501127b61660beb Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Wed, 21 Jun 2023 15:19:03 +0200 Subject: [PATCH 03/15] Add endline --- .eslintignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintignore b/.eslintignore index 191ae4cc..cd4efd8e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1 @@ -*.d.ts \ No newline at end of file +*.d.ts From 5bcdd25d141c19d82536c75bd86bd51e245bc0bd Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 09:40:16 +0200 Subject: [PATCH 04/15] Create Name union type in ExpensiMark --- lib/ExpensiMark.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ExpensiMark.d.ts b/lib/ExpensiMark.d.ts index 88b7dbce..f415a7c9 100644 --- a/lib/ExpensiMark.d.ts +++ b/lib/ExpensiMark.d.ts @@ -1,6 +1,7 @@ declare type Replacement = string | ((...args: string[]) => string); +declare type Name = "codeFence" | "inlineCodeBlock" | "email" | "link" | "hereMentions" | "userMentions" | "autoEmail" | "autolink" | "quote" | "italic" | "bold" | "strikethrough" | "heading1" | "newline" | "replacepre" | "replacebr" | "listItem" | "exclude" | "anchor" | "breakline" | "blockquoteWrapHeadingOpen" | "blockquoteWrapHeadingClose" | "blockElementOpen" | "blockElementClose" | "stripTag"; declare type Rule = { - name: string; + name: Name; process?: (textToProcess: string, replacement: Replacement) => string; regex?: RegExp; replacement: Replacement; From 91cb7e35b88f1a1c3488c4931dbd2a3341d1af34 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 09:55:36 +0200 Subject: [PATCH 05/15] Remove typings from JSDoc --- lib/ExpensiMark.d.ts | 65 +++----- lib/Logger.d.ts | 38 ++--- lib/str.d.ts | 388 ++++++++++++++++++++----------------------- 3 files changed, 217 insertions(+), 274 deletions(-) diff --git a/lib/ExpensiMark.d.ts b/lib/ExpensiMark.d.ts index f415a7c9..6c09a5ad 100644 --- a/lib/ExpensiMark.d.ts +++ b/lib/ExpensiMark.d.ts @@ -16,13 +16,11 @@ export default class ExpensiMark { /** * Replaces markdown with html elements * - * @param {String} text - Text to parse as markdown - * @param {Object} [options] - Options to customize the markdown parser - * @param {String[]} [options.filterRules=[]] - An array of name of rules as defined in this class. + * @param text - Text to parse as markdown + * @param options - Options to customize the markdown parser + * @param options.filterRules=[] - An array of name of rules as defined in this class. * If not provided, all available rules will be applied. - * @param {Boolean} [options.shouldEscapeText=true] - Whether or not the text should be escaped - * - * @returns {String} + * @param options.shouldEscapeText=true - Whether or not the text should be escaped */ replace(text: string, { filterRules, shouldEscapeText }?: { filterRules?: string[]; @@ -31,21 +29,17 @@ export default class ExpensiMark { /** * Checks matched URLs for validity and replace valid links with html elements * - * @param {RegExp} regex - * @param {String} textToCheck - * @param {Function} replacement - * - * @returns {String} + * @param regex + * @param textToCheck + * @param replacement */ modifyTextForUrlLinks(regex: RegExp, textToCheck: string, replacement: Replacement): string; /** * Checks matched Emails for validity and replace valid links with html elements * - * @param {RegExp} regex - * @param {String} textToCheck - * @param {Function} replacement - * - * @returns {String} + * @param regex + * @param textToCheck + * @param replacement */ modifyTextForEmailLinks(regex: RegExp, textToCheck: string, replacement: Replacement): string; /** @@ -55,64 +49,49 @@ export default class ExpensiMark { * 3. The text does not have quote mark '>' . * 4. It's not the last element in the string. * - * @param {String} htmlString - * @returns {String} + * @param htmlString */ replaceBlockElementWithNewLine(htmlString: string): string; /** * Replaces HTML with markdown * - * @param {String} htmlString - * - * @returns {String} + * @param htmlString */ htmlToMarkdown(htmlString: string): string; /** * Convert HTML to text * - * @param {String} htmlString - * @returns {String} + * @param htmlString */ htmlToText(htmlString: string): string; /** * Modify text for Quotes replacing chevrons with html elements * - * @param {RegExp} regex - * @param {String} textToCheck - * @param {Function} replacement - * - * @returns {String} + * @param regex + * @param textToCheck + * @param replacement */ modifyTextForQuote(regex: RegExp, textToCheck: string, replacement: Replacement): string; /** * Format the content of blockquote if the text matches the regex or else just return the original text * - * @param {RegExp} regex - * @param {String} textToCheck - * @param {Function} replacement - * - * @returns {String} + * @param regex + * @param textToCheck + * @param replacement */ formatTextForQuote(regex: RegExp, textToCheck: string, replacement: Replacement): string; /** * Check if the input text includes only the open or the close tag of an element. * - * @param {String} textToCheck - Text to check - * - * @returns {Boolean} + * @param textToCheck - Text to check */ containsNonPairTag(textToCheck: string): boolean; - /** - * @param {String} comment - * @returns {Array} - */ extractLinksInMarkdownComment(comment: string): string[]; /** * Compares two markdown comments and returns a list of the links removed in a new comment. * - * @param {String} oldComment - * @param {String} newComment - * @returns {Array} + * @param oldComment + * @param newComment */ getRemovedMarkdownLinks(oldComment: string, newComment: string): string[]; } diff --git a/lib/Logger.d.ts b/lib/Logger.d.ts index 2e9c3bf2..040e085b 100644 --- a/lib/Logger.d.ts +++ b/lib/Logger.d.ts @@ -6,59 +6,55 @@ export default class Logger { serverLoggingCallback: ServerLoggingCallback; clientLoggingCallback: ClientLoggingCallBack; isDebug: boolean; - constructor({ serverLoggingCallback, isDebug, clientLoggingCallback }: { - serverLoggingCallback: ServerLoggingCallback; - isDebug: boolean; - clientLoggingCallback: ClientLoggingCallBack; - }); + constructor({serverLoggingCallback, isDebug, clientLoggingCallback}: {serverLoggingCallback: ServerLoggingCallback; isDebug: boolean; clientLoggingCallback: ClientLoggingCallBack}); /** * Ask the server to write the log message */ logToServer(): void; /** * Add a message to the list - * @param {String} message - * @param {Object|String} parameters The parameters associated with the message - * @param {Boolean} forceFlushToServer Should we force flushing all logs to server? - * @param {Boolean} onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true + * @param message + * @param parameters The parameters associated with the message + * @param forceFlushToServer Should we force flushing all logs to server? + * @param onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true */ add(message: string, parameters: Parameters, forceFlushToServer: boolean, onlyFlushWithOthers?: boolean): void; /** * Caches an informational message locally, to be sent to the server if * needed later. * - * @param {String} message The message to log. - * @param {Boolean} sendNow if true, the message will be sent right away. - * @param {Object|String} parameters The parameters to send along with the message - * @param {Boolean} onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true + * @param message The message to log. + * @param sendNow if true, the message will be sent right away. + * @param parameters The parameters to send along with the message + * @param onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true */ info(message: string, sendNow?: boolean, parameters?: Parameters, onlyFlushWithOthers?: boolean): void; /** * Logs an alert. * - * @param {String} message The message to alert. - * @param {Object|String} parameters The parameters to send along with the message - * @param {Boolean} includeStackTrace Must be disabled for testing + * @param message The message to alert. + * @param parameters The parameters to send along with the message + * @param includeStackTrace Must be disabled for testing */ alert(message: string, parameters?: Parameters, includeStackTrace?: boolean): void; /** * Logs a warn. * - * @param {String} message The message to warn. - * @param {Object|String} parameters The parameters to send along with the message + * @param message The message to warn. + * @param parameters The parameters to send along with the message */ warn(message: string, parameters?: Parameters): void; /** * Logs a hmmm. * - * @param {String} message The message to hmmm. - * @param {Object|String} parameters The parameters to send along with the message + * @param message The message to hmmm. + * @param parameters The parameters to send along with the message */ hmmm(message: string, parameters?: Parameters): void; /** * Logs a message in the browser console. * - * @param {String} message The message to log. + * @param message The message to log. */ client(message: string): void; } diff --git a/lib/str.d.ts b/lib/str.d.ts index 647364c1..41caf4ec 100644 --- a/lib/str.d.ts +++ b/lib/str.d.ts @@ -2,105 +2,103 @@ declare const Str: { /** * Return true if the string is ending with the provided suffix * - * @param {String} str String ot search in - * @param {String} suffix What to look for - * @return {Boolean} + * @param str String ot search in + * @param suffix What to look for + * */ endsWith(str: string, suffix: string): boolean; /** * Converts a USD string into th number of cents it represents. * - * @param {String} amountStr A string representing a USD value. - * @param {Boolean} allowFraction Flag indicating if fractions of cents should be + * @param amountStr A string representing a USD value. + * @param allowFraction Flag indicating if fractions of cents should be * allowed in the output. * - * @return {Number} The cent value of the @p amountStr. + * @returns The cent value of the @p amountStr. */ fromUSDToNumber(amountStr: string, allowFraction: boolean): number; /** * Truncates the middle section of a string based on the max allowed length * - * @param {string} fullStr - * @param {int} maxLength - * @returns {string} + * @param fullStr + * @param maxLength */ truncateInMiddle(fullStr: string, maxLength: number): string; /** * Convert new line to
* - * @param {String} str - * @returns {string} + * @param str */ nl2br(str: string): string; /** * Decodes the given HTML encoded string. * - * @param {String} s The string to decode. - * @return {String} The decoded string. + * @param s The string to decode. + * @returns The decoded string. */ htmlDecode(s: string): string; /** * HTML encodes the given string. * - * @param {String} s The string to encode. - * @return {String} @p s HTML encoded. + * @param s The string to encode. + * @returns @p s HTML encoded. */ htmlEncode(s: string): string; /** * Escape text while preventing any sort of double escape, so 'X & Y' -> 'X & Y' and 'X & Y' -> 'X & Y' * - * @param {String} s the string to escape - * @return {String} the escaped string + * @param s the string to escape + * @returns the escaped string */ safeEscape(s: string): string; /** * HTML encoding insensitive equals. * - * @param {String} first string to compare - * @param {String} second string to compare - * @return {Boolean} true when first === second, ignoring HTML encoding + * @param first string to compare + * @param second string to compare + * @returns true when first === second, ignoring HTML encoding */ htmlEncodingInsensitiveEquals(first: string, second: string): boolean; /** * Creates an ID that can be used as an HTML attribute from @p str. * - * @param {String} str A string to create an ID from. - * @return {String} The ID string made from @p str. + * @param str A string to create an ID from. + * @returns The ID string made from @p str. */ makeID(str: string): string; /** * Extracts an ID made with Str.makeID from a larger string. * - * @param {String} str A string containing an id made with Str.makeID - * @return {String|null} The ID string. + * @param str A string containing an id made with Str.makeID + * @returns The ID string. */ extractID(str: string): string | null; /** * Modifies the string so the first letter of each word is capitalized and the * rest lowercased. * - * @param {String} val The string to modify - * @return {String} + * @param val The string to modify + * */ recapitalize(val: string): string; /** * Replace all the non alphanumerical character by _ * - * @param {String} input - * @returns {String} + * @param input + * */ sanitizeToAlphaNumeric(input: string): string; /** * Strip out all the non numerical characters * - * @param {String} input - * @returns {String} + * @param input + * */ stripNonNumeric(input: string): string; /** * Strips all non ascii characters from a string - * @param {String} input - * @returns {String} The ascii version of the string. + * @param input + * @returns The ascii version of the string. */ stripNonASCIICharacters(input: string): string; /** @@ -109,51 +107,51 @@ declare const Str: { * The ellipses will only be appended if @p text is longer than the @p length * given. * - * @param {String} val The string to reduce in size. - * @param {Number} length The maximal length desired. - * @return {String} The shortened @p text. + * @param val The string to reduce in size. + * @param length The maximal length desired. + * @returns The shortened @p text. */ shortenText(val: string, length: number): string; /** * Returns the byte size of a character - * @param {String} inputChar You can input more than one character, but it will only return the size of the first + * @param inputChar You can input more than one character, but it will only return the size of the first * one. - * @returns {Number} Byte size of the character + * @returns Byte size of the character */ getRawByteSize(inputChar: string): number; /** * Gets the length of a string in bytes, including non-ASCII characters - * @param {String} input - * @returns {Number} The number of bytes used by string + * @param input + * @returns The number of bytes used by string */ getByteLength(input: string): number; /** * Shortens the input by max byte size instead of by character length - * @param {String} input - * @param {Number} maxSize The max size in bytes, e.g. 256 - * @returns {String} Returns a shorted input if the input size exceeds the max + * @param input + * @param maxSize The max size in bytes, e.g. 256 + * @returns Returns a shorted input if the input size exceeds the max */ shortenByByte(input: string, maxSize: number): string; /** * Returns true if the haystack begins with the needle * - * @param {String} haystack The full string to be searched - * @param {String} needle The case-sensitive string to search for - * @return {Boolean} Retruns true if the haystack starts with the needle. + * @param haystack The full string to be searched + * @param needle The case-sensitive string to search for + * @returns Retruns true if the haystack starts with the needle. */ startsWith(haystack: string, needle: string): boolean; /** * Gets the textual value of the given string. * - * @param {String} str The string to fetch the text value from. - * @return {String} The text from within the HTML string. + * @param str The string to fetch the text value from. + * @returns The text from within the HTML string. */ stripHTML(str: string): string; /** * Modifies the string so the first letter of the string is capitalized * - * @param {String} str The string to modify. - * @return {String} The recapitalized string. + * @param str The string to modify. + * @returns The recapitalized string. */ UCFirst(str: string): string; /** @@ -161,9 +159,9 @@ declare const Str: { * of str to the first occurrence of substr. * Example: Str.cutAfter( 'hello$%world', '$%' ) // returns 'hello' * - * @param {String} str The string to modify. - * @param {String} substr The substring to search for. - * @return {String} The cut/trimmed string. + * @param str The string to modify. + * @param substr The substring to search for. + * @returns The cut/trimmed string. */ cutAfter(str: string, substr: string): string; /** @@ -171,202 +169,194 @@ declare const Str: { * occurrence of substr to the end of the string. * Example: Str.cutBefore( 'hello$%world', '$%' ) // returns 'world' * - * @param {String} str The string to modify. - * @param {String} substr The substring to search for. - * @return {String} The cut/trimmed string. + * @param str The string to modify. + * @param substr The substring to search for. + * @returns The cut/trimmed string. */ cutBefore(str: string, substr: string): string; /** * Checks that the string is a domain name (e.g. example.com) * - * @param {String} string The string to check for domainnameness. + * @param string The string to check for domainnameness. * - * @returns {Boolean} True iff the string is a domain name + * @returns True iff the string is a domain name */ isValidDomainName(string: string): boolean; /** * Checks that the string is a valid url * - * @param {String} string + * @param string * - * @returns {Boolean} True if the string is a valid hyperlink + * @returns True if the string is a valid hyperlink */ isValidURL(string: string): boolean; /** * Checks that the string is an email address. * NOTE: TLDs are not just 2-4 characters. Keep this in sync with _inputrules.php * - * @param {String} string The string to check for email validity. + * @param string The string to check for email validity. * - * @returns {Boolean} True iff the string is an email + * @returns True iff the string is an email */ isValidEmail(string: string): boolean; /** * Checks if the string is an valid email address formed during comment markdown formation. * - * @param {String} string The string to check for email validity. + * @param string The string to check for email validity. * - * @returns {Boolean} True if the string is an valid email created by comment markdown. + * @returns True if the string is an valid email created by comment markdown. */ isValidEmailMarkdown(string: string): boolean; /** * Remove trailing comma from a string. * - * @param {String} string The string with any trailing comma to be removed. + * @param string The string with any trailing comma to be removed. * - * @returns {String} string with the trailing comma removed + * @returns string with the trailing comma removed */ removeTrailingComma(string: string): string; /** * Checks that the string is a list of coma separated email addresss. * - * @param {String} str The string to check for emails validity. + * @param str The string to check for emails validity. * - * @returns {Boolean} True if all emails are valid or if input is empty + * @returns True if all emails are valid or if input is empty */ areValidEmails(str: string): boolean; /** * Extract the email addresses from a string * - * @param {String} string - * @returns {String[]|null} + * @param string + * */ extractEmail(string: string): RegExpMatchArray | null; /** * Extracts the domain name from the given email address * (e.g. "domain.com" for "joe@domain.com"). * - * @param {String} email The email address. + * @param email The email address. * - * @returns {String} The domain name in the email address. + * @returns The domain name in the email address. */ extractEmailDomain(email: string): string; /** * Tries to extract the company name from the given email address * (e.g. "yelp" for "joe@yelp.co.uk"). * - * @param {String} email The email address. + * @param email The email address. * - * @returns {String|null} The company name in the email address or null. + * @returns The company name in the email address or null. */ extractCompanyNameFromEmailDomain(email: string): string | null; /** * Extracts the local part from the given email address * (e.g. "joe" for "joe@domain.com"). * - * @param {String} email The email address. + * @param email The email address. * - * @returns {String} The local part in the email address. + * @returns The local part in the email address. */ extractEmailLocalPart(email: string): string; /** * Sanitize phone number to return only numbers. Return null if non valid phone number. * - * @param {String} str - * @returns {String|null} + * @param str + * */ sanitizePhoneNumber(str: string): string | null; /** * Sanitize email. Return null if non valid email. * - * @param {String} str - * @returns {String|null} + * @param str + * */ sanitizeEmail(str: string): string | null; /** * Escapes all special RegExp characters from a string * - * @param {String} string The subject + * @param string The subject * - * @returns {String} The escaped string + * @returns The escaped string */ escapeForRegExp(string: string): string; /** * Escapes all special RegExp characters from a string except for the period * - * @param {String} string The subject - * @returns {String} The escaped string + * @param string The subject + * @returns The escaped string */ escapeForExpenseRule(string: string): string; /** * Adds a backslash in front of each of colon * if they don't already have a backslash in front of them * - * @param {String} string The subject - * @returns {String} The escaped string + * @param string The subject + * @returns The escaped string */ addBackslashBeforeColonsForTagNamesComingFromQBD(string: string): string; /** * Removes backslashes from string * eg: myString\[\]\* -> myString[]* * - * @param {String} string - * @returns {String} + * @param string + * */ stripBackslashes(string: string): string; /** * Checks if a string's length is in the specified range * - * @param {String} string The subject - * @param {Number} minimumLength - * @param {Number} [maximumLength] + * @param string The subject + * @param minimumLength + * @param [maximumLength] * - * @returns {Boolean} true if the length is in the range, false otherwise + * @returns true if the length is in the range, false otherwise */ - isOfLength( - string: string, - minimumLength: number, - maximumLength: number - ): boolean; + isOfLength(string: string, minimumLength: number, maximumLength: number): boolean; /** * Count the number of occurences of needle in haystack. * This is faster than counting the results of haystack.match( /needle/g ) * via http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string * - * @param {String} haystack The string to look inside of - * @param {String} needle What we're looking for - * @param {Boolean} allowOverlapping Defaults to false + * @param haystack The string to look inside of + * @param needle What we're looking for + * @param allowOverlapping Defaults to false * - * @returns {Integer} The number of times needle is in haystack. + * @returns The number of times needle is in haystack. */ - occurences( - haystack: string, - needle: string, - allowOverlapping: boolean - ): number; + occurences(haystack: string, needle: string, allowOverlapping: boolean): number; /** * Uppercases the first letter of each word * via https://github.com/kvz/phpjs/blob/master/functions/strings/ucwords.js * * @param {String} str to uppercase words - * @returns {String} Uppercase worded string + * @returns Uppercase worded string */ ucwords(str: string): string; /** * Returns true if the haystack contains the needle * - * @param {String} haystack The full string to be searched - * @param {String} needle The case-sensitive string to search for + * @param haystack The full string to be searched + * @param needle The case-sensitive string to search for * - * @return {Boolean} Returns true if the haystack contains the needle + * @returns Returns true if the haystack contains the needle */ contains(haystack: string, needle: string): boolean; /** * Returns true if the haystack contains the needle, ignoring case * - * @param {String} haystack The full string to be searched - * @param {String} needle The case-insensitive string to search for + * @param haystack The full string to be searched + * @param needle The case-insensitive string to search for * - * @return {Boolean} Returns true if the haystack contains the needle, ignoring case + * @returns Returns true if the haystack contains the needle, ignoring case */ caseInsensitiveContains(haystack: string, needle: string): boolean; /** * Case insensitive compare function * - * @param {String} string1 string to compare - * @param {String} string2 string to compare + * @param string1 string to compare + * @param string2 string to compare * - * @return {Number} -1 if first string < second string + * @returns -1 if first string < second string * 1 if first string > second string * 0 if first string = second string */ @@ -374,18 +364,18 @@ declare const Str: { /** * Case insensitive equals * - * @param {String} first string to compare - * @param {String} second string to compare - * @return {Boolean} true when first == second except for case + * @param first string to compare + * @param second string to compare + * @returns true when first == second except for case */ caseInsensitiveEquals(first: string, second: string): boolean; /** * Compare function * - * @param {String} string1 string to compare - * @param {String} string2 string to compare + * @param string1 string to compare + * @param string2 string to compare * - * @return {Number} -1 if first string < second string + * @returns -1 if first string < second string * 1 if first string > second string * 0 if first string = second string */ @@ -393,27 +383,27 @@ declare const Str: { /** * Check if a file extension is supported by SmartReports * @param {String} filename - * @return {Boolean} + * */ isFileExtensionSmartReportsValid(filename: string): boolean; /** * Mask Permanent Account Number (PAN) the same way Auth does - * @param {Number|String} number account number - * @return {String} masked account number + * @param number account number + * @returns masked account number */ maskPAN(number: number | string): string; /** * Checks if something is a string * Stolen from underscore * @param {Mixed} obj - * @return {Boolean} + * */ isString(obj: unknown): boolean; /** * Checks if something is a number * Stolen from underscore * @param {Mixed} obj - * @return {Boolean} + * */ isNumber(obj: unknown): boolean; /** @@ -422,57 +412,42 @@ declare const Str: { * @param {Mixed} obj * @param {String} type one of ['Arguments', 'Function', 'String', 'Number', 'Date', * 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'] - * @return {Boolean} - */ - isTypeOf( - obj: unknown, - type: - | "Arguments" - | "Function" - | "String" - | "Number" - | "Date" - | "RegExp" - | "Error" - | "Symbol" - | "Map" - | "WeakMap" - | "Set" - | "WeakSet" - ): boolean; + * + */ + isTypeOf(obj: unknown, type: 'Arguments' | 'Function' | 'String' | 'Number' | 'Date' | 'RegExp' | 'Error' | 'Symbol' | 'Map' | 'WeakMap' | 'Set' | 'WeakSet'): boolean; /** * Checks to see if something is undefined * Stolen from underscore * @param {Mixed} obj - * @return {Boolean} + * */ isUndefined(obj: unknown): boolean; /** * Replace first N characters of the string with maskChar * eg: maskFirstNCharacters( '1234567890', 6, 'X' ) yields XXXXXX7890 - * @param {String} str string to mask - * @param {Number} n number of characters we want to mask from the string - * @param {String} mask string we want replace the first N chars with - * @return {String} masked string + * @param str string to mask + * @param n number of characters we want to mask from the string + * @param mask string we want replace the first N chars with + * @returns masked string */ maskFirstNCharacters(str: string, n: number, mask: string): string; /** * Trim a string * - * @param {String} str - * @returns {string} + * @param str + * */ trim(str: string): string; /** * Convert a percentage string like '25%' to 25/ - * @param {String} percentageString The percentage as a string - * @returns {Number} + * @param percentageString The percentage as a string + * */ percentageStringToNumber(percentageString: string): number; /** * Remoce all the spaces from a string - * @param {string} input - * @returns {string} + * @param input + * */ removeSpaces(input: string): string; /** @@ -481,69 +456,69 @@ declare const Str: { * console.log(Str.pluralize('puppy', 'puppies', 1)); // puppy * console.log(Str.pluralize('puppy', 'puppies', 3)); // puppies * - * @param {String} singular form of the phrase - * @param {String} plural form of the phrase - * @param {Number} n the count which determines the plurality + * @param singular form of the phrase + * @param plural form of the phrase + * @param n the count which determines the plurality + * * - * @return {String} */ pluralize(singular: string, plural: string, n: number): string; /** * Returns whether or not a string is an encrypted number or not. * - * @param {String} number that we want to see if its encrypted or not + * @param number that we want to see if its encrypted or not * - * @return {Boolean} Whether or not this string is an encrpypted number + * @returns Whether or not this string is an encrpypted number */ isEncryptedCardNumber(number: string): boolean; /** * Converts a value to boolean, case-insensitive. - * @param {mixed} value - * @return {Boolean} + * @param value + * */ toBool(value: unknown): boolean; /** * Checks if a string could be the masked version of another one. * - * @param {String} first string to compare - * @param {String} second string to compare - * @param {String} [mask] defaults to X - * @return {Boolean} true when first could be the masked version of second + * @param first string to compare + * @param second string to compare + * @param [mask] defaults to X + * @returns true when first could be the masked version of second */ maskedEquals(first: string, second: string, mask: string): boolean; /** * Bold any word matching the regexp in the text. - * @param {string} text, htmlEncoded - * @param {RegExp} regexp - * @return {string} + * @param text, htmlEncoded + * @param regexp + * */ boldify(text: string, regexp: RegExp): string; /** * Check for whether a phone number is valid. - * @param {String} phone + * @param phone + * * - * @return {bool} */ isValidPhone(phone: string): boolean; /** * We validate mentions by checking if it's first character is an allowed character. * - * @param {String} mention - * @returns {bool} + * @param mention + * */ isValidMention(mention: string): boolean; /** * Returns text without our SMS domain * - * @param {String} text - * @return {String} + * @param text + * */ removeSMSDomain(text: string): string; /** * Returns true if the text is a valid phone number with our SMS domain removed * - * @param {String} text - * @return {bool} + * @param text + * */ isSMSLogin(text: string): boolean; /** @@ -552,31 +527,31 @@ declare const Str: { * https://github.com/airbnb/javascript/issues/1439#issuecomment-306297399 and doesn't get us in trouble with * linting rules. * - * @param {String} str - * @param {RegExp} regex + * @param str + * @param regex + * * - * @returns {Array} */ matchAll(str: string, regex: RegExp): unknown[]; /** * A simple GUID generator taken from https://stackoverflow.com/a/32760401/9114791 * - * @param {String} [prefix] an optional prefix to put in front of the guid - * @returns {String} + * @param [prefix] an optional prefix to put in front of the guid + * */ guid(prefix?: string): string; /** * Takes in a URL and returns it with a leading '/' * - * @param {mixed} url The URL to be formatted - * @returns {String} The formatted URL + * @param url The URL to be formatted + * @returns The formatted URL */ normalizeUrl(url: string): string; /** * Formats a URL by converting the domain name to lowercase and adding the missing 'https://' protocol. * - * @param {url} url The URL to be formatted - * @returns {String} The formatted URL + * @param url The URL to be formatted + * @returns The formatted URL */ sanitizeURL(url: string): string; /** @@ -584,26 +559,23 @@ declare const Str: { * if it is a function then we will call it with * any additional arguments. * - * @param {String|Function} parameter - * @returns {String} + * @param parameter + * */ - result( - parameter: string | ((...args: A[]) => R), - ...args: A[] - ): string | R; + result(parameter: string | ((...args: A[]) => R), ...args: A[]): string | R; /** * Get file extension for a given url with or * without query parameters * - * @param {String} url - * @returns {String} + * @param url + * */ getExtension(url: string): string | undefined; /** * Takes in a URL and checks if the file extension is PDF * - * @param {String} url The URL to be checked - * @returns {Boolean} Whether file path is PDF or not + * @param url The URL to be checked + * @returns Whether file path is PDF or not */ isPDF(url: string): boolean; /** @@ -614,30 +586,26 @@ declare const Str: { * * https://reactnative.dev/docs/image#source * - * @param {String} url - * @returns {Boolean} + * @param url + * */ isImage(url: string): boolean; /** * Checks whether the given string is a +@ domain email account, such as * +@domain.com * - * @param {String} email - * @return {Boolean} True if is a domain account email, otherwise false. + * @param email + * @returns True if is a domain account email, otherwise false. */ isDomainEmail(email: string): boolean; /** * Polyfill for String.prototype.replaceAll * - * @param {String} text - * @param {String|RegExp} searchValue - * @param {String|Function} replaceValue - * @returns {String} + * @param text + * @param searchValue + * @param replaceValue + * */ - replaceAll( - text: string, - searchValue: string | RegExp, - replaceValue: string | ((...args: unknown[]) => unknown) - ): string; + replaceAll(text: string, searchValue: string | RegExp, replaceValue: string | ((...args: unknown[]) => unknown)): string; }; export default Str; From ce3a6afb34201e10b2827e02698d858b64998a7d Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 10:18:25 +0200 Subject: [PATCH 06/15] Type ServerLoggingCallback better --- lib/Logger.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Logger.d.ts b/lib/Logger.d.ts index 040e085b..12dc8845 100644 --- a/lib/Logger.d.ts +++ b/lib/Logger.d.ts @@ -1,5 +1,6 @@ declare type Parameters = string | Record; -declare type ServerLoggingCallback = (logger: Logger, options: Record) => Promise; +declare type ServerLoggingCallbackOptions = {api_setCookie: boolean; logPacket: string}; +declare type ServerLoggingCallback = (logger: Logger, options: ServerLoggingCallbackOptions) => Promise<{requestID: string}> | undefined; declare type ClientLoggingCallBack = (message: string) => void; export default class Logger { logLines: Array>; From 43e2c5afbb4d7d318fb28507f4f1b6d12ff49faa Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 10:21:09 +0200 Subject: [PATCH 07/15] Add LogLine type --- lib/Logger.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Logger.d.ts b/lib/Logger.d.ts index 12dc8845..3e2cef49 100644 --- a/lib/Logger.d.ts +++ b/lib/Logger.d.ts @@ -2,8 +2,9 @@ declare type Parameters = string | Record; declare type ServerLoggingCallbackOptions = {api_setCookie: boolean; logPacket: string}; declare type ServerLoggingCallback = (logger: Logger, options: ServerLoggingCallbackOptions) => Promise<{requestID: string}> | undefined; declare type ClientLoggingCallBack = (message: string) => void; +declare type LogLine = {message: string; parameters: Parameters; onlyFlushWithOthers: boolean; timestamp: Date}; export default class Logger { - logLines: Array>; + logLines: LogLine[]; serverLoggingCallback: ServerLoggingCallback; clientLoggingCallback: ClientLoggingCallBack; isDebug: boolean; From 10fc471c6bb7f22a22ccf4f408612cd8af57aff0 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 10:44:06 +0200 Subject: [PATCH 08/15] Move TLD_REGEX to Url.d.ts --- lib/Url.d.ts | 1 + lib/tlds.d.ts | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 lib/tlds.d.ts diff --git a/lib/Url.d.ts b/lib/Url.d.ts index 6ee0df6d..8d9b5726 100644 --- a/lib/Url.d.ts +++ b/lib/Url.d.ts @@ -1,3 +1,4 @@ +declare const TLD_REGEX: "XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX"; declare const URL_PROTOCOL_REGEX: "((ht|f)tps?:\\/\\/)"; declare const URL_WEBSITE_REGEX: "((ht|f)tps?:\\/\\/)?((?:www\\.)?[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)+(?:XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_))"; declare const URL_PATH_REGEX: "(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*"; diff --git a/lib/tlds.d.ts b/lib/tlds.d.ts deleted file mode 100644 index cd343fd4..00000000 --- a/lib/tlds.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const TLD_REGEX: "XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX"; -export default TLD_REGEX; From d99fc661eecb52fad2a87231089911200b63600b Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 12:11:14 +0200 Subject: [PATCH 09/15] Clean str.d.ts, improve types for result function --- lib/str.d.ts | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/lib/str.d.ts b/lib/str.d.ts index 41caf4ec..01bd7745 100644 --- a/lib/str.d.ts +++ b/lib/str.d.ts @@ -4,7 +4,6 @@ declare const Str: { * * @param str String ot search in * @param suffix What to look for - * */ endsWith(str: string, suffix: string): boolean; /** @@ -78,21 +77,18 @@ declare const Str: { * rest lowercased. * * @param val The string to modify - * */ recapitalize(val: string): string; /** * Replace all the non alphanumerical character by _ * * @param input - * */ sanitizeToAlphaNumeric(input: string): string; /** * Strip out all the non numerical characters * * @param input - * */ stripNonNumeric(input: string): string; /** @@ -227,7 +223,6 @@ declare const Str: { * Extract the email addresses from a string * * @param string - * */ extractEmail(string: string): RegExpMatchArray | null; /** @@ -261,14 +256,12 @@ declare const Str: { * Sanitize phone number to return only numbers. Return null if non valid phone number. * * @param str - * */ sanitizePhoneNumber(str: string): string | null; /** * Sanitize email. Return null if non valid email. * * @param str - * */ sanitizeEmail(str: string): string | null; /** @@ -383,7 +376,6 @@ declare const Str: { /** * Check if a file extension is supported by SmartReports * @param {String} filename - * */ isFileExtensionSmartReportsValid(filename: string): boolean; /** @@ -396,14 +388,12 @@ declare const Str: { * Checks if something is a string * Stolen from underscore * @param {Mixed} obj - * */ isString(obj: unknown): boolean; /** * Checks if something is a number * Stolen from underscore * @param {Mixed} obj - * */ isNumber(obj: unknown): boolean; /** @@ -412,14 +402,12 @@ declare const Str: { * @param {Mixed} obj * @param {String} type one of ['Arguments', 'Function', 'String', 'Number', 'Date', * 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'] - * */ isTypeOf(obj: unknown, type: 'Arguments' | 'Function' | 'String' | 'Number' | 'Date' | 'RegExp' | 'Error' | 'Symbol' | 'Map' | 'WeakMap' | 'Set' | 'WeakSet'): boolean; /** * Checks to see if something is undefined * Stolen from underscore * @param {Mixed} obj - * */ isUndefined(obj: unknown): boolean; /** @@ -435,13 +423,11 @@ declare const Str: { * Trim a string * * @param str - * */ trim(str: string): string; /** * Convert a percentage string like '25%' to 25/ * @param percentageString The percentage as a string - * */ percentageStringToNumber(percentageString: string): number; /** @@ -459,8 +445,6 @@ declare const Str: { * @param singular form of the phrase * @param plural form of the phrase * @param n the count which determines the plurality - * - * */ pluralize(singular: string, plural: string, n: number): string; /** @@ -474,7 +458,6 @@ declare const Str: { /** * Converts a value to boolean, case-insensitive. * @param value - * */ toBool(value: unknown): boolean; /** @@ -490,35 +473,29 @@ declare const Str: { * Bold any word matching the regexp in the text. * @param text, htmlEncoded * @param regexp - * */ boldify(text: string, regexp: RegExp): string; /** * Check for whether a phone number is valid. * @param phone - * - * */ isValidPhone(phone: string): boolean; /** * We validate mentions by checking if it's first character is an allowed character. * * @param mention - * */ isValidMention(mention: string): boolean; /** * Returns text without our SMS domain * * @param text - * */ removeSMSDomain(text: string): string; /** * Returns true if the text is a valid phone number with our SMS domain removed * * @param text - * */ isSMSLogin(text: string): boolean; /** @@ -529,10 +506,8 @@ declare const Str: { * * @param str * @param regex - * - * */ - matchAll(str: string, regex: RegExp): unknown[]; + matchAll(str: string, regex: RegExp): Array; /** * A simple GUID generator taken from https://stackoverflow.com/a/32760401/9114791 * @@ -560,15 +535,16 @@ declare const Str: { * any additional arguments. * * @param parameter - * */ - result(parameter: string | ((...args: A[]) => R), ...args: A[]): string | R; + result: { + (parameter: string): string; + (parameter: (...args: A) => R, ...args: A): R; + }; /** * Get file extension for a given url with or * without query parameters * * @param url - * */ getExtension(url: string): string | undefined; /** @@ -587,7 +563,6 @@ declare const Str: { * https://reactnative.dev/docs/image#source * * @param url - * */ isImage(url: string): boolean; /** @@ -604,7 +579,6 @@ declare const Str: { * @param text * @param searchValue * @param replaceValue - * */ replaceAll(text: string, searchValue: string | RegExp, replaceValue: string | ((...args: unknown[]) => unknown)): string; }; From 424c9e23bd70e5a7c4e334cae317d2f0f40f3dc3 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 12:13:28 +0200 Subject: [PATCH 10/15] Improve replaceAll return type --- lib/str.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/str.d.ts b/lib/str.d.ts index 01bd7745..ea5bef18 100644 --- a/lib/str.d.ts +++ b/lib/str.d.ts @@ -580,6 +580,6 @@ declare const Str: { * @param searchValue * @param replaceValue */ - replaceAll(text: string, searchValue: string | RegExp, replaceValue: string | ((...args: unknown[]) => unknown)): string; + replaceAll(text: string, searchValue: string | RegExp, replaceValue: string | ((...args: unknown[]) => string)): string; }; export default Str; From 774fdebacb8c93a1a4307f4f6ef7a4f99696a07c Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Thu, 22 Jun 2023 12:29:39 +0200 Subject: [PATCH 11/15] Extract string from Replacement - improve ExpensiMark typings --- lib/ExpensiMark.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ExpensiMark.d.ts b/lib/ExpensiMark.d.ts index 6c09a5ad..75de4525 100644 --- a/lib/ExpensiMark.d.ts +++ b/lib/ExpensiMark.d.ts @@ -1,10 +1,10 @@ -declare type Replacement = string | ((...args: string[]) => string); +declare type Replacement = (...args: string[]) => string; declare type Name = "codeFence" | "inlineCodeBlock" | "email" | "link" | "hereMentions" | "userMentions" | "autoEmail" | "autolink" | "quote" | "italic" | "bold" | "strikethrough" | "heading1" | "newline" | "replacepre" | "replacebr" | "listItem" | "exclude" | "anchor" | "breakline" | "blockquoteWrapHeadingOpen" | "blockquoteWrapHeadingClose" | "blockElementOpen" | "blockElementClose" | "stripTag"; declare type Rule = { name: Name; process?: (textToProcess: string, replacement: Replacement) => string; regex?: RegExp; - replacement: Replacement; + replacement: Replacement | string; pre?: (input: string) => string; post?: (input: string) => string; }; From 22c0dd4d674d6759acd07c5cbbe6b8af148afb63 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Fri, 23 Jun 2023 10:47:01 +0200 Subject: [PATCH 12/15] Revert "Move TLD_REGEX to Url.d.ts" This reverts commit 10fc471c6bb7f22a22ccf4f408612cd8af57aff0. --- lib/Url.d.ts | 1 - lib/tlds.d.ts | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 lib/tlds.d.ts diff --git a/lib/Url.d.ts b/lib/Url.d.ts index 8d9b5726..6ee0df6d 100644 --- a/lib/Url.d.ts +++ b/lib/Url.d.ts @@ -1,4 +1,3 @@ -declare const TLD_REGEX: "XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX"; declare const URL_PROTOCOL_REGEX: "((ht|f)tps?:\\/\\/)"; declare const URL_WEBSITE_REGEX: "((ht|f)tps?:\\/\\/)?((?:www\\.)?[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)+(?:XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX)(?:\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|\\b|(?=_))"; declare const URL_PATH_REGEX: "(?:(?:[.,=(+$!*]|&(?:amp|quot|#x27);)?\\/(?:[-\\w$@.+!*:(),=%~]|&(?:amp|quot|#x27);)*(?:[-\\w~@:%)]|&(?:amp|quot|#x27);)|\\/)*"; diff --git a/lib/tlds.d.ts b/lib/tlds.d.ts new file mode 100644 index 00000000..cd343fd4 --- /dev/null +++ b/lib/tlds.d.ts @@ -0,0 +1,2 @@ +declare const TLD_REGEX: "XN--VERMGENSBERATUNG-PWB|XN--VERMGENSBERATER-CTB|XN--CLCHC0EA0B2G2A9GCD|XN--W4R85EL8FHU5DNRA|TRAVELERSINSURANCE|NORTHWESTERNMUTUAL|XN--XKC2DL3A5EE0H|XN--MGBERP4A5D4AR|XN--MGBAI9AZGQP6J|XN--MGBAH1A3HJKRD|XN--BCK1B9A5DRE4C|XN--5SU34J936BGSG|XN--3OQ18VL8PN36A|XN--XKC2AL3HYE2A|XN--MGBCPQ6GPA1A|XN--MGBA7C0BBN0A|XN--FZYS8D69UVGM|XN--NQV7FS00EMA|XN--MGBC0A9AZCG|XN--MGBAAKC7DVF|XN--MGBA3A4F16A|XN--LGBBAT1AD8J|XN--KCRX77D1X4A|XN--I1B6B1A6A2E|SANDVIKCOROMANT|KERRYPROPERTIES|AMERICANEXPRESS|XN--RVC1E0AM3E|XN--MGBX4CD0AB|XN--MGBI4ECEXP|XN--MGBCA7DZDO|XN--MGBBH1A71E|XN--MGBAYH7GPA|XN--MGBAAM7A8H|XN--MGBA3A3EJT|XN--JLQ61U9W7B|XN--JLQ480N2RG|XN--H2BREG3EVE|XN--FIQ228C5HS|XN--B4W605FERD|XN--80AQECDR1A|XN--6QQ986B3XL|XN--54B7FTA0CC|WEATHERCHANNEL|KERRYLOGISTICS|COOKINGCHANNEL|CANCERRESEARCH|BANANAREPUBLIC|AMERICANFAMILY|AFAMILYCOMPANY|XN--YGBI2AMMX|XN--YFRO4I67O|XN--TIQ49XQYJ|XN--H2BRJ9C8C|XN--FZC2C9E2C|XN--FPCRJ9C3D|XN--ECKVDTC9D|XN--CCKWCXETD|WOLTERSKLUWER|TRAVELCHANNEL|SPREADBETTING|LIFEINSURANCE|INTERNATIONAL|XN--QCKA1PMC|XN--OGBPF8FL|XN--NGBE9E0A|XN--NGBC5AZD|XN--MK1BU44C|XN--MGBT3DHD|XN--MGBPL2FH|XN--MGBGU82A|XN--MGBAB2BD|XN--MGB9AWBF|XN--GCKR3F0F|XN--8Y0A063A|XN--80ASEHDB|XN--80ADXHKS|XN--4DBRK0CE|XN--45BR5CYL|XN--3E0B707E|VERSICHERUNG|SCHOLARSHIPS|LPLFINANCIAL|CONSTRUCTION|XN--ZFR164B|XN--XHQ521B|XN--W4RS40L|XN--VUQ861B|XN--T60B56A|XN--SES554G|XN--S9BRJ9C|XN--ROVU88B|XN--RHQV96G|XN--Q9JYB4C|XN--PGBS0DH|XN--OTU796D|XN--NYQY26A|XN--MIX891F|XN--MGBTX2B|XN--MGBBH1A|XN--KPRY57D|XN--KPRW13D|XN--JVR189M|XN--J6W193G|XN--IMR513N|XN--HXT814E|XN--H2BRJ9C|XN--GK3AT1E|XN--GECRJ9C|XN--G2XX48C|XN--FLW351E|XN--FJQ720A|XN--FCT429K|XN--EFVY88H|XN--D1ACJ3B|XN--CZR694B|XN--CCK2B3B|XN--9KRT00A|XN--80AO21A|XN--6FRZ82G|XN--55QW42G|XN--45BRJ9C|XN--42C2D9A|XN--3HCRJ9C|XN--3DS443G|XN--3BST00M|XN--2SCRJ9C|XN--1QQW23A|XN--1CK2E1B|XN--11B4C3D|WILLIAMHILL|REDUMBRELLA|PROGRESSIVE|PRODUCTIONS|PLAYSTATION|PHOTOGRAPHY|OLAYANGROUP|MOTORCYCLES|LAMBORGHINI|KERRYHOTELS|INVESTMENTS|FOODNETWORK|ENTERPRISES|ENGINEERING|CREDITUNION|CONTRACTORS|CALVINKLEIN|BRIDGESTONE|BLOCKBUSTER|BLACKFRIDAY|BARCLAYCARD|ACCOUNTANTS|XN--Y9A3AQ|XN--WGBL6A|XN--WGBH1C|XN--UNUP4Y|XN--Q7CE6A|XN--PSSY2U|XN--O3CW4H|XN--MXTQ1M|XN--KPUT3I|XN--IO0A7I|XN--FIQZ9S|XN--FIQS8S|XN--FIQ64B|XN--CZRU2D|XN--CZRS0T|XN--CG4BKI|XN--C2BR7G|XN--9ET52U|XN--9DBQ2A|XN--90A3AC|XN--80ASWG|XN--5TZM5G|XN--55QX5D|XN--4GBRIM|XN--45Q11C|XN--3PXU8K|XN--30RR7Y|VOLKSWAGEN|VLAANDEREN|UNIVERSITY|TECHNOLOGY|TATAMOTORS|SWIFTCOVER|SCHAEFFLER|RESTAURANT|REPUBLICAN|REALESTATE|PRUDENTIAL|PROTECTION|PROPERTIES|ONYOURSIDE|NEXTDIRECT|NATIONWIDE|MITSUBISHI|MANAGEMENT|INDUSTRIES|IMMOBILIEN|HEALTHCARE|FOUNDATION|EXTRASPACE|EUROVISION|CUISINELLA|CREDITCARD|CONSULTING|CAPITALONE|BOEHRINGER|BNPPARIBAS|BASKETBALL|ASSOCIATES|APARTMENTS|ACCOUNTANT|YODOBASHI|XN--VHQUV|XN--TCKWE|XN--QXA6A|XN--P1ACF|XN--NQV7F|XN--NGBRX|XN--L1ACC|XN--J1AMH|XN--J1AEF|XN--FHBEI|XN--E1A4C|XN--D1ALF|XN--C1AVG|XN--90AIS|VACATIONS|TRAVELERS|STOCKHOLM|STATEFARM|STATEBANK|SOLUTIONS|SHANGRILA|SCJOHNSON|RICHARDLI|PRAMERICA|PASSAGENS|PANASONIC|MICROSOFT|MELBOURNE|MARSHALLS|MARKETING|LIFESTYLE|LANDROVER|LANCASTER|KUOKGROUP|INSURANCE|INSTITUTE|HOMESENSE|HOMEGOODS|HOMEDEPOT|HISAMITSU|GOLDPOINT|FURNITURE|FUJIXEROX|FRONTDOOR|FRESENIUS|FIRESTONE|FINANCIAL|FAIRWINDS|EQUIPMENT|EDUCATION|DIRECTORY|COMMUNITY|CHRISTMAS|BLOOMBERG|BARCELONA|AQUARELLE|ANALYTICS|AMSTERDAM|ALLFINANZ|ALFAROMEO|ACCENTURE|YOKOHAMA|XN--QXAM|XN--P1AI|XN--NODE|XN--90AE|WOODSIDE|VERISIGN|VENTURES|VANGUARD|TRAINING|SUPPLIES|STCGROUP|SOFTWARE|SOFTBANK|SHOWTIME|SHOPPING|SERVICES|SECURITY|SAMSCLUB|SAARLAND|RELIANCE|REDSTONE|PROPERTY|PLUMBING|PICTURES|PHARMACY|PARTNERS|OBSERVER|MORTGAGE|MERCKMSD|MEMORIAL|MCKINSEY|MASERATI|MARRIOTT|LUNDBECK|LIGHTING|JPMORGAN|ISTANBUL|IPIRANGA|INFINITI|HOSPITAL|HOLDINGS|HELSINKI|HDFCBANK|GUARDIAN|GRAPHICS|GRAINGER|GOODYEAR|FRONTIER|FOOTBALL|FIRMDALE|FIDELITY|FEEDBACK|EXCHANGE|ETISALAT|ERICSSON|ENGINEER|DOWNLOAD|DISCOVER|DISCOUNT|DIAMONDS|DEMOCRAT|DELOITTE|DELIVERY|COMPUTER|COMMBANK|CLOTHING|CLINIQUE|CLEANING|CITYEATS|CIPRIANI|CATHOLIC|CATERING|CAPETOWN|BUSINESS|BUILDERS|BUDAPEST|BRUSSELS|BROADWAY|BRADESCO|BOUTIQUE|BASEBALL|BARGAINS|BAREFOOT|BARCLAYS|ATTORNEY|ALLSTATE|AIRFORCE|ABUDHABI|ZUERICH|YOUTUBE|YAMAXUN|XFINITY|WINNERS|WINDOWS|WHOSWHO|WEDDING|WEBSITE|WEATHER|WATCHES|WANGGOU|WALMART|TRADING|TOSHIBA|TIFFANY|TICKETS|THEATRE|THEATER|TEMASEK|SYSTEMS|SURGERY|SUPPORT|STORAGE|STAPLES|SINGLES|SHIKSHA|SCIENCE|SCHWARZ|SCHMIDT|SANDVIK|SAMSUNG|REXROTH|REVIEWS|RENTALS|RECIPES|REALTOR|POLITIE|PIONEER|PHILIPS|ORIGINS|ORGANIC|OLDNAVY|OKINAWA|NEUSTAR|NETWORK|NETFLIX|NETBANK|MONSTER|MARKETS|LINCOLN|LIMITED|LECLERC|LATROBE|LASALLE|LANXESS|LACAIXA|KOMATSU|KITCHEN|JUNIPER|JEWELRY|ISMAILI|HYUNDAI|HOTMAIL|HOTELES|HOSTING|HOLIDAY|HITACHI|HANGOUT|HAMBURG|GUITARS|GROCERY|GODADDY|GENTING|GALLERY|FUJITSU|FROGANS|FORSALE|FLOWERS|FLORIST|FLIGHTS|FITNESS|FISHING|FINANCE|FERRERO|FERRARI|FASHION|FARMERS|EXPRESS|EXPOSED|DOMAINS|DIGITAL|DENTIST|CRUISES|CRICKET|COURSES|COUPONS|COUNTRY|CORSICA|COOKING|CONTACT|COMPARE|COMPANY|COMCAST|COLOGNE|COLLEGE|CLUBMED|CITADEL|CHINTAI|CHARITY|CHANNEL|CAREERS|CARAVAN|CAPITAL|BUGATTI|BROTHER|BOOKING|BESTBUY|BENTLEY|BAUHAUS|BANAMEX|AVIANCA|AUSPOST|AUDIBLE|AUCTION|ATHLETA|ANDROID|ALIBABA|AGAKHAN|ACADEMY|ABOGADO|ZAPPOS|YANDEX|YACHTS|XIHUAN|WEBCAM|WALTER|VUELOS|VOYAGE|VOTING|VISION|VIRGIN|VILLAS|VIKING|VIAJES|UNICOM|TRAVEL|TOYOTA|TKMAXX|TJMAXX|TIENDA|TENNIS|TATTOO|TARGET|TAOBAO|TAIPEI|SYDNEY|SWATCH|SUZUKI|SUPPLY|STUDIO|STREAM|SOCIAL|SOCCER|SHOUJI|SELECT|SECURE|SEARCH|SCHULE|SCHOOL|SANOFI|SAKURA|SAFETY|RYUKYU|ROGERS|ROCHER|REVIEW|REPORT|REPAIR|REISEN|REALTY|RACING|QUEBEC|PICTET|PHYSIO|PHOTOS|PFIZER|OTSUKA|ORANGE|ORACLE|ONLINE|OLAYAN|OFFICE|NOWRUZ|NORTON|NISSAY|NISSAN|NATURA|NAGOYA|MUTUAL|MUSEUM|MOSCOW|MORMON|MONASH|MOBILE|MATTEL|MARKET|MAKEUP|MAISON|MADRID|LUXURY|LONDON|LOCKER|LIVING|LEFRAK|LAWYER|LATINO|LANCIA|KOSHER|KINDLE|KINDER|KAUFEN|JUEGOS|JOBURG|JAGUAR|INTUIT|INSURE|IMAMAT|HUGHES|HOTELS|HOCKEY|HIPHOP|HERMES|HEALTH|GRATIS|GOOGLE|GLOBAL|GIVING|GEORGE|GARDEN|GALLUP|FUTBOL|FLICKR|FAMILY|EXPERT|EVENTS|ESTATE|ENERGY|EMERCK|DURBAN|DUPONT|DUNLOP|DOCTOR|DIRECT|DESIGN|DENTAL|DEGREE|DEALER|DATSUN|DATING|CRUISE|CREDIT|COUPON|CONDOS|COMSEC|COFFEE|CLINIC|CLAIMS|CIRCLE|CHURCH|CHROME|CHANEL|CENTER|CASINO|CAREER|CAMERA|BROKER|BOSTON|BOSTIK|BHARTI|BERLIN|BEAUTY|BAYERN|AUTHOR|ARAMCO|ANQUAN|AMAZON|ALSTOM|ALSACE|ALIPAY|AIRTEL|AIRBUS|AGENCY|AFRICA|ABBVIE|ABBOTT|ABARTH|YAHOO|XEROX|WORLD|WORKS|WEIBO|WEBER|WATCH|WALES|VOLVO|VODKA|VIDEO|VEGAS|UBANK|TUSHU|TUNES|TRUST|TRADE|TOURS|TOTAL|TORAY|TOOLS|TOKYO|TODAY|TMALL|TIROL|TIRES|TATAR|SWISS|SUCKS|STYLE|STUDY|STORE|STADA|SPORT|SPACE|SOLAR|SMILE|SMART|SLING|SKYPE|SHOES|SHELL|SHARP|SEVEN|SENER|SALON|RUGBY|RODEO|ROCKS|RICOH|REISE|REHAB|RADIO|QUEST|PROMO|PRIME|PRESS|PRAXI|POKER|PLACE|PIZZA|PHOTO|PHONE|PARTY|PARTS|PARIS|OSAKA|OMEGA|NOWTV|NOKIA|NINJA|NIKON|NEXUS|MOVIE|MONEY|MIAMI|MEDIA|MANGO|MACYS|LOTTO|LOTTE|LOCUS|LOANS|LIXIL|LIPSY|LINDE|LILLY|LEXUS|LEGAL|LEASE|LAMER|KYOTO|KOELN|JETZT|IVECO|IRISH|IKANO|HYATT|HOUSE|HORSE|HONDA|HOMES|GUIDE|GUCCI|GROUP|GRIPE|GREEN|GMAIL|GLOBO|GLASS|GLADE|GIVES|GIFTS|GAMES|GALLO|FORUM|FOREX|FINAL|FEDEX|FAITH|EPSON|EMAIL|EDEKA|EARTH|DUBAI|DRIVE|DELTA|DEALS|DANCE|DABUR|CYMRU|CROWN|CODES|COACH|CLOUD|CLICK|CITIC|CISCO|CHEAP|CHASE|CARDS|CANON|BUILD|BOSCH|BOATS|BLACK|BINGO|BIBLE|BEATS|BAIDU|AZURE|AUTOS|AUDIO|ARCHI|APPLE|AMICA|AMFAM|AETNA|ADULT|ACTOR|ZONE|ZERO|ZARA|YOGA|XBOX|WORK|WINE|WIKI|WIEN|WEIR|WANG|VOTO|VOTE|VIVO|VIVA|VISA|VANA|TUBE|TOYS|TOWN|TIPS|TIAA|TEVA|TECH|TEAM|TAXI|TALK|SURF|STAR|SPOT|SONY|SONG|SOHU|SNCF|SKIN|SITE|SINA|SILK|SHOW|SHOP|SHIA|SHAW|SEXY|SEEK|SEAT|SCOT|SAXO|SAVE|SARL|SALE|SAFE|RUHR|RSVP|ROOM|RMIT|RICH|REST|RENT|REIT|READ|RAID|QPON|PROF|PROD|POST|PORN|POHL|PLUS|PLAY|PINK|PING|PICS|PCCW|PARS|PAGE|OPEN|OLLO|NIKE|NICO|NEXT|NEWS|NAVY|NAME|MOTO|MODA|MOBI|MINT|MINI|MENU|MEME|MEET|MAIF|LUXE|LTDA|LOVE|LOFT|LOAN|LIVE|LINK|LIMO|LIKE|LIFE|LIDL|LGBT|LEGO|LAND|KRED|KPMG|KIWI|KDDI|JPRS|JOBS|JEEP|JAVA|ITAU|INFO|IMMO|IMDB|IEEE|ICBC|HSBC|HOST|HGTV|HERE|HELP|HDFC|HAUS|HAIR|GURU|GUGE|GOOG|GOLF|GOLD|GMBH|GIFT|GGEE|GENT|GBIZ|GAME|FUND|FREE|FORD|FOOD|FLIR|FISH|FIRE|FILM|FIDO|FIAT|FAST|FARM|FANS|FAIL|FAGE|ERNI|DVAG|DUCK|DOCS|DISH|DIET|DESI|DELL|DEAL|DCLK|DATE|DATA|CYOU|COOP|COOL|CLUB|CITY|CITI|CHAT|CERN|CBRE|CASH|CASE|CASA|CARS|CARE|CAMP|CALL|CAFE|BUZZ|BOOK|BOND|BOFA|BLUE|BLOG|BING|BIKE|BEST|BEER|BBVA|BANK|BAND|BABY|AUTO|AUDI|ASIA|ASDA|ARTE|ARPA|ARMY|ARAB|AMEX|ALLY|AKDN|AERO|ADAC|ABLE|AARP|ZIP|YUN|YOU|XYZ|XXX|XIN|WTF|WTC|WOW|WME|WIN|WED|VIP|VIN|VIG|VET|UPS|UOL|UNO|UBS|TVS|TUI|TRV|TOP|TJX|THD|TEL|TDK|TCI|TAX|TAB|STC|SRL|SPA|SOY|SKY|SKI|SFR|SEX|SEW|SES|SCB|SCA|SBS|SBI|SAS|SAP|RWE|RUN|RIP|RIO|RIL|REN|RED|QVC|PWC|PUB|PRU|PRO|PNC|PIN|PID|PHD|PET|PAY|OVH|OTT|ORG|OOO|ONL|ONG|ONE|OFF|OBI|NYC|NTT|NRW|NRA|NOW|NHK|NGO|NFL|NEW|NET|NEC|NBA|NAB|MTR|MTN|MSD|MOV|MOM|MOI|MOE|MMA|MLS|MLB|MIT|MIL|MEN|MED|MBA|MAP|MAN|LTD|LPL|LOL|LLP|LLC|LDS|LAW|LAT|KRD|KPN|KIM|KIA|KFH|JOY|JOT|JNJ|JMP|JLL|JIO|JCB|ITV|IST|INT|INK|ING|INC|IFM|ICU|ICE|IBM|HOW|HOT|HKT|HIV|HBO|GOV|GOT|GOP|GOO|GMX|GMO|GLE|GEA|GDN|GAY|GAP|GAL|FYI|FUN|FTR|FRL|FOX|FOO|FLY|FIT|FAN|EUS|ESQ|EDU|ECO|EAT|DVR|DTV|DOT|DOG|DNP|DIY|DHL|DEV|DDS|DAY|DAD|CSC|CRS|CPA|COM|CFD|CFA|CEO|CBS|CBN|CBA|CAT|CAR|CAM|CAL|CAB|BZH|BUY|BOX|BOT|BOO|BOM|BMW|BMS|BIZ|BIO|BID|BET|BCN|BCG|BBT|BBC|BAR|AXA|AWS|ART|APP|AOL|ANZ|AIG|AFL|AEG|ADS|ACO|ABC|ABB|AAA|ZW|ZM|ZA|YT|YE|WS|WF|VU|VN|VI|VG|VE|VC|VA|UZ|UY|US|UK|UG|UA|TZ|TW|TV|TT|TR|TO|TN|TM|TL|TK|TJ|TH|TG|TF|TD|TC|SZ|SY|SX|SV|SU|ST|SS|SR|SO|SN|SM|SL|SK|SJ|SI|SH|SG|SE|SD|SC|SB|SA|RW|RU|RS|RO|RE|QA|PY|PW|PT|PS|PR|PN|PM|PL|PK|PH|PG|PF|PE|PA|OM|NZ|NU|NR|NP|NO|NL|NI|NG|NF|NE|NC|NA|MZ|MY|MX|MW|MV|MU|MT|MS|MR|MQ|MP|MO|MN|MM|ML|MK|MH|MG|ME|MD|MC|MA|LY|LV|LU|LT|LS|LR|LK|LI|LC|LB|LA|KZ|KY|KW|KR|KP|KN|KM|KI|KH|KG|KE|JP|JO|JM|JE|IT|IS|IR|IQ|IO|IN|IM|IL|IE|ID|HU|HT|HR|HN|HM|HK|GY|GW|GU|GT|GS|GR|GQ|GP|GN|GM|GL|GI|GH|GG|GF|GE|GD|GB|GA|FR|FO|FM|FK|FJ|FI|EU|ET|ES|ER|EG|EE|EC|DZ|DO|DM|DK|DJ|DE|CZ|CY|CX|CW|CV|CU|CR|CO|CN|CM|CL|CK|CI|CH|CG|CF|CD|CC|CA|BZ|BY|BW|BV|BT|BS|BR|BO|BN|BM|BJ|BI|BH|BG|BF|BE|BD|BB|BA|AZ|AX|AW|AU|AT|AS|AR|AQ|AO|AM|AL|AI|AG|AF|AE|AD|AC|SJC|RNO|LAX"; +export default TLD_REGEX; From 13dce532468bbfc1b9f4b853d192699fd0f5b0f4 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Fri, 23 Jun 2023 10:50:03 +0200 Subject: [PATCH 13/15] Remove JSDoc from CONST.d.ts --- lib/CONST.d.ts | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/lib/CONST.d.ts b/lib/CONST.d.ts index 01506ae3..e035816d 100644 --- a/lib/CONST.d.ts +++ b/lib/CONST.d.ts @@ -10,15 +10,11 @@ export declare const CONST: { readonly CORPAY_DIRECT_REIMBURSEMENT_CURRENCIES: readonly ["USD", "GBP", "EUR", "AUD", "CAD"]; /** * Default max ACH limit. It can be overwritten by a private NVP - * - * @type {Number} */ readonly ACH_DEFAULT_MAX_AMOUNT_LIMIT: 2000000; /** * IRS remimbursement rate for mileage * WARNING ! UPDATE THE PHP CONSTANT VERSION WHEN UPDATING THIS ONE - * - * @type Number */ readonly MILEAGE_IRS_RATE: 0.545 | 0.58; readonly COUNTRY: { @@ -249,64 +245,44 @@ export declare const CONST: { readonly REG_EXP: { /** * Regular expression to check that a domain is valid - * - * @type RegExp */ readonly DOMAIN: RegExp; /** * Regex matching an text containing an email - * - * @type String */ readonly EMAIL_PART: "([\\w\\-\\+\\'#]+(?:\\.[\\w\\-\\'\\+]+)*@(?:[\\w\\-]+\\.)+[a-z]{2,})"; /** * Regular expression to check that a basic name is valid - * - * @type RegExp */ readonly FREE_NAME: RegExp; /** * Regular expression to check that a card is masked - * - * @type RegExp */ readonly MASKED_CARD: RegExp; /** * Regular expression to check that an email is valid - * - * @type RegExp */ readonly EMAIL: RegExp; /** * Regular expression to extract an email from a text - * - * @type RegExp */ readonly EXTRACT_EMAIL: RegExp; /** * Regular expression to search for valid email addresses in a string - * - * @type RegExp */ readonly EMAIL_SEARCH: RegExp; /** * Regular expression to detect if something is a hyperlink * * Adapted from: https://gist.github.com/dperini/729294 - * - * @type RegExp */ readonly HYPERLINK: RegExp; /** * Regex to match valid emails during markdown transformations - * - * @type String */ readonly MARKDOWN_EMAIL: "([a-zA-Z0-9.!#$%&'+/=?^`{|}-][a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]*@[a-zA-Z0-9-]+?(\\.[a-zA-Z]+)+)"; /** * Regex matching an text containing an Emoji - * - * @type RegExp */ readonly EMOJIS: RegExp; }; @@ -319,8 +295,6 @@ export declare const CONST: { readonly ACH_DEFAULT_DAYS: 4; /** * This is the string that a user can enter in a formula to refer to the report title field - * - * @type {String} */ readonly TITLE_FORMULA: "{report:title}"; /** @@ -356,41 +330,29 @@ export declare const CONST: { readonly MOMENT_FORMAT_STRING: "YYYY-MM-DD"; /** * This is a typical format of the date plus the time - * - * @type {String} */ readonly MOMENT_DATE_TIME: "YYYY-MM-DD HH:mm"; /** * Pretty format used for report history items * * @example Jun 19, 2019 12:38 PM - * - * @type {String} */ readonly MOMENT_DATE_TIME_PRETTY: "MMM DD YYYY h:mma"; /** * Date-time format, including timezone information, eg "2015-10-14T19:44:35+07:00" - * - * @type {String} */ readonly MOMENT_DATE_TIME_TIMEZONE: "YYYY-MM-DDTHH:mm:ssZ"; /** * Moment formatting option for a date of this format "Jul 2, 2014" - * - * @type {string} */ readonly MOMENT_US_DATE: "MMM D, YYYY"; /** * Moment formatting option for a date of this format "July 2, 2014" * ie, full month name - * - * @type {string} */ readonly MOMENT_US_DATE_LONG: "MMMM D, YYYY"; /** * Moment formatting option for full month name and year as in "July 2015" - * - * @type {string} */ readonly MOMENT_US_MONTH_YEAR_LONG: "MMMM YYYY"; /** @@ -404,8 +366,6 @@ export declare const CONST: { }; /** * Message used by the Func.die() exception - * - * @type String */ readonly FUNC_DIE_MESSAGE: "Aborting JavaScript execution"; /** @@ -413,8 +373,6 @@ export declare const CONST: { * Currently 14 days (14 * 24 * 60 * 60) * * WARNING ! UPDATE THE PHP CONSTANT VERSION WHEN UPDATING THIS ONE - * - * @type Integer */ readonly EMAIL_DELIVERY_FAILURE_VALIDITY: 1209600; /** From 1f5354ff0cdf84ade9db8a6b22b49bff02a5c1cd Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Fri, 23 Jun 2023 10:53:36 +0200 Subject: [PATCH 14/15] Remove rest of JSDoc from str.d.ts --- lib/str.d.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/str.d.ts b/lib/str.d.ts index ea5bef18..a64c9da6 100644 --- a/lib/str.d.ts +++ b/lib/str.d.ts @@ -321,7 +321,7 @@ declare const Str: { * Uppercases the first letter of each word * via https://github.com/kvz/phpjs/blob/master/functions/strings/ucwords.js * - * @param {String} str to uppercase words + * @param str to uppercase words * @returns Uppercase worded string */ ucwords(str: string): string; @@ -375,7 +375,7 @@ declare const Str: { compare(string1: string, string2: string): 1 | 0 | -1; /** * Check if a file extension is supported by SmartReports - * @param {String} filename + * @param filename */ isFileExtensionSmartReportsValid(filename: string): boolean; /** @@ -387,27 +387,27 @@ declare const Str: { /** * Checks if something is a string * Stolen from underscore - * @param {Mixed} obj + * @param obj */ isString(obj: unknown): boolean; /** * Checks if something is a number * Stolen from underscore - * @param {Mixed} obj + * @param obj */ isNumber(obj: unknown): boolean; /** * Checks if something is a certain type * Stolen from underscore - * @param {Mixed} obj - * @param {String} type one of ['Arguments', 'Function', 'String', 'Number', 'Date', + * @param obj + * @param type one of ['Arguments', 'Function', 'String', 'Number', 'Date', * 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'] */ isTypeOf(obj: unknown, type: 'Arguments' | 'Function' | 'String' | 'Number' | 'Date' | 'RegExp' | 'Error' | 'Symbol' | 'Map' | 'WeakMap' | 'Set' | 'WeakSet'): boolean; /** * Checks to see if something is undefined * Stolen from underscore - * @param {Mixed} obj + * @param obj */ isUndefined(obj: unknown): boolean; /** From 077c1a6ae15035e7de04ec143fdd296192a5641e Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Mon, 26 Jun 2023 16:02:22 +0200 Subject: [PATCH 15/15] Adjust getExtension JSDoc type --- lib/str.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/str.js b/lib/str.js index a5679803..14a582f0 100644 --- a/lib/str.js +++ b/lib/str.js @@ -1049,7 +1049,7 @@ const Str = { * without query parameters * * @param {String} url - * @returns {String} + * @returns {String|undefined} */ getExtension(url) { return _.first(_.last(url.split('.')).split('?')).toLowerCase();