summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js')
-rw-r--r--deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js84
1 files changed, 52 insertions, 32 deletions
diff --git a/deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js b/deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js
index 41803ba423..6ab1df3a03 100644
--- a/deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js
+++ b/deps/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js
@@ -1,12 +1,17 @@
-/*! http://mths.be/punycode v1.2.3 by @mathias */
+/*! http://mths.be/punycode v1.3.1 by @mathias */
;(function(root) {
/** Detect free variables */
- var freeExports = typeof exports == 'object' && exports;
+ var freeExports = typeof exports == 'object' && exports &&
+ !exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
- module.exports == freeExports && module;
+ !module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
- if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
+ if (
+ freeGlobal.global === freeGlobal ||
+ freeGlobal.window === freeGlobal ||
+ freeGlobal.self === freeGlobal
+ ) {
root = freeGlobal;
}
@@ -32,8 +37,8 @@
/** Regular expressions */
regexPunycode = /^xn--/,
- regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars
- regexSeparators = /\x2E|\u3002|\uFF0E|\uFF61/g, // RFC 3490 separators
+ regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
+ regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
@@ -72,23 +77,35 @@
*/
function map(array, fn) {
var length = array.length;
+ var result = [];
while (length--) {
- array[length] = fn(array[length]);
+ result[length] = fn(array[length]);
}
- return array;
+ return result;
}
/**
- * A simple `Array#map`-like wrapper to work with domain name strings.
+ * A simple `Array#map`-like wrapper to work with domain name strings or email
+ * addresses.
* @private
- * @param {String} domain The domain name.
+ * @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
- return map(string.split(regexSeparators), fn).join('.');
+ var parts = string.split('@');
+ var result = '';
+ if (parts.length > 1) {
+ // In email addresses, only the domain name should be punycoded. Leave
+ // the local part (i.e. everything up to `@`) intact.
+ result = parts[0] + '@';
+ string = parts[1];
+ }
+ var labels = string.split(regexSeparators);
+ var encoded = map(labels, fn).join('.');
+ return result + encoded;
}
/**
@@ -228,7 +245,6 @@
k,
digit,
t,
- length,
/** Cached calculation results */
baseMinusT;
@@ -308,8 +324,8 @@
}
/**
- * Converts a string of Unicode symbols to a Punycode string of ASCII-only
- * symbols.
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
@@ -422,17 +438,18 @@
}
/**
- * Converts a Punycode string representing a domain name to Unicode. Only the
- * Punycoded parts of the domain name will be converted, i.e. it doesn't
- * matter if you call it on a string that has already been converted to
- * Unicode.
+ * Converts a Punycode string representing a domain name or an email address
+ * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
+ * it doesn't matter if you call it on a string that has already been
+ * converted to Unicode.
* @memberOf punycode
- * @param {String} domain The Punycode domain name to convert to Unicode.
+ * @param {String} input The Punycoded domain name or email address to
+ * convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
- function toUnicode(domain) {
- return mapDomain(domain, function(string) {
+ function toUnicode(input) {
+ return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
@@ -440,15 +457,18 @@
}
/**
- * Converts a Unicode string representing a domain name to Punycode. Only the
- * non-ASCII parts of the domain name will be converted, i.e. it doesn't
- * matter if you call it with a domain that's already in ASCII.
+ * Converts a Unicode string representing a domain name or an email address to
+ * Punycode. Only the non-ASCII parts of the domain name will be converted,
+ * i.e. it doesn't matter if you call it with a domain that's already in
+ * ASCII.
* @memberOf punycode
- * @param {String} domain The domain name to convert, as a Unicode string.
- * @returns {String} The Punycode representation of the given domain name.
+ * @param {String} input The domain name or email address to convert, as a
+ * Unicode string.
+ * @returns {String} The Punycode representation of the given domain name or
+ * email address.
*/
- function toASCII(domain) {
- return mapDomain(domain, function(string) {
+ function toASCII(input) {
+ return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
@@ -464,7 +484,7 @@
* @memberOf punycode
* @type String
*/
- 'version': '1.2.3',
+ 'version': '1.3.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
@@ -490,11 +510,11 @@
typeof define.amd == 'object' &&
define.amd
) {
- define(function() {
+ define('punycode', function() {
return punycode;
});
- } else if (freeExports && !freeExports.nodeType) {
- if (freeModule) { // in Node.js or RingoJS v0.8.0+
+ } else if (freeExports && freeModule) {
+ if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+
freeModule.exports = punycode;
} else { // in Narwhal or RingoJS v0.7.0-
for (key in punycode) {