{"version":3,"sources":["../source/RFC3966.js"],"names":["parseRFC3966","text","number","ext","replace","split","part","name","value","result","formatRFC3966","Error"],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;AAEA;;AAEA;;;;AAIO,SAASA,YAAT,CAAsBC,IAAtB,EACP;AACC,MAAIC,MAAJ;AACA,MAAIC,GAAJ,CAFD,CAIC;;AACAF,EAAAA,IAAI,GAAGA,IAAI,CAACG,OAAL,CAAa,OAAb,EAAsB,MAAtB,CAAP;;AAEA,uBAAmBH,IAAI,CAACI,KAAL,CAAW,GAAX,CAAnB,kHACA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,QADWC,IACX;;AAAA,sBACuBA,IAAI,CAACD,KAAL,CAAW,GAAX,CADvB;AAAA;AAAA,QACQE,IADR;AAAA,QACcC,KADd;;AAEC,YAAQD,IAAR;AAEC,WAAK,KAAL;AACCL,QAAAA,MAAM,GAAGM,KAAT;AACA;;AACD,WAAK,KAAL;AACCL,QAAAA,GAAG,GAAGK,KAAN;AACA;;AACD,WAAK,eAAL;AACC;AACA;AACA,YAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACrBN,UAAAA,MAAM,GAAGM,KAAK,GAAGN,MAAjB;AACA;;AACD;AAdF;AAgBA,GA1BF,CA4BC;;;AACA,MAAI,CAAC,qCAAoBA,MAApB,CAAL,EACA;AACC,WAAO,EAAP;AACA;;AAED,MAAMO,MAAM,GAAG;AAAEP,IAAAA,MAAM,EAANA;AAAF,GAAf;;AACA,MAAIC,GAAJ,EAAS;AACRM,IAAAA,MAAM,CAACN,GAAP,GAAaA,GAAb;AACA;;AACD,SAAOM,MAAP;AACA;AAED;;;;;;AAIO,SAASC,aAAT,QACP;AAAA,MADgCR,MAChC,SADgCA,MAChC;AAAA,MADwCC,GACxC,SADwCA,GACxC;;AACC,MAAI,CAACD,MAAL,EACA;AACC,WAAO,EAAP;AACA;;AAED,MAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EACA;AACC,UAAM,IAAIS,KAAJ,iEAAN;AACA;;AAED,uBAAcT,MAAd,SAAuBC,GAAG,GAAG,UAAUA,GAAb,GAAmB,EAA7C;AACA","sourcesContent":["import isViablePhoneNumber from './isViablePhoneNumber'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text)\r\n{\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';'))\r\n\t{\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name)\r\n\t\t{\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number))\r\n\t{\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext })\r\n{\r\n\tif (!number)\r\n\t{\r\n\t\treturn ''\r\n\t}\r\n\r\n\tif (number[0] !== '+')\r\n\t{\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}"],"file":"RFC3966.js"}