UNPKG

libphonenumber-js

Version:

A simpler (and smaller) rewrite of Google Android's libphonenumber library in javascript

63 lines (58 loc) 1.4 kB
import isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt /** * @param {string} text - Phone URI (RFC 3966). * @return {object} `{ ?number, ?ext }`. */ export function parseRFC3966(text) { let number; let ext; // Replace "tel:" with "tel=" for parsing convenience. text = text.replace(/^tel:/, 'tel='); for (const part of text.split(';')) { const [name, value] = part.split('='); switch (name) { case 'tel': number = value; break; case 'ext': ext = value; break; case 'phone-context': // Only "country contexts" are supported. // "Domain contexts" are ignored. if (value[0] === '+') { number = value + number; } break; } } // If the phone number is not viable, then abort. if (!isViablePhoneNumber(number)) { return {}; } const result = { number }; if (ext) { result.ext = ext; } return result; } /** * @param {object} - `{ ?number, ?extension }`. * @return {string} Phone URI (RFC 3966). */ export function formatRFC3966({ number, ext }) { if (!number) { return ''; } if (number[0] !== '+') { throw new Error(`"formatRFC3966()" expects "number" to be in E.164 format.`); } return `tel:${number}${ext ? ';ext=' + ext : ''}`; } //# sourceMappingURL=RFC3966.js.map