{"version":3,"sources":["../../source/tools/compress.js"],"names":["compress","input","countries","Object","keys","countryCode","compressNumberingPlan","nonGeographic","callingCode","version","country_calling_codes","country","country_array","phone_code","idd_prefix","national_number_pattern","possible_lengths","formats","map","format","format_array","pattern","leading_digits_patterns","national_prefix_formatting_rule","national_prefix_is_optional_when_formatting","international_format","trimArray","national_prefix","national_prefix_for_parsing","national_prefix_transform_rule","leading_digits","types","types_array","fixed_line","mobile","toll_free","premium_rate","personal_number","voice_mail","uan","pager","voip","shared_cost","type","push","default_idd_prefix","ext","isEmpty","value","undefined","Array","isArray","length","array","pop","element"],"mappings":"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","sourcesContent":["export default function compress(input) {\r\n\tconst countries = {}\r\n\tfor (const countryCode of Object.keys(input.countries)) {\r\n\t\tcountries[countryCode] = compressNumberingPlan(input.countries[countryCode])\r\n\t}\r\n\tconst nonGeographic = {}\r\n\tfor (const callingCode of Object.keys(input.nonGeographic)) {\r\n\t\tnonGeographic[callingCode] = compressNumberingPlan(input.nonGeographic[callingCode])\r\n\t}\r\n\treturn {\r\n\t\tversion: input.version,\r\n\t\tcountry_calling_codes: input.country_calling_codes,\r\n\t\tcountries,\r\n\t\tnonGeographic\r\n\t}\r\n}\r\n\r\nfunction compressNumberingPlan(country) {\r\n\t// When changing this array also change getters in `./metadata.js`\r\n\tconst country_array =\r\n\t[\r\n\t\tcountry.phone_code,\r\n\r\n\t\tcountry.idd_prefix,\r\n\r\n\t\tcountry.national_number_pattern,\r\n\r\n\t\tcountry.possible_lengths,\r\n\t\t// country.possible_lengths_local,\r\n\r\n\t\tcountry.formats && country.formats.map((format) =>\r\n\t\t{\r\n\t\t\t// When changing this array also change getters in `./metadata.js`\r\n\t\t\tconst format_array =\r\n\t\t\t[\r\n\t\t\t\tformat.pattern,\r\n\t\t\t\tformat.format,\r\n\t\t\t\tformat.leading_digits_patterns,\r\n\t\t\t\tformat.national_prefix_formatting_rule,\r\n\t\t\t\tformat.national_prefix_is_optional_when_formatting,\r\n\t\t\t\tformat.international_format\r\n\t\t\t]\r\n\r\n\t\t\treturn trimArray(format_array)\r\n\t\t}),\r\n\r\n\t\tcountry.national_prefix,\r\n\t\tcountry.national_prefix_formatting_rule,\r\n\t\tcountry.national_prefix_for_parsing,\r\n\t\tcountry.national_prefix_transform_rule,\r\n\t\tcountry.national_prefix_is_optional_when_formatting,\r\n\t\tcountry.leading_digits\r\n\t]\r\n\r\n\tif (country.types)\r\n\t{\r\n\t\tconst types_array =\r\n\t\t[\r\n\t\t\t// These are common\r\n\t\t\tcountry.types.fixed_line,\r\n\t\t\tcountry.types.mobile,\r\n\t\t\tcountry.types.toll_free,\r\n\t\t\tcountry.types.premium_rate,\r\n\t\t\tcountry.types.personal_number,\r\n\r\n\t\t\t// These are less common\r\n\t\t\tcountry.types.voice_mail,\r\n\t\t\tcountry.types.uan,\r\n\t\t\tcountry.types.pager,\r\n\t\t\tcountry.types.voip,\r\n\t\t\tcountry.types.shared_cost\r\n\t\t]\r\n\t\t.map((type) => type && trimArray\r\n\t\t([\r\n\t\t\ttype.pattern,\r\n\t\t\ttype.possible_lengths\r\n\t\t\t// type.possible_lengths_local\r\n\t\t]))\r\n\r\n\t\tcountry_array.push(trimArray(types_array))\r\n\t}\r\n\telse\r\n\t{\r\n\t\tcountry_array.push(null)\r\n\t}\r\n\r\n\tcountry_array.push(country.default_idd_prefix)\r\n\r\n\tcountry_array.push(country.ext)\r\n\r\n\treturn trimArray(country_array)\r\n}\r\n\r\n// Empty strings are not considered \"empty\".\r\nfunction isEmpty(value) {\r\n\treturn value === undefined\r\n\t\t|| value === null\r\n\t\t|| value === false\r\n\t\t|| (Array.isArray(value) && value.length === 0)\r\n}\r\n\r\n// Removes trailing empty values from an `array`\r\nfunction trimArray(array) {\r\n\t// First, trim any empty elements.\r\n\twhile (array.length > 0 && isEmpty(array[array.length - 1])) {\r\n\t\tarray.pop()\r\n\t}\r\n\t// Then replace all remaining empty elements with `0`\r\n\t// and also `true` with `1`.\r\n\treturn array.map((element) => {\r\n\t\tif (isEmpty(element)) {\r\n\t\t\treturn 0\r\n\t\t}\r\n\t\tif (element === true) {\r\n\t\t\treturn 1\r\n\t\t}\r\n\t\treturn element\r\n\t})\r\n}"],"file":"compress.js"}