Socket
Socket
Sign inDemoInstall

emailjs-imap-handler

Package Overview
Dependencies
0
Maintainers
4
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.0.2 to 3.0.3

9

dist/compiler.js

@@ -86,4 +86,7 @@ 'use strict';

if ((0, _formalSyntax.verify)(val.charAt(0) === '\\' ? val.substr(1) : val, (0, _formalSyntax.ATOM_CHAR)()) >= 0) {
val = JSON.stringify(val);
for (var i = val.charCodeAt(0) === _formalSyntax.ASCII_BACKSLASH ? 1 : 0; i < val.length; i++) {
if (!(0, _formalSyntax.IS_ATOM_CHAR)(val.charCodeAt(i))) {
val = JSON.stringify(val);
break;
}
}

@@ -124,2 +127,2 @@

*/
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJyZXNwb25zZSIsImFzQXJyYXkiLCJpc0xvZ2dpbmciLCJyZXNwUGFydHMiLCJyZXNwIiwidGFnIiwiY29tbWFuZCIsIm5lZWRzU3BhY2UiLCJ3YWxrIiwibm9kZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJKU09OIiwic3RyaW5naWZ5IiwiTWF0aCIsInJvdW5kIiwic2Vuc2l0aXZlIiwidHlwZSIsInRvVXBwZXJDYXNlIiwidmFsdWUiLCJwdXNoIiwidmFsIiwiY2hhckF0Iiwic3Vic3RyIiwic2VjdGlvbiIsInBhcnRpYWwiLCJqb2luIiwiY29uY2F0IiwiYXR0cmlidXRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2tCQUtlLFVBQVVBLFFBQVYsRUFBb0JDLE9BQXBCLEVBQTZCQyxTQUE3QixFQUF3QztBQUNyRCxNQUFJQyxZQUFZLEVBQWhCO0FBQ0EsTUFBSUMsT0FBTyxDQUFDSixTQUFTSyxHQUFULElBQWdCLEVBQWpCLEtBQXdCTCxTQUFTTSxPQUFULEdBQW1CLE1BQU1OLFNBQVNNLE9BQWxDLEdBQTRDLEVBQXBFLENBQVg7QUFDQSxNQUFJQyxhQUFhLElBQWpCOztBQUVBLE1BQUlDLE9BQU8sU0FBUEEsSUFBTyxDQUFVQyxJQUFWLEVBQWdCO0FBQ3pCLFFBQUlMLEtBQUtNLE1BQUwsR0FBYyxDQUFkLElBQW1CSCxVQUF2QixFQUFtQztBQUNqQ0gsY0FBUSxHQUFSO0FBQ0Q7O0FBRUQsUUFBSU8sTUFBTUMsT0FBTixDQUFjSCxJQUFkLENBQUosRUFBeUI7QUFDdkJGLG1CQUFhLEtBQWI7QUFDQUgsY0FBUSxHQUFSO0FBQ0FLLFdBQUtJLE9BQUwsQ0FBYUwsSUFBYjtBQUNBSixjQUFRLEdBQVI7QUFDQTtBQUNELEtBTkQsTUFNTztBQUNMRyxtQkFBYSxJQUFiO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDRSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUF6QixJQUFxQyxP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SUFBVixDQUFlbEIsSUFBZjtBQUNEOztBQUVELFNBQU9ILFVBQVVFLFNBQVYsR0FBc0JBLFVBQVV5QixJQUFWLENBQWUsRUFBZixDQUE3QjtBQUNELEM7O0FBaEhEOztBQWdIQzs7QUE5R0QiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBVE9NX0NIQVIsIHZlcmlmeSB9IGZyb20gJy4vZm9ybWFsLXN5bnRheCdcblxuLyoqXG4gKiBDb21waWxlcyBhbiBpbnB1dCBvYmplY3QgaW50b1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocmVzcG9uc2UsIGFzQXJyYXksIGlzTG9nZ2luZykge1xuICBsZXQgcmVzcFBhcnRzID0gW11cbiAgbGV0IHJlc3AgPSAocmVzcG9uc2UudGFnIHx8ICcnKSArIChyZXNwb25zZS5jb21tYW5kID8gJyAnICsgcmVzcG9uc2UuY29tbWFuZCA6ICcnKVxuICBsZXQgbmVlZHNTcGFjZSA9IHRydWVcblxuICBsZXQgd2FsayA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKHJlc3AubGVuZ3RoID4gMCAmJiBuZWVkc1NwYWNlKSB7XG4gICAgICByZXNwICs9ICcgJ1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICBuZWVkc1NwYWNlID0gZmFsc2VcbiAgICAgIHJlc3AgKz0gJygnXG4gICAgICBub2RlLmZvckVhY2god2FsaylcbiAgICAgIHJlc3AgKz0gJyknXG4gICAgICByZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgbmVlZHNTcGFjZSA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoIW5vZGUgJiYgdHlwZW9mIG5vZGUgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBub2RlICE9PSAnbnVtYmVyJykge1xuICAgICAgcmVzcCArPSAnTklMJ1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGlzTG9nZ2luZyAmJiBub2RlLmxlbmd0aCA+IDIwKSB7XG4gICAgICAgIHJlc3AgKz0gJ1wiKCogJyArIG5vZGUubGVuZ3RoICsgJ0Igc3RyaW5nICopXCInXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwICs9IEpTT04uc3RyaW5naWZ5KG5vZGUpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXNwICs9IE1hdGgucm91bmQobm9kZSkgfHwgMCAvLyBPbmx5IGludGVnZXJzIGFsbG93ZWRcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0xvZ2dpbmcgJiYgbm9kZS5zZW5zaXRpdmUpIHtcbiAgICAgIHJlc3AgKz0gJ1wiKCogdmFsdWUgaGlkZGVuICopXCInXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzd2l0Y2ggKG5vZGUudHlwZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdMSVRFUkFMJzpcbiAgICAgICAgaWYgKGlzTG9nZ2luZykge1xuICAgICAgICAgIHJlc3AgKz0gJ1wiKCogJyArIG5vZGUudmFsdWUubGVuZ3RoICsgJ0IgbGl0ZXJhbCAqKVwiJ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghbm9kZS52YWx1ZSkge1xuICAgICAgICAgICAgcmVzcCArPSAnezB9XFxyXFxuJ1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNwICs9ICd7JyArIG5vZGUudmFsdWUubGVuZ3RoICsgJ31cXHJcXG4nXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3BQYXJ0cy5wdXNoKHJlc3ApXG4gICAgICAgICAgcmVzcCA9IG5vZGUudmFsdWUgfHwgJydcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdTVFJJTkcnOlxuICAgICAgICBpZiAoaXNMb2dnaW5nICYmIG5vZGUudmFsdWUubGVuZ3RoID4gMjApIHtcbiAgICAgICAgICByZXNwICs9ICdcIigqICcgKyBub2RlLnZhbHVlLmxlbmd0aCArICdCIHN0cmluZyAqKVwiJ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3AgKz0gSlNPTi5zdHJpbmdpZnkobm9kZS52YWx1ZSB8fCAnJylcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnVEVYVCc6XG4gICAgICBjYXNlICdTRVFVRU5DRSc6XG4gICAgICAgIHJlc3AgKz0gbm9kZS52YWx1ZSB8fCAnJ1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdOVU1CRVInOlxuICAgICAgICByZXNwICs9IChub2RlLnZhbHVlIHx8IDApXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0FUT00nOlxuICAgICAgY2FzZSAnU0VDVElPTic6XG4gICAgICAgIGxldCB2YWwgPSBub2RlLnZhbHVlIHx8ICcnXG5cbiAgICAgICAgaWYgKHZlcmlmeSh2YWwuY2hhckF0KDApID09PSAnXFxcXCcgPyB2YWwuc3Vic3RyKDEpIDogdmFsLCBBVE9NX0NIQVIoKSkgPj0gMCkge1xuICAgICAgICAgIHZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbClcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3AgKz0gdmFsXG5cbiAgICAgICAgaWYgKG5vZGUuc2VjdGlvbikge1xuICAgICAgICAgIHJlc3AgKz0gJ1snXG4gICAgICAgICAgaWYgKG5vZGUuc2VjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5lZWRzU3BhY2UgPSBmYWxzZVxuICAgICAgICAgICAgbm9kZS5zZWN0aW9uLmZvckVhY2god2FsaylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzcCArPSAnXSdcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5wYXJ0aWFsKSB7XG4gICAgICAgICAgcmVzcCArPSAnPCcgKyBub2RlLnBhcnRpYWwuam9pbignLicpICsgJz4nXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH07XG5cbiAgW10uY29uY2F0KHJlc3BvbnNlLmF0dHJpYnV0ZXMgfHwgW10pLmZvckVhY2god2FsaylcblxuICBpZiAocmVzcC5sZW5ndGgpIHtcbiAgICByZXNwUGFydHMucHVzaChyZXNwKVxuICB9XG5cbiAgcmV0dXJuIGFzQXJyYXkgPyByZXNwUGFydHMgOiByZXNwUGFydHMuam9pbignJylcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJyZXNwb25zZSIsImFzQXJyYXkiLCJpc0xvZ2dpbmciLCJyZXNwUGFydHMiLCJyZXNwIiwidGFnIiwiY29tbWFuZCIsIm5lZWRzU3BhY2UiLCJ3YWxrIiwibm9kZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJKU09OIiwic3RyaW5naWZ5IiwiTWF0aCIsInJvdW5kIiwic2Vuc2l0aXZlIiwidHlwZSIsInRvVXBwZXJDYXNlIiwidmFsdWUiLCJwdXNoIiwidmFsIiwiaSIsImNoYXJDb2RlQXQiLCJBU0NJSV9CQUNLU0xBU0giLCJzZWN0aW9uIiwicGFydGlhbCIsImpvaW4iLCJjb25jYXQiLCJhdHRyaWJ1dGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7a0JBUWUsVUFBVUEsUUFBVixFQUFvQkMsT0FBcEIsRUFBNkJDLFNBQTdCLEVBQXdDO0FBQ3JELE1BQUlDLFlBQVksRUFBaEI7QUFDQSxNQUFJQyxPQUFPLENBQUNKLFNBQVNLLEdBQVQsSUFBZ0IsRUFBakIsS0FBd0JMLFNBQVNNLE9BQVQsR0FBbUIsTUFBTU4sU0FBU00sT0FBbEMsR0FBNEMsRUFBcEUsQ0FBWDtBQUNBLE1BQUlDLGFBQWEsSUFBakI7O0FBRUEsTUFBSUMsT0FBTyxTQUFQQSxJQUFPLENBQVVDLElBQVYsRUFBZ0I7QUFDekIsUUFBSUwsS0FBS00sTUFBTCxHQUFjLENBQWQsSUFBbUJILFVBQXZCLEVBQW1DO0FBQ2pDSCxjQUFRLEdBQVI7QUFDRDs7QUFFRCxRQUFJTyxNQUFNQyxPQUFOLENBQWNILElBQWQsQ0FBSixFQUF5QjtBQUN2QkYsbUJBQWEsS0FBYjtBQUNBSCxjQUFRLEdBQVI7QUFDQUssV0FBS0ksT0FBTCxDQUFhTCxJQUFiO0FBQ0FKLGNBQVEsR0FBUjtBQUNBO0FBQ0QsS0FORCxNQU1PO0FBQ0xHLG1CQUFhLElBQWI7QUFDRDs7QUFFRCxRQUFJLENBQUNFLElBQUQsSUFBUyxPQUFPQSxJQUFQLEtB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QUFULElBQXVCLEVBQWpDLEVBQXFDbEIsT0FBckMsQ0FBNkNMLElBQTdDOztBQUVBLE1BQUlKLEtBQUtNLE1BQVQsRUFBaUI7QUFDZlAsY0FBVW1CLElBQVYsQ0FBZWxCLElBQWY7QUFDRDs7QUFFRCxTQUFPSCxVQUFVRSxTQUFWLEdBQXNCQSxVQUFVMEIsSUFBVixDQUFlLEVBQWYsQ0FBN0I7QUFDRCxDOztBQXRIRDs7QUFzSEM7O0FBakhEIiwiZmlsZSI6ImNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVNDSUlfQkFDS1NMQVNILFxuICBJU19BVE9NX0NIQVJcbn0gZnJvbSAnLi9mb3JtYWwtc3ludGF4J1xuXG4vKipcbiAqIENvbXBpbGVzIGFuIGlucHV0IG9iamVjdCBpbnRvXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyZXNwb25zZSwgYXNBcnJheSwgaXNMb2dnaW5nKSB7XG4gIGxldCByZXNwUGFydHMgPSBbXVxuICBsZXQgcmVzcCA9IChyZXNwb25zZS50YWcgfHwgJycpICsgKHJlc3BvbnNlLmNvbW1hbmQgPyAnICcgKyByZXNwb25zZS5jb21tYW5kIDogJycpXG4gIGxldCBuZWVkc1NwYWNlID0gdHJ1ZVxuXG4gIGxldCB3YWxrID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAocmVzcC5sZW5ndGggPiAwICYmIG5lZWRzU3BhY2UpIHtcbiAgICAgIHJlc3AgKz0gJyAnXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgIG5lZWRzU3BhY2UgPSBmYWxzZVxuICAgICAgcmVzcCArPSAnKCdcbiAgICAgIG5vZGUuZm9yRWFjaCh3YWxrKVxuICAgICAgcmVzcCArPSAnKSdcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICBuZWVkc1NwYWNlID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmICghbm9kZSAmJiB0eXBlb2Ygbm9kZSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIG5vZGUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXNwICs9ICdOSUwnXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaXNMb2dnaW5nICYmIG5vZGUubGVuZ3RoID4gMjApIHtcbiAgICAgICAgcmVzcCArPSAnXCIoKiAnICsgbm9kZS5sZW5ndGggKyAnQiBzdHJpbmcgKilcIidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3AgKz0gSlNPTi5zdHJpbmdpZnkobm9kZSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJlc3AgKz0gTWF0aC5yb3VuZChub2RlKSB8fCAwIC8vIE9ubHkgaW50ZWdlcnMgYWxsb3dlZFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzTG9nZ2luZyAmJiBub2RlLnNlbnNpdGl2ZSkge1xuICAgICAgcmVzcCArPSAnXCIoKiB2YWx1ZSBoaWRkZW4gKilcIidcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN3aXRjaCAobm9kZS50eXBlLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0xJVEVSQUwnOlxuICAgICAgICBpZiAoaXNMb2dnaW5nKSB7XG4gICAgICAgICAgcmVzcCArPSAnXCIoKiAnICsgbm9kZS52YWx1ZS5sZW5ndGggKyAnQiBsaXRlcmFsICopXCInXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFub2RlLnZhbHVlKSB7XG4gICAgICAgICAgICByZXNwICs9ICd7MH1cXHJcXG4nXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3AgKz0gJ3snICsgbm9kZS52YWx1ZS5sZW5ndGggKyAnfVxcclxcbidcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzcFBhcnRzLnB1c2gocmVzcClcbiAgICAgICAgICByZXNwID0gbm9kZS52YWx1ZSB8fCAnJ1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ1NUUklORyc6XG4gICAgICAgIGlmIChpc0xvZ2dpbmcgJiYgbm9kZS52YWx1ZS5sZW5ndGggPiAyMCkge1xuICAgICAgICAgIHJlc3AgKz0gJ1wiKCogJyArIG5vZGUudmFsdWUubGVuZ3RoICsgJ0Igc3RyaW5nICopXCInXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcCArPSBKU09OLnN0cmluZ2lmeShub2RlLnZhbHVlIHx8ICcnKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdURVhUJzpcbiAgICAgIGNhc2UgJ1NFUVVFTkNFJzpcbiAgICAgICAgcmVzcCArPSBub2RlLnZhbHVlIHx8ICcnXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ05VTUJFUic6XG4gICAgICAgIHJlc3AgKz0gKG5vZGUudmFsdWUgfHwgMClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQVRPTSc6XG4gICAgICBjYXNlICdTRUNUSU9OJzpcbiAgICAgICAgbGV0IHZhbCA9IG5vZGUudmFsdWUgfHwgJydcblxuICAgICAgICBmb3IgKGxldCBpID0gdmFsLmNoYXJDb2RlQXQoMCkgPT09IEFTQ0lJX0JBQ0tTTEFTSCA/IDEgOiAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFJU19BVE9NX0NIQVIodmFsLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICAgICAgICB2YWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3AgKz0gdmFsXG5cbiAgICAgICAgaWYgKG5vZGUuc2VjdGlvbikge1xuICAgICAgICAgIHJlc3AgKz0gJ1snXG4gICAgICAgICAgaWYgKG5vZGUuc2VjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5lZWRzU3BhY2UgPSBmYWxzZVxuICAgICAgICAgICAgbm9kZS5zZWN0aW9uLmZvckVhY2god2FsaylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzcCArPSAnXSdcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5wYXJ0aWFsKSB7XG4gICAgICAgICAgcmVzcCArPSAnPCcgKyBub2RlLnBhcnRpYWwuam9pbignLicpICsgJz4nXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH07XG5cbiAgW10uY29uY2F0KHJlc3BvbnNlLmF0dHJpYnV0ZXMgfHwgW10pLmZvckVhY2god2FsaylcblxuICBpZiAocmVzcC5sZW5ndGgpIHtcbiAgICByZXNwUGFydHMucHVzaChyZXNwKVxuICB9XG5cbiAgcmV0dXJuIGFzQXJyYXkgPyByZXNwUGFydHMgOiByZXNwUGFydHMuam9pbignJylcbn07XG4iXX0=

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,72 +6,61 @@ Object.defineProperty(exports, "__esModule", {

});
exports.verify = exports.COMMAND = exports.TAG = exports.RESP_SPECIALS = exports.QUOTED_SPECIALS = exports.LIST_WILDCARDS = exports.ATOM_SPECIALS = exports.TEXT_CHAR = exports.ASTRING_CHAR = exports.ATOM_CHAR = exports.DIGIT = exports.ALPHA = exports.DQUOTE = exports.CTL = exports.SP = exports.CHAR8 = exports.CHAR = undefined;
var _ramda = require('ramda');
// IMAP Formal Syntax
// http://tools.ietf.org/html/rfc3501#section-9
var expandRange = function expandRange(start, end) {
return String.fromCharCode.apply(String, (0, _ramda.range)(start, end + 1));
var ASCII_NL = exports.ASCII_NL = 10;
var ASCII_CR = exports.ASCII_CR = 13;
var ASCII_SPACE = exports.ASCII_SPACE = 32;
var ASCII_DQUOTE = exports.ASCII_DQUOTE = 34; // "
var ASCII_PERCENT_SIGN = exports.ASCII_PERCENT_SIGN = 37; // %
var ASCII_LEFT_PARENTHESIS = exports.ASCII_LEFT_PARENTHESIS = 40; // (
var ASCII_RIGHT_PARENTHESIS = exports.ASCII_RIGHT_PARENTHESIS = 41; // )
var ASCII_ASTERISK = exports.ASCII_ASTERISK = 42; // *
var ASCII_PLUS = exports.ASCII_PLUS = 43; // +
var ASCII_COMMA = exports.ASCII_COMMA = 44; // ,
var ASCII_FULL_STOP = exports.ASCII_FULL_STOP = 46; // .
var ASCII_COLON = exports.ASCII_COLON = 58; // :
var ASCII_LESS_THAN_SIGN = exports.ASCII_LESS_THAN_SIGN = 60; // <
var ASCII_GREATER_THAN_SIGN = exports.ASCII_GREATER_THAN_SIGN = 62; // >
var ASCII_LEFT_BRACKET = exports.ASCII_LEFT_BRACKET = 91; // [
var ASCII_BACKSLASH = exports.ASCII_BACKSLASH = 92; //
var ASCII_RIGHT_BRACKET = exports.ASCII_RIGHT_BRACKET = 93; // ]
var ASCII_LEFT_CURLY_BRACKET = exports.ASCII_LEFT_CURLY_BRACKET = 123; // {
var ASCII_RIGHT_CURLY_BRACKET = exports.ASCII_RIGHT_CURLY_BRACKET = 125; // }
var IS_CHAR = exports.IS_CHAR = function IS_CHAR(chr) {
return chr >= 0x01 && chr <= 0x7F;
};
var excludeChars = function excludeChars(source, exclude) {
return (0, _ramda.without)(exclude.split(''), source.split('')).join('');
var IS_ATOM_CHAR = exports.IS_ATOM_CHAR = function IS_ATOM_CHAR(chr) {
return IS_CHAR(chr) && !IS_ATOM_SPECIALS(chr);
};
var CHAR = exports.CHAR = (0, _ramda.memoize)(function () {
return expandRange(0x01, 0x7F);
});
var CHAR8 = exports.CHAR8 = (0, _ramda.memoize)(function () {
return expandRange(0x01, 0xFF);
});
var SP = exports.SP = function SP() {
return ' ';
var IS_ATOM_SPECIALS = exports.IS_ATOM_SPECIALS = function IS_ATOM_SPECIALS(chr) {
return chr === ASCII_LEFT_PARENTHESIS || chr === ASCII_RIGHT_PARENTHESIS || chr === ASCII_LEFT_CURLY_BRACKET || chr === ASCII_SPACE || IS_CTL(chr) || IS_LIST_WILDCARDS(chr) || IS_QUOTED_SPECIALS(chr) || IS_RESP_SPECIALS(chr);
};
var CTL = exports.CTL = (0, _ramda.memoize)(function () {
return expandRange(0x00, 0x1F) + '\x7F';
});
var DQUOTE = exports.DQUOTE = function DQUOTE() {
return '"';
var IS_CTL = exports.IS_CTL = function IS_CTL(chr) {
return chr >= 0x00 && chr <= 0x1F || chr === 0x7F;
};
var ALPHA = exports.ALPHA = (0, _ramda.memoize)(function () {
return expandRange(0x41, 0x5A) + expandRange(0x61, 0x7A);
});
var DIGIT = exports.DIGIT = (0, _ramda.memoize)(function () {
return expandRange(0x30, 0x39) + expandRange(0x61, 0x7A);
});
var ATOM_CHAR = exports.ATOM_CHAR = (0, _ramda.memoize)(function () {
return excludeChars(CHAR(), ATOM_SPECIALS());
});
var ASTRING_CHAR = exports.ASTRING_CHAR = (0, _ramda.memoize)(function () {
return ATOM_CHAR() + RESP_SPECIALS();
});
var TEXT_CHAR = exports.TEXT_CHAR = (0, _ramda.memoize)(function () {
return excludeChars(CHAR(), '\r\n');
});
var ATOM_SPECIALS = exports.ATOM_SPECIALS = (0, _ramda.memoize)(function () {
return '(' + ')' + '{' + SP() + CTL() + LIST_WILDCARDS() + QUOTED_SPECIALS() + RESP_SPECIALS();
});
var LIST_WILDCARDS = exports.LIST_WILDCARDS = function LIST_WILDCARDS() {
return '%' + '*';
var IS_LIST_WILDCARDS = exports.IS_LIST_WILDCARDS = function IS_LIST_WILDCARDS(chr) {
return chr === ASCII_PERCENT_SIGN || chr === ASCII_ASTERISK;
};
var QUOTED_SPECIALS = exports.QUOTED_SPECIALS = (0, _ramda.memoize)(function () {
return DQUOTE() + '\\';
});
var RESP_SPECIALS = exports.RESP_SPECIALS = function RESP_SPECIALS() {
return ']';
var IS_QUOTED_SPECIALS = exports.IS_QUOTED_SPECIALS = function IS_QUOTED_SPECIALS(chr) {
return chr === ASCII_DQUOTE || chr === ASCII_BACKSLASH;
};
var TAG = exports.TAG = (0, _ramda.memoize)(function () {
return excludeChars(ASTRING_CHAR(), '+');
});
var COMMAND = exports.COMMAND = (0, _ramda.memoize)(function () {
return ALPHA() + DIGIT();
});
var verify = exports.verify = function verify(str, allowedChars) {
for (var i = 0, len = str.length; i < len; i++) {
if (allowedChars.indexOf(str.charAt(i)) < 0) {
return i;
}
}
return -1;
var IS_RESP_SPECIALS = exports.IS_RESP_SPECIALS = function IS_RESP_SPECIALS(chr) {
return chr === ASCII_RIGHT_BRACKET;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JtYWwtc3ludGF4LmpzIl0sIm5hbWVzIjpbImV4cGFuZFJhbmdlIiwic3RhcnQiLCJlbmQiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJhcHBseSIsImV4Y2x1ZGVDaGFycyIsInNvdXJjZSIsImV4Y2x1ZGUiLCJzcGxpdCIsImpvaW4iLCJDSEFSIiwiQ0hBUjgiLCJTUCIsIkNUTCIsIkRRVU9URSIsIkFMUEhBIiwiRElHSVQiLCJBVE9NX0NIQVIiLCJBVE9NX1NQRUNJQUxTIiwiQVNUUklOR19DSEFSIiwiUkVTUF9TUEVDSUFMUyIsIlRFWFRfQ0hBUiIsIkxJU1RfV0lMRENBUkRTIiwiUVVPVEVEX1NQRUNJQUxTIiwiVEFHIiwiQ09NTUFORCIsInZlcmlmeSIsInN0ciIsImFsbG93ZWRDaGFycyIsImkiLCJsZW4iLCJsZW5ndGgiLCJpbmRleE9mIiwiY2hhckF0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7QUFDQTs7QUFFQSxJQUFNQSxjQUFjLFNBQWRBLFdBQWMsQ0FBQ0MsS0FBRCxFQUFRQyxHQUFSO0FBQUEsU0FBZ0JDLE9BQU9DLFlBQVAsQ0FBb0JDLEtBQXBCLENBQTBCRixNQUExQixFQUFrQyxrQkFBTUYsS0FBTixFQUFhQyxNQUFNLENBQW5CLENBQWxDLENBQWhCO0FBQUEsQ0FBcEI7QUFDQSxJQUFNSSxlQUFlLFNBQWZBLFlBQWUsQ0FBQ0MsTUFBRCxFQUFTQyxPQUFUO0FBQUEsU0FBcUIsb0JBQVFBLFFBQVFDLEtBQVIsQ0FBYyxFQUFkLENBQVIsRUFBMkJGLE9BQU9FLEtBQVAsQ0FBYSxFQUFiLENBQTNCLEVBQTZDQyxJQUE3QyxDQUFrRCxFQUFsRCxDQUFyQjtBQUFBLENBQXJCOztBQUVPLElBQU1DLHNCQUFPLG9CQUFRO0FBQUEsU0FBTVgsWUFBWSxJQUFaLEVBQWtCLElBQWxCLENBQU47QUFBQSxDQUFSLENBQWI7QUFDQSxJQUFNWSx3QkFBUSxvQkFBUTtBQUFBLFNBQU1aLFlBQVksSUFBWixFQUFrQixJQUFsQixDQUFOO0FBQUEsQ0FBUixDQUFkO0FBQ0EsSUFBTWEsa0JBQUssU0FBTEEsRUFBSztBQUFBLFNBQU0sR0FBTjtBQUFBLENBQVg7QUFDQSxJQUFNQyxvQkFBTSxvQkFBUTtBQUFBLFNBQU1kLFlBQVksSUFBWixFQUFrQixJQUFsQixJQUEwQixNQUFoQztBQUFBLENBQVIsQ0FBWjtBQUNBLElBQU1lLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxTQUFNLEdBQU47QUFBQSxDQUFmO0FBQ0EsSUFBTUMsd0JBQVEsb0JBQVE7QUFBQSxTQUFNaEIsWUFBWSxJQUFaLEVBQWtCLElBQWxCLElBQTBCQSxZQUFZLElBQVosRUFBa0IsSUFBbEIsQ0FBaEM7QUFBQSxDQUFSLENBQWQ7QUFDQSxJQUFNaUIsd0JBQVEsb0JBQVE7QUFBQSxTQUFNakIsWUFBWSxJQUFaLEVBQWtCLElBQWxCLElBQTBCQSxZQUFZLElBQVosRUFBa0IsSUFBbEIsQ0FBaEM7QUFBQSxDQUFSLENBQWQ7QUFDQSxJQUFNa0IsZ0NBQVksb0JBQVE7QUFBQSxTQUFNWixhQUFhSyxNQUFiLEVBQXFCUSxlQUFyQixDQUFOO0FBQUEsQ0FBUixDQUFsQjtBQUNBLElBQU1DLHNDQUFlLG9CQUFRO0FBQUEsU0FBTUYsY0FBY0csZUFBcEI7QUFBQSxDQUFSLENBQXJCO0FBQ0EsSUFBTUMsZ0NBQVksb0JBQVE7QUFBQSxTQUFNaEIsYUFBYUssTUFBYixFQUFxQixNQUFyQixDQUFOO0FBQUEsQ0FBUixDQUFsQjtBQUNBLElBQU1RLHdDQUFnQixvQkFBUTtBQUFBLFNBQU0sTUFBTSxHQUFOLEdBQVksR0FBWixHQUFrQk4sSUFBbEIsR0FBeUJDLEtBQXpCLEdBQWlDUyxnQkFBakMsR0FBb0RDLGlCQUFwRCxHQUF3RUgsZUFBOUU7QUFBQSxDQUFSLENBQXRCO0FBQ0EsSUFBTUUsMENBQWlCLFNBQWpCQSxjQUFpQjtBQUFBLFNBQU0sTUFBTSxHQUFaO0FBQUEsQ0FBdkI7QUFDQSxJQUFNQyw0Q0FBa0Isb0JBQVE7QUFBQSxTQUFNVCxXQUFXLElBQWpCO0FBQUEsQ0FBUixDQUF4QjtBQUNBLElBQU1NLHdDQUFnQixTQUFoQkEsYUFBZ0I7QUFBQSxTQUFNLEdBQU47QUFBQSxDQUF0QjtBQUNBLElBQU1JLG9CQUFNLG9CQUFRO0FBQUEsU0FBTW5CLGFBQWFjLGNBQWIsRUFBNkIsR0FBN0IsQ0FBTjtBQUFBLENBQVIsQ0FBWjtBQUNBLElBQU1NLDRCQUFVLG9CQUFRO0FBQUEsU0FBTVYsVUFBVUMsT0FBaEI7QUFBQSxDQUFSLENBQWhCO0FBQ0EsSUFBTVUsMEJBQVMsU0FBVEEsTUFBUyxDQUFVQyxHQUFWLEVBQWVDLFlBQWYsRUFBNkI7QUFDakQsT0FBSyxJQUFJQyxJQUFJLENBQVIsRUFBV0MsTUFBTUgsSUFBSUksTUFBMUIsRUFBa0NGLElBQUlDLEdBQXRDLEVBQTJDRCxHQUEzQyxFQUFnRDtBQUM5QyxRQUFJRCxhQUFhSSxPQUFiLENBQXFCTCxJQUFJTSxNQUFKLENBQVdKLENBQVgsQ0FBckIsSUFBc0MsQ0FBMUMsRUFBNkM7QUFDM0MsYUFBT0EsQ0FBUDtBQUNEO0FBQ0Y7QUFDRCxTQUFPLENBQUMsQ0FBUjtBQUNELENBUE0iLCJmaWxlIjoiZm9ybWFsLXN5bnRheC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lbW9pemUsIHdpdGhvdXQsIHJhbmdlIH0gZnJvbSAncmFtZGEnXG5cbi8vIElNQVAgRm9ybWFsIFN5bnRheFxuLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzUwMSNzZWN0aW9uLTlcblxuY29uc3QgZXhwYW5kUmFuZ2UgPSAoc3RhcnQsIGVuZCkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIHJhbmdlKHN0YXJ0LCBlbmQgKyAxKSlcbmNvbnN0IGV4Y2x1ZGVDaGFycyA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHdpdGhvdXQoZXhjbHVkZS5zcGxpdCgnJyksIHNvdXJjZS5zcGxpdCgnJykpLmpvaW4oJycpXG5cbmV4cG9ydCBjb25zdCBDSEFSID0gbWVtb2l6ZSgoKSA9PiBleHBhbmRSYW5nZSgweDAxLCAweDdGKSlcbmV4cG9ydCBjb25zdCBDSEFSOCA9IG1lbW9pemUoKCkgPT4gZXhwYW5kUmFuZ2UoMHgwMSwgMHhGRikpXG5leHBvcnQgY29uc3QgU1AgPSAoKSA9PiAnICdcbmV4cG9ydCBjb25zdCBDVEwgPSBtZW1vaXplKCgpID0+IGV4cGFuZFJhbmdlKDB4MDAsIDB4MUYpICsgJ1xceDdGJylcbmV4cG9ydCBjb25zdCBEUVVPVEUgPSAoKSA9PiAnXCInXG5leHBvcnQgY29uc3QgQUxQSEEgPSBtZW1vaXplKCgpID0+IGV4cGFuZFJhbmdlKDB4NDEsIDB4NUEpICsgZXhwYW5kUmFuZ2UoMHg2MSwgMHg3QSkpXG5leHBvcnQgY29uc3QgRElHSVQgPSBtZW1vaXplKCgpID0+IGV4cGFuZFJhbmdlKDB4MzAsIDB4MzkpICsgZXhwYW5kUmFuZ2UoMHg2MSwgMHg3QSkpXG5leHBvcnQgY29uc3QgQVRPTV9DSEFSID0gbWVtb2l6ZSgoKSA9PiBleGNsdWRlQ2hhcnMoQ0hBUigpLCBBVE9NX1NQRUNJQUxTKCkpKVxuZXhwb3J0IGNvbnN0IEFTVFJJTkdfQ0hBUiA9IG1lbW9pemUoKCkgPT4gQVRPTV9DSEFSKCkgKyBSRVNQX1NQRUNJQUxTKCkpXG5leHBvcnQgY29uc3QgVEVYVF9DSEFSID0gbWVtb2l6ZSgoKSA9PiBleGNsdWRlQ2hhcnMoQ0hBUigpLCAnXFxyXFxuJykpXG5leHBvcnQgY29uc3QgQVRPTV9TUEVDSUFMUyA9IG1lbW9pemUoKCkgPT4gJygnICsgJyknICsgJ3snICsgU1AoKSArIENUTCgpICsgTElTVF9XSUxEQ0FSRFMoKSArIFFVT1RFRF9TUEVDSUFMUygpICsgUkVTUF9TUEVDSUFMUygpKVxuZXhwb3J0IGNvbnN0IExJU1RfV0lMRENBUkRTID0gKCkgPT4gJyUnICsgJyonXG5leHBvcnQgY29uc3QgUVVPVEVEX1NQRUNJQUxTID0gbWVtb2l6ZSgoKSA9PiBEUVVPVEUoKSArICdcXFxcJylcbmV4cG9ydCBjb25zdCBSRVNQX1NQRUNJQUxTID0gKCkgPT4gJ10nXG5leHBvcnQgY29uc3QgVEFHID0gbWVtb2l6ZSgoKSA9PiBleGNsdWRlQ2hhcnMoQVNUUklOR19DSEFSKCksICcrJykpXG5leHBvcnQgY29uc3QgQ09NTUFORCA9IG1lbW9pemUoKCkgPT4gQUxQSEEoKSArIERJR0lUKCkpXG5leHBvcnQgY29uc3QgdmVyaWZ5ID0gZnVuY3Rpb24gKHN0ciwgYWxsb3dlZENoYXJzKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYWxsb3dlZENoYXJzLmluZGV4T2Yoc3RyLmNoYXJBdChpKSkgPCAwKSB7XG4gICAgICByZXR1cm4gaVxuICAgIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cbiJdfQ==
var IS_DIGIT = exports.IS_DIGIT = function IS_DIGIT(chr) {
return chr >= 0x30 && chr <= 0x39;
};
var IS_ALPHA = exports.IS_ALPHA = function IS_ALPHA(chr) {
return chr >= 0x41 && chr <= 0x5A || chr >= 0x61 && chr <= 0x7A;
};
var IS_COMMAND = exports.IS_COMMAND = function IS_COMMAND(chr) {
return IS_ALPHA(chr) || IS_DIGIT(chr);
};
var IS_TAG = exports.IS_TAG = function IS_TAG(chr) {
return IS_ASTRING_CHAR(chr) && chr !== ASCII_PLUS;
};
var IS_ASTRING_CHAR = exports.IS_ASTRING_CHAR = function IS_ASTRING_CHAR(chr) {
return IS_ATOM_CHAR(chr) || IS_RESP_SPECIALS(chr);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JtYWwtc3ludGF4LmpzIl0sIm5hbWVzIjpbIkFTQ0lJX05MIiwiQVNDSUlfQ1IiLCJBU0NJSV9TUEFDRSIsIkFTQ0lJX0RRVU9URSIsIkFTQ0lJX1BFUkNFTlRfU0lHTiIsIkFTQ0lJX0xFRlRfUEFSRU5USEVTSVMiLCJBU0NJSV9SSUdIVF9QQVJFTlRIRVNJUyIsIkFTQ0lJX0FTVEVSSVNLIiwiQVNDSUlfUExVUyIsIkFTQ0lJX0NPTU1BIiwiQVNDSUlfRlVMTF9TVE9QIiwiQVNDSUlfQ09MT04iLCJBU0NJSV9MRVNTX1RIQU5fU0lHTiIsIkFTQ0lJX0dSRUFURVJfVEhBTl9TSUdOIiwiQVNDSUlfTEVGVF9CUkFDS0VUIiwiQVNDSUlfQkFDS1NMQVNIIiwiQVNDSUlfUklHSFRfQlJBQ0tFVCIsIkFTQ0lJX0xFRlRfQ1VSTFlfQlJBQ0tFVCIsIkFTQ0lJX1JJR0hUX0NVUkxZX0JSQUNLRVQiLCJJU19DSEFSIiwiY2hyIiwiSVNfQVRPTV9DSEFSIiwiSVNfQVRPTV9TUEVDSUFMUyIsIklTX0NUTCIsIklTX0xJU1RfV0lMRENBUkRTIiwiSVNfUVVPVEVEX1NQRUNJQUxTIiwiSVNfUkVTUF9TUEVDSUFMUyIsIklTX0RJR0lUIiwiSVNfQUxQSEEiLCJJU19DT01NQU5EIiwiSVNfVEFHIiwiSVNfQVNUUklOR19DSEFSIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7O0FBRU8sSUFBTUEsOEJBQVcsRUFBakI7QUFDQSxJQUFNQyw4QkFBVyxFQUFqQjtBQUNBLElBQU1DLG9DQUFjLEVBQXBCO0FBQ0EsSUFBTUMsc0NBQWUsRUFBckIsQyxDQUF3QjtBQUN4QixJQUFNQyxrREFBcUIsRUFBM0IsQyxDQUE4QjtBQUM5QixJQUFNQywwREFBeUIsRUFBL0IsQyxDQUFrQztBQUNsQyxJQUFNQyw0REFBMEIsRUFBaEMsQyxDQUFtQztBQUNuQyxJQUFNQywwQ0FBaUIsRUFBdkIsQyxDQUEwQjtBQUMxQixJQUFNQyxrQ0FBYSxFQUFuQixDLENBQXNCO0FBQ3RCLElBQU1DLG9DQUFjLEVBQXBCLEMsQ0FBdUI7QUFDdkIsSUFBTUMsNENBQWtCLEVBQXhCLEMsQ0FBMkI7QUFDM0IsSUFBTUMsb0NBQWMsRUFBcEIsQyxDQUF1QjtBQUN2QixJQUFNQyxzREFBdUIsRUFBN0IsQyxDQUFnQztBQUNoQyxJQUFNQyw0REFBMEIsRUFBaEMsQyxDQUFtQztBQUNuQyxJQUFNQyxrREFBcUIsRUFBM0IsQyxDQUE4QjtBQUM5QixJQUFNQyw0Q0FBa0IsRUFBeEIsQyxDQUEyQjtBQUMzQixJQUFNQyxvREFBc0IsRUFBNUIsQyxDQUErQjtBQUMvQixJQUFNQyw4REFBMkIsR0FBakMsQyxDQUFxQztBQUNyQyxJQUFNQyxnRUFBNEIsR0FBbEMsQyxDQUFzQzs7QUFFdEMsSUFBTUMsNEJBQVUsU0FBVkEsT0FBVSxDQUFDQyxHQUFEO0FBQUEsU0FBU0EsT0FBTyxJQUFQLElBQWVBLE9BQU8sSUFBL0I7QUFBQSxDQUFoQjtBQUNBLElBQU1DLHNDQUFlLFNBQWZBLFlBQWUsQ0FBQ0QsR0FBRDtBQUFBLFNBQVNELFFBQVFDLEdBQVIsS0FBZ0IsQ0FBQ0UsaUJBQWlCRixHQUFqQixDQUExQjtBQUFBLENBQXJCO0FBQ0EsSUFBTUUsOENBQW1CLFNBQW5CQSxnQkFBbUIsQ0FBQ0YsR0FBRDtBQUFBLFNBQVNBLFFBQVFmLHNCQUFSLElBQ3ZDZSxRQUFRZCx1QkFEK0IsSUFFdkNjLFFBQVFILHdCQUYrQixJQUd2Q0csUUFBUWxCLFdBSCtCLElBSXZDcUIsT0FBT0gsR0FBUCxDQUp1QyxJQUt2Q0ksa0JBQWtCSixHQUFsQixDQUx1QyxJQU12Q0ssbUJBQW1CTCxHQUFuQixDQU51QyxJQU92Q00saUJBQWlCTixHQUFqQixDQVA4QjtBQUFBLENBQXpCO0FBUUEsSUFBTUcsMEJBQVMsU0FBVEEsTUFBUyxDQUFDSCxHQUFEO0FBQUEsU0FBVUEsT0FBTyxJQUFQLElBQWVBLE9BQU8sSUFBdkIsSUFBZ0NBLFFBQVEsSUFBakQ7QUFBQSxDQUFmO0FBQ0EsSUFBTUksZ0RBQW9CLFNBQXBCQSxpQkFBb0IsQ0FBQ0osR0FBRDtBQUFBLFNBQVNBLFFBQVFoQixrQkFBUixJQUE4QmdCLFFBQVFiLGNBQS9DO0FBQUEsQ0FBMUI7QUFDQSxJQUFNa0Isa0RBQXFCLFNBQXJCQSxrQkFBcUIsQ0FBQ0wsR0FBRDtBQUFBLFNBQVNBLFFBQVFqQixZQUFSLElBQXdCaUIsUUFBUUwsZUFBekM7QUFBQSxDQUEzQjtBQUNBLElBQU1XLDhDQUFtQixTQUFuQkEsZ0JBQW1CLENBQUNOLEdBQUQ7QUFBQSxTQUFTQSxRQUFRSixtQkFBakI7QUFBQSxDQUF6QjtBQUNBLElBQU1XLDhCQUFXLFNBQVhBLFFBQVcsQ0FBQ1AsR0FBRDtBQUFBLFNBQVNBLE9BQU8sSUFBUCxJQUFlQSxPQUFPLElBQS9CO0FBQUEsQ0FBakI7QUFDQSxJQUFNUSw4QkFBVyxTQUFYQSxRQUFXLENBQUNSLEdBQUQ7QUFBQSxTQUFVQSxPQUFPLElBQVAsSUFBZUEsT0FBTyxJQUF2QixJQUFpQ0EsT0FBTyxJQUFQLElBQWVBLE9BQU8sSUFBaEU7QUFBQSxDQUFqQjtBQUNBLElBQU1TLGtDQUFhLFNBQWJBLFVBQWEsQ0FBQ1QsR0FBRDtBQUFBLFNBQVNRLFNBQVNSLEdBQVQsS0FBaUJPLFNBQVNQLEdBQVQsQ0FBMUI7QUFBQSxDQUFuQjtBQUNBLElBQU1VLDBCQUFTLFNBQVRBLE1BQVMsQ0FBQ1YsR0FBRDtBQUFBLFNBQVNXLGdCQUFnQlgsR0FBaEIsS0FBd0JBLFFBQVFaLFVBQXpDO0FBQUEsQ0FBZjtBQUNBLElBQU11Qiw0Q0FBa0IsU0FBbEJBLGVBQWtCLENBQUNYLEdBQUQ7QUFBQSxTQUFTQyxhQUFhRCxHQUFiLEtBQXFCTSxpQkFBaUJOLEdBQWpCLENBQTlCO0FBQUEsQ0FBeEIiLCJmaWxlIjoiZm9ybWFsLXN5bnRheC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIElNQVAgRm9ybWFsIFN5bnRheFxuLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzUwMSNzZWN0aW9uLTlcblxuZXhwb3J0IGNvbnN0IEFTQ0lJX05MID0gMTBcbmV4cG9ydCBjb25zdCBBU0NJSV9DUiA9IDEzXG5leHBvcnQgY29uc3QgQVNDSUlfU1BBQ0UgPSAzMlxuZXhwb3J0IGNvbnN0IEFTQ0lJX0RRVU9URSA9IDM0IC8vIFwiXG5leHBvcnQgY29uc3QgQVNDSUlfUEVSQ0VOVF9TSUdOID0gMzcgLy8gJVxuZXhwb3J0IGNvbnN0IEFTQ0lJX0xFRlRfUEFSRU5USEVTSVMgPSA0MCAvLyAoXG5leHBvcnQgY29uc3QgQVNDSUlfUklHSFRfUEFSRU5USEVTSVMgPSA0MSAvLyApXG5leHBvcnQgY29uc3QgQVNDSUlfQVNURVJJU0sgPSA0MiAvLyAqXG5leHBvcnQgY29uc3QgQVNDSUlfUExVUyA9IDQzIC8vICtcbmV4cG9ydCBjb25zdCBBU0NJSV9DT01NQSA9IDQ0IC8vICxcbmV4cG9ydCBjb25zdCBBU0NJSV9GVUxMX1NUT1AgPSA0NiAvLyAuXG5leHBvcnQgY29uc3QgQVNDSUlfQ09MT04gPSA1OCAvLyA6XG5leHBvcnQgY29uc3QgQVNDSUlfTEVTU19USEFOX1NJR04gPSA2MCAvLyA8XG5leHBvcnQgY29uc3QgQVNDSUlfR1JFQVRFUl9USEFOX1NJR04gPSA2MiAvLyA+XG5leHBvcnQgY29uc3QgQVNDSUlfTEVGVF9CUkFDS0VUID0gOTEgLy8gW1xuZXhwb3J0IGNvbnN0IEFTQ0lJX0JBQ0tTTEFTSCA9IDkyIC8vXG5leHBvcnQgY29uc3QgQVNDSUlfUklHSFRfQlJBQ0tFVCA9IDkzIC8vIF1cbmV4cG9ydCBjb25zdCBBU0NJSV9MRUZUX0NVUkxZX0JSQUNLRVQgPSAxMjMgLy8ge1xuZXhwb3J0IGNvbnN0IEFTQ0lJX1JJR0hUX0NVUkxZX0JSQUNLRVQgPSAxMjUgLy8gfVxuXG5leHBvcnQgY29uc3QgSVNfQ0hBUiA9IChjaHIpID0+IGNociA+PSAweDAxICYmIGNociA8PSAweDdGXG5leHBvcnQgY29uc3QgSVNfQVRPTV9DSEFSID0gKGNocikgPT4gSVNfQ0hBUihjaHIpICYmICFJU19BVE9NX1NQRUNJQUxTKGNocilcbmV4cG9ydCBjb25zdCBJU19BVE9NX1NQRUNJQUxTID0gKGNocikgPT4gY2hyID09PSBBU0NJSV9MRUZUX1BBUkVOVEhFU0lTIHx8XG4gIGNociA9PT0gQVNDSUlfUklHSFRfUEFSRU5USEVTSVMgfHxcbiAgY2hyID09PSBBU0NJSV9MRUZUX0NVUkxZX0JSQUNLRVQgfHxcbiAgY2hyID09PSBBU0NJSV9TUEFDRSB8fFxuICBJU19DVEwoY2hyKSB8fFxuICBJU19MSVNUX1dJTERDQVJEUyhjaHIpIHx8XG4gIElTX1FVT1RFRF9TUEVDSUFMUyhjaHIpIHx8XG4gIElTX1JFU1BfU1BFQ0lBTFMoY2hyKVxuZXhwb3J0IGNvbnN0IElTX0NUTCA9IChjaHIpID0+IChjaHIgPj0gMHgwMCAmJiBjaHIgPD0gMHgxRikgfHwgY2hyID09PSAweDdGXG5leHBvcnQgY29uc3QgSVNfTElTVF9XSUxEQ0FSRFMgPSAoY2hyKSA9PiBjaHIgPT09IEFTQ0lJX1BFUkNFTlRfU0lHTiB8fCBjaHIgPT09IEFTQ0lJX0FTVEVSSVNLXG5leHBvcnQgY29uc3QgSVNfUVVPVEVEX1NQRUNJQUxTID0gKGNocikgPT4gY2hyID09PSBBU0NJSV9EUVVPVEUgfHwgY2hyID09PSBBU0NJSV9CQUNLU0xBU0hcbmV4cG9ydCBjb25zdCBJU19SRVNQX1NQRUNJQUxTID0gKGNocikgPT4gY2hyID09PSBBU0NJSV9SSUdIVF9CUkFDS0VUXG5leHBvcnQgY29uc3QgSVNfRElHSVQgPSAoY2hyKSA9PiBjaHIgPj0gMHgzMCAmJiBjaHIgPD0gMHgzOVxuZXhwb3J0IGNvbnN0IElTX0FMUEhBID0gKGNocikgPT4gKGNociA+PSAweDQxICYmIGNociA8PSAweDVBKSB8fCAoY2hyID49IDB4NjEgJiYgY2hyIDw9IDB4N0EpXG5leHBvcnQgY29uc3QgSVNfQ09NTUFORCA9IChjaHIpID0+IElTX0FMUEhBKGNocikgfHwgSVNfRElHSVQoY2hyKVxuZXhwb3J0IGNvbnN0IElTX1RBRyA9IChjaHIpID0+IElTX0FTVFJJTkdfQ0hBUihjaHIpICYmIGNociAhPT0gQVNDSUlfUExVU1xuZXhwb3J0IGNvbnN0IElTX0FTVFJJTkdfQ0hBUiA9IChjaHIpID0+IElTX0FUT01fQ0hBUihjaHIpIHx8IElTX1JFU1BfU1BFQ0lBTFMoY2hyKVxuIl19

@@ -38,9 +38,9 @@ export default {

},
null, {
type: 'STRING',
value: 'andris'
}, {
type: 'STRING',
value: 'ekiri.ee'
}
null, {
type: 'STRING',
value: 'andris'
}, {
type: 'STRING',
value: 'ekiri.ee'
}
]

@@ -53,9 +53,9 @@ ],

},
null, {
type: 'STRING',
value: 'andris'
}, {
type: 'STRING',
value: 'ekiri.ee'
}
null, {
type: 'STRING',
value: 'andris'
}, {
type: 'STRING',
value: 'ekiri.ee'
}
]

@@ -68,9 +68,9 @@ ],

},
null, {
type: 'STRING',
value: 'andris'
}, {
type: 'STRING',
value: 'ekiri.ee'
}
null, {
type: 'STRING',
value: 'andris'
}, {
type: 'STRING',
value: 'ekiri.ee'
}
]

@@ -89,8 +89,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066976914.4721.5.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066976914.4721.5.camel@localhost>'
}
], {

@@ -115,17 +115,17 @@ type: 'ATOM',

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '617'
}, {
type: 'ATOM',
value: '16'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '617'
}, {
type: 'ATOM',
value: '16'
},
null,
null,
null,
null
],

@@ -139,13 +139,13 @@ [{

},
null,
null, {
type: 'STRING',
value: 'I\'ll be whatever I wanna do. --Fry'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '582'
},
null,
null, {
type: 'STRING',
value: 'I\'ll be whatever I wanna do. --Fry'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '582'
},
[{

@@ -163,9 +163,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -178,9 +178,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -193,9 +193,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -214,8 +214,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066973156.4264.42.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066973156.4264.42.camel@localhost>'
}
],

@@ -236,17 +236,17 @@ [{

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '311'
}, {
type: 'ATOM',
value: '9'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '311'
}, {
type: 'ATOM',
value: '9'
},
null,
null,
null,
null
], {

@@ -256,11 +256,11 @@ type: 'ATOM',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -273,13 +273,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Would you kindly shut your noise-hole? --Bender'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1460'
},
null,
null, {
type: 'STRING',
value: 'Would you kindly shut your noise-hole? --Bender'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1460'
},
[{

@@ -297,9 +297,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -312,9 +312,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -327,9 +327,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -348,8 +348,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066976111.4263.74.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066976111.4263.74.camel@localhost>'
}
],

@@ -371,17 +371,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '193'
}, {
type: 'ATOM',
value: '3'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '193'
}, {
type: 'ATOM',
value: '3'
},
null,
null,
null,
null
],

@@ -395,13 +395,13 @@ [{

},
null,
null, {
type: 'STRING',
value: 'At the risk of sounding negative, no. --Leela'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '697'
},
null,
null, {
type: 'STRING',
value: 'At the risk of sounding negative, no. --Leela'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '697'
},
[{

@@ -419,9 +419,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -434,9 +434,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -449,9 +449,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -470,8 +470,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066975745.4263.70.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066975745.4263.70.camel@localhost>'
}
],

@@ -493,17 +493,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '78'
}, {
type: 'ATOM',
value: '3'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '78'
}, {
type: 'ATOM',
value: '3'
},
null,
null,
null,
null
],

@@ -524,24 +524,24 @@ [{

}],
null,
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '58'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'foo.gz'
}]
],
null,
null
null,
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '58'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'foo.gz'
}]
],
null,
null
], {

@@ -565,10 +565,10 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
], {

@@ -592,11 +592,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -609,13 +609,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Dirt doesn\'t need luck! --Professor'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '817'
},
null,
null, {
type: 'STRING',
value: 'Dirt doesn\'t need luck! --Professor'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '817'
},
[{

@@ -633,9 +633,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -648,9 +648,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -663,9 +663,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -684,8 +684,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066974048.4264.62.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066974048.4264.62.camel@localhost>'
}
],

@@ -706,26 +706,26 @@ [{

}],
null, {
type: 'STRING',
value: 'Attachment has identical content to above foo.gz'
}, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '396'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'blah.gz'
}]
],
null,
null
null, {
type: 'STRING',
value: 'Attachment has identical content to above foo.gz'
}, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '396'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'blah.gz'
}]
],
null,
null
], {

@@ -735,11 +735,11 @@ type: 'ATOM',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -752,13 +752,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Hold still, I don\'t have good depth perception! --Leela'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1045'
},
null,
null, {
type: 'STRING',
value: 'Hold still, I don\'t have good depth perception! --Leela'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1045'
},
[{

@@ -776,9 +776,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -791,9 +791,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -806,9 +806,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -827,8 +827,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066975756.4263.70.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066975756.4263.70.camel@localhost>'
}
],

@@ -850,17 +850,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '377'
}, {
type: 'ATOM',
value: '6'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '377'
}, {
type: 'ATOM',
value: '6'
},
null,
null,
null,
null
],

@@ -881,26 +881,26 @@ [{

}],
null, {
type: 'STRING',
value: 'filename is blah1.gz, name is blah2.gz'
}, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '58'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'blah1.gz'
}]
],
null,
null
null, {
type: 'STRING',
value: 'filename is blah1.gz, name is blah2.gz'
}, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '58'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'blah1.gz'
}]
],
null,
null
], {

@@ -924,11 +924,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -941,13 +941,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Hello little man. I WILL DESTROY YOU! --Moro'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1149'
},
null,
null, {
type: 'STRING',
value: 'Hello little man. I WILL DESTROY YOU! --Moro'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1149'
},
[{

@@ -965,9 +965,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -980,9 +980,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -995,9 +995,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1016,8 +1016,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066975761.4263.70.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066975761.4263.70.camel@localhost>'
}
],

@@ -1039,17 +1039,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '517'
}, {
type: 'ATOM',
value: '10'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '517'
}, {
type: 'ATOM',
value: '10'
},
null,
null,
null,
null
],

@@ -1063,21 +1063,21 @@ [{

},
null,
null, {
type: 'STRING',
value: 'I\'m getting sick of witty things to say'
}, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '58'
},
null, [{
type: 'STRING',
value: 'attachment'
},
null
],
null,
null
null,
null, {
type: 'STRING',
value: 'I\'m getting sick of witty things to say'
}, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '58'
},
null, [{
type: 'STRING',
value: 'attachment'
},
null
],
null,
null
], {

@@ -1101,11 +1101,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -1118,13 +1118,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Friends! Help! A guinea pig tricked me! --Zoidberg'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '896'
},
null,
null, {
type: 'STRING',
value: 'Friends! Help! A guinea pig tricked me! --Zoidberg'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '896'
},
[{

@@ -1142,9 +1142,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1157,9 +1157,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1172,9 +1172,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1193,8 +1193,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066974044.4264.62.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066974044.4264.62.camel@localhost>'
}
],

@@ -1216,17 +1216,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '327'
}, {
type: 'ATOM',
value: '11'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '327'
}, {
type: 'ATOM',
value: '11'
},
null,
null,
null,
null
],

@@ -1247,17 +1247,17 @@ [{

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '61'
}, {
type: 'ATOM',
value: '2'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '61'
}, {
type: 'ATOM',
value: '2'
},
null,
null,
null,
null
], {

@@ -1281,11 +1281,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -1298,13 +1298,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Smeesh! --Amy'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '642'
},
null,
null, {
type: 'STRING',
value: 'Smeesh! --Amy'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '642'
},
[{

@@ -1322,9 +1322,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1337,9 +1337,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1352,9 +1352,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1373,8 +1373,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066974089.4265.64.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066974089.4265.64.camel@localhost>'
}
],

@@ -1396,17 +1396,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '62'
}, {
type: 'ATOM',
value: '2'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '62'
}, {
type: 'ATOM',
value: '2'
},
null,
null,
null,
null
],

@@ -1427,17 +1427,17 @@ [{

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '68'
}, {
type: 'ATOM',
value: '2'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '68'
}, {
type: 'ATOM',
value: '2'
},
null,
null,
null,
null
], {

@@ -1461,11 +1461,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -1478,13 +1478,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'That\'s not a cigar. Uh... and it\'s not mine. --Hermes'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1515'
},
null,
null, {
type: 'STRING',
value: 'That\'s not a cigar. Uh... and it\'s not mine. --Hermes'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '1515'
},
[{

@@ -1502,9 +1502,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1517,9 +1517,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1532,9 +1532,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1553,8 +1553,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066973957.4263.59.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066973957.4263.59.camel@localhost>'
}
],

@@ -1576,17 +1576,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '824'
}, {
type: 'ATOM',
value: '22'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '824'
}, {
type: 'ATOM',
value: '22'
},
null,
null,
null,
null
],

@@ -1613,27 +1613,27 @@ [{

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '118'
}, {
type: 'ATOM',
value: '6'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'htmlfile.html'
}]
],
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '118'
}, {
type: 'ATOM',
value: '6'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'htmlfile.html'
}]
],
null,
null
], {

@@ -1657,11 +1657,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -1674,16 +1674,16 @@ type: 'STRING',

},
null,
null, {
type: 'LITERAL',
value: 'The spirit is willing, but the flesh is spongy, and\r\n bruised. --Zap'
}, {
type: 'ATOM',
value: 'p'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '6643'
},
null,
null, {
type: 'LITERAL',
value: 'The spirit is willing, but the flesh is spongy, and\r\n bruised. --Zap'
}, {
type: 'ATOM',
value: 'p'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '6643'
},
[{

@@ -1701,9 +1701,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1716,9 +1716,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1731,9 +1731,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -1752,8 +1752,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066972996.4264.39.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066972996.4264.39.camel@localhost>'
}
],

@@ -1778,17 +1778,17 @@ [

}],
null,
null, {
type: 'STRING',
value: 'quoted-printable'
}, {
type: 'ATOM',
value: '1606'
}, {
type: 'ATOM',
value: '42'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: 'quoted-printable'
}, {
type: 'ATOM',
value: '1606'
}, {
type: 'ATOM',
value: '42'
},
null,
null,
null,
null
],

@@ -1809,17 +1809,17 @@ [{

}],
null,
null, {
type: 'STRING',
value: 'quoted-printable'
}, {
type: 'ATOM',
value: '2128'
}, {
type: 'ATOM',
value: '54'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: 'quoted-printable'
}, {
type: 'ATOM',
value: '2128'
}, {
type: 'ATOM',
value: '54'
},
null,
null,
null,
null
], {

@@ -1857,23 +1857,23 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '1122'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'smiley-3.png'
}]
],
null,
null
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '1122'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'smiley-3.png'
}]
],
null,
null
], {

@@ -1914,24 +1914,24 @@ type: 'STRING',

}],
null,
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '96'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'dot.gif'
}]
],
null,
null
null,
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '96'
},
null, [{
type: 'STRING',
value: 'attachment'
},
[{
type: 'STRING',
value: 'filename'
}, {
type: 'STRING',
value: 'dot.gif'
}]
],
null,
null
], {

@@ -1966,16 +1966,16 @@ type: 'STRING',

}],
null, {
type: 'STRING',
value: 'This is a digitally signed message part'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '196'
},
null,
null,
null,
null
null, {
type: 'STRING',
value: 'This is a digitally signed message part'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '196'
},
null,
null,
null,
null
], {

@@ -2011,11 +2011,11 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
],
[{

@@ -2028,13 +2028,13 @@ type: 'STRING',

},
null,
null, {
type: 'STRING',
value: 'Kittens give Morbo gas. --Morbo'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '3088'
},
null,
null, {
type: 'STRING',
value: 'Kittens give Morbo gas. --Morbo'
}, {
type: 'STRING',
value: '7bit'
}, {
type: 'ATOM',
value: '3088'
},
[{

@@ -2052,9 +2052,9 @@ type: 'STRING',

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -2067,9 +2067,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -2082,9 +2082,9 @@ ],

},
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
null, {
type: 'STRING',
value: 'rfinnie'
}, {
type: 'STRING',
value: 'domain.dom'
}
]

@@ -2103,8 +2103,8 @@ ],

],
null,
null,
null, {
type: 'STRING',
value: '<1066973557.4265.51.camel@localhost>'
}
null,
null,
null, {
type: 'STRING',
value: '<1066973557.4265.51.camel@localhost>'
}
],

@@ -2126,17 +2126,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '863'
}, {
type: 'ATOM',
value: '22'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '863'
}, {
type: 'ATOM',
value: '22'
},
null,
null,
null,
null
],

@@ -2158,17 +2158,17 @@ [

}],
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '1258'
}, {
type: 'ATOM',
value: '22'
},
null,
null,
null,
null
null,
null, {
type: 'STRING',
value: '8bit'
}, {
type: 'ATOM',
value: '1258'
}, {
type: 'ATOM',
value: '22'
},
null,
null,
null,
null
],

@@ -2182,17 +2182,17 @@ [{

},
null, {
type: 'STRING',
value: '<1066973340.4232.46.camel@localhost>'
},
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '116'
},
null,
null,
null,
null
null, {
type: 'STRING',
value: '<1066973340.4232.46.camel@localhost>'
},
null, {
type: 'STRING',
value: 'base64'
}, {
type: 'ATOM',
value: '116'
},
null,
null,
null,
null
], {

@@ -2236,10 +2236,10 @@ type: 'STRING',

},
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
null, [{
type: 'STRING',
value: 'inline'
},
null
],
null,
null
], {

@@ -2246,0 +2246,0 @@ type: 'STRING',

{
"name": "emailjs-imap-handler",
"version": "3.0.2",
"version": "3.0.3",
"homepage": "https://github.com/emailjs/emailjs-imap-handler",

@@ -15,4 +15,4 @@ "author": "Andris Reinman <andris@kreata.ee>",

"build": "./scripts/build.sh",
"release": "./scripts/release.sh",
"lint": "$(npm bin)/standard",
"preversion": "npm run build",
"test": "npm run lint && npm run unit",

@@ -26,5 +26,3 @@ "unit": "$(npm bin)/mocha './src/*-unit.js' --reporter spec --require babel-register testutils.js",

},
"dependencies": {
"ramda": "^0.25.0"
},
"dependencies": {},
"devDependencies": {

@@ -34,7 +32,7 @@ "babel-cli": "^6.26.0",

"babel-register": "^6.26.0",
"chai": "^4.1.2",
"mocha": "^4.0.1",
"nodemon": "^1.12.1",
"chai": "^4.2.0",
"mocha": "^6.1.4",
"nodemon": "^1.19.1",
"pre-commit": "^1.2.2",
"standard": "^10.0.3"
"standard": "^12.0.1"
},

@@ -41,0 +39,0 @@ "standard": {

# IMAP Handler
## HELP WANTED
Felix is not actively maintaining this library anymore. But this is the only IMAP client for JS that I am aware of, so I feel this library still has its value. Please let me know if you're interested in helping out, either via email or open an issue about that.
The work that's on the horizon is:
* Adding features as per requests
* Stay up to date with developments in the IMAP protocol
* Maintenance of the other related emailjs libraries
* Maintenance and update of [emailjs.org](https://emailjs.org)
[![Greenkeeper badge](https://badges.greenkeeper.io/emailjs/emailjs-imap-handler.svg)](https://greenkeeper.io/) [![Build Status](https://travis-ci.org/emailjs/emailjs-imap-handler.png?branch=master)](https://travis-ci.org/emailjs/emailjs-imap-handler) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![ES6+](https://camo.githubusercontent.com/567e52200713e0f0c05a5238d91e1d096292b338/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f65732d362b2d627269676874677265656e2e737667)](https://kangax.github.io/compat-table/es6/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

@@ -32,2 +43,3 @@

* **valueAsString** LITERAL and STRING values are returned as strings rather than Uint8Array objects. Defaults to true.
* **literalPlus** LITERAL+ allows the alternate form of literals in all IMAP commands (see: https://tools.ietf.org/html/rfc7888#section-4)

@@ -34,0 +46,0 @@ The function returns an object in the following form:

@@ -98,3 +98,3 @@ import compiler from './compiler'

},
'Vana kere'
'Vana kere'
]

@@ -110,3 +110,3 @@

},
'Vana kere'
'Vana kere'
]

@@ -123,3 +123,3 @@

},
'Vana kere'
'Vana kere'
]

@@ -135,3 +135,3 @@

},
'Vana kere'
'Vana kere'
]

@@ -167,3 +167,3 @@

},
'Vana kere'
'Vana kere'
]

@@ -201,3 +201,3 @@ }

},
'zzz'
'zzz'
]

@@ -229,3 +229,3 @@ }

},
'Vana kere'
'Vana kere'
]

@@ -232,0 +232,0 @@ }

@@ -1,2 +0,5 @@

import { ATOM_CHAR, verify } from './formal-syntax'
import {
ASCII_BACKSLASH,
IS_ATOM_CHAR
} from './formal-syntax'

@@ -85,4 +88,7 @@ /**

if (verify(val.charAt(0) === '\\' ? val.substr(1) : val, ATOM_CHAR()) >= 0) {
val = JSON.stringify(val)
for (let i = val.charCodeAt(0) === ASCII_BACKSLASH ? 1 : 0; i < val.length; i++) {
if (!IS_ATOM_CHAR(val.charCodeAt(i))) {
val = JSON.stringify(val)
break
}
}

@@ -89,0 +95,0 @@

@@ -1,32 +0,42 @@

import { memoize, without, range } from 'ramda'
// IMAP Formal Syntax
// http://tools.ietf.org/html/rfc3501#section-9
const expandRange = (start, end) => String.fromCharCode.apply(String, range(start, end + 1))
const excludeChars = (source, exclude) => without(exclude.split(''), source.split('')).join('')
export const ASCII_NL = 10
export const ASCII_CR = 13
export const ASCII_SPACE = 32
export const ASCII_DQUOTE = 34 // "
export const ASCII_PERCENT_SIGN = 37 // %
export const ASCII_LEFT_PARENTHESIS = 40 // (
export const ASCII_RIGHT_PARENTHESIS = 41 // )
export const ASCII_ASTERISK = 42 // *
export const ASCII_PLUS = 43 // +
export const ASCII_COMMA = 44 // ,
export const ASCII_FULL_STOP = 46 // .
export const ASCII_COLON = 58 // :
export const ASCII_LESS_THAN_SIGN = 60 // <
export const ASCII_GREATER_THAN_SIGN = 62 // >
export const ASCII_LEFT_BRACKET = 91 // [
export const ASCII_BACKSLASH = 92 //
export const ASCII_RIGHT_BRACKET = 93 // ]
export const ASCII_LEFT_CURLY_BRACKET = 123 // {
export const ASCII_RIGHT_CURLY_BRACKET = 125 // }
export const CHAR = memoize(() => expandRange(0x01, 0x7F))
export const CHAR8 = memoize(() => expandRange(0x01, 0xFF))
export const SP = () => ' '
export const CTL = memoize(() => expandRange(0x00, 0x1F) + '\x7F')
export const DQUOTE = () => '"'
export const ALPHA = memoize(() => expandRange(0x41, 0x5A) + expandRange(0x61, 0x7A))
export const DIGIT = memoize(() => expandRange(0x30, 0x39) + expandRange(0x61, 0x7A))
export const ATOM_CHAR = memoize(() => excludeChars(CHAR(), ATOM_SPECIALS()))
export const ASTRING_CHAR = memoize(() => ATOM_CHAR() + RESP_SPECIALS())
export const TEXT_CHAR = memoize(() => excludeChars(CHAR(), '\r\n'))
export const ATOM_SPECIALS = memoize(() => '(' + ')' + '{' + SP() + CTL() + LIST_WILDCARDS() + QUOTED_SPECIALS() + RESP_SPECIALS())
export const LIST_WILDCARDS = () => '%' + '*'
export const QUOTED_SPECIALS = memoize(() => DQUOTE() + '\\')
export const RESP_SPECIALS = () => ']'
export const TAG = memoize(() => excludeChars(ASTRING_CHAR(), '+'))
export const COMMAND = memoize(() => ALPHA() + DIGIT())
export const verify = function (str, allowedChars) {
for (var i = 0, len = str.length; i < len; i++) {
if (allowedChars.indexOf(str.charAt(i)) < 0) {
return i
}
}
return -1
}
export const IS_CHAR = (chr) => chr >= 0x01 && chr <= 0x7F
export const IS_ATOM_CHAR = (chr) => IS_CHAR(chr) && !IS_ATOM_SPECIALS(chr)
export const IS_ATOM_SPECIALS = (chr) => chr === ASCII_LEFT_PARENTHESIS ||
chr === ASCII_RIGHT_PARENTHESIS ||
chr === ASCII_LEFT_CURLY_BRACKET ||
chr === ASCII_SPACE ||
IS_CTL(chr) ||
IS_LIST_WILDCARDS(chr) ||
IS_QUOTED_SPECIALS(chr) ||
IS_RESP_SPECIALS(chr)
export const IS_CTL = (chr) => (chr >= 0x00 && chr <= 0x1F) || chr === 0x7F
export const IS_LIST_WILDCARDS = (chr) => chr === ASCII_PERCENT_SIGN || chr === ASCII_ASTERISK
export const IS_QUOTED_SPECIALS = (chr) => chr === ASCII_DQUOTE || chr === ASCII_BACKSLASH
export const IS_RESP_SPECIALS = (chr) => chr === ASCII_RIGHT_BRACKET
export const IS_DIGIT = (chr) => chr >= 0x30 && chr <= 0x39
export const IS_ALPHA = (chr) => (chr >= 0x41 && chr <= 0x5A) || (chr >= 0x61 && chr <= 0x7A)
export const IS_COMMAND = (chr) => IS_ALPHA(chr) || IS_DIGIT(chr)
export const IS_TAG = (chr) => IS_ASTRING_CHAR(chr) && chr !== ASCII_PLUS
export const IS_ASTRING_CHAR = (chr) => IS_ATOM_CHAR(chr) || IS_RESP_SPECIALS(chr)

@@ -188,7 +188,7 @@ import parser from './parser'

// The following 4 tests are added as part of solution and verification
// of https://github.com/emailjs/emailjs-imap-handler/issues/16
// See tools.ietf.org/html/rfc3501 and especially chapters:
// * 5.1. Mailbox Naming
// * 5.1.1. Mailbox Hierarchy Naming
// The following 4 tests are added as part of solution and verification
// of https://github.com/emailjs/emailjs-imap-handler/issues/16
// See tools.ietf.org/html/rfc3501 and especially chapters:
// * 5.1. Mailbox Naming
// * 5.1.1. Mailbox Hierarchy Naming
describe('Mailbox names with brackets', function () {

@@ -285,4 +285,4 @@ describe('for server with / as hierarchical separator', function () {

])
// Trailing whitespace in a BODYSTRUCTURE atom list has been
// observed on yahoo.co.jp's
// Trailing whitespace in a BODYSTRUCTURE atom list has been
// observed on yahoo.co.jp's
expect(parser(str2arr('TAG1 CMD (1234 )')).attributes).to.deep.equal([

@@ -421,7 +421,7 @@ [{

it('will not fail due to trailing whitespace', function () {
// We intentionally have trailing whitespace in the section here
// because we altered the parser to handle this when we made it
// legal for lists and it makes sense to accordingly test it.
// However, we have no recorded incidences of this happening in
// reality (unlike for lists).
// We intentionally have trailing whitespace in the section here
// because we altered the parser to handle this when we made it
// legal for lists and it makes sense to accordingly test it.
// However, we have no recorded incidences of this happening in
// reality (unlike for lists).
expect(parser(str2arr('TAG1 CMD BODY[HEADER.FIELDS (Subject From) ]')).attributes).to.deep.equal([{

@@ -487,5 +487,5 @@ type: 'ATOM',

it('should succeed 4', function () {
// USEATTR is from RFC6154; we are testing that just an ATOM
// on its own will parse successfully here. (All of the
// RFC5530 codes are also single atoms.)
// USEATTR is from RFC6154; we are testing that just an ATOM
// on its own will parse successfully here. (All of the
// RFC5530 codes are also single atoms.)
expect(parser(str2arr('TAG1 OK [USEATTR] \\All not supported'))).to.deep.equal({

@@ -509,4 +509,4 @@ tag: 'TAG1',

it('should succeed 5', function () {
// RFC5267 defines the NOUPDATE error. Including for quote /
// string coverage.
// RFC5267 defines the NOUPDATE error. Including for quote /
// string coverage.
expect(parser(str2arr('* NO [NOUPDATE "B02"] Too many contexts'))).to.deep.equal({

@@ -533,5 +533,5 @@ tag: '*',

it('should succeed 6', function () {
// RFC5464 defines the METADATA response code; adding this to
// ensure the transition for when '2199' hits ']' is handled
// safely.
// RFC5464 defines the METADATA response code; adding this to
// ensure the transition for when '2199' hits ']' is handled
// safely.
expect(parser(str2arr('TAG1 OK [METADATA LONGENTRIES 2199] GETMETADATA complete'))).to.deep.equal({

@@ -561,4 +561,4 @@ tag: 'TAG1',

it('should succeed 7', function () {
// RFC4467 defines URLMECH. Included because of the example
// third atom involves base64-encoding which is somewhat unusual
// RFC4467 defines URLMECH. Included because of the example
// third atom involves base64-encoding which is somewhat unusual
expect(parser(str2arr('TAG1 OK [URLMECH INTERNAL XSAMPLE=P34OKhO7VEkCbsiYY8rGEg==] done'))).to.deep.equal({

@@ -588,10 +588,10 @@ tag: 'TAG1',

it('should succeed 8', function () {
// RFC2221 defines REFERRAL where the argument is an imapurl
// (defined by RFC2192 which is obsoleted by RFC5092) which
// is significantly more complicated than the rest of the IMAP
// grammar and which was based on the RFC2060 grammar where
// resp_text_code included:
// atom [SPACE 1*<any TEXT_CHAR except ']'>]
// So this is just a test case of our explicit special-casing
// of REFERRAL.
// RFC2221 defines REFERRAL where the argument is an imapurl
// (defined by RFC2192 which is obsoleted by RFC5092) which
// is significantly more complicated than the rest of the IMAP
// grammar and which was based on the RFC2060 grammar where
// resp_text_code included:
// atom [SPACE 1*<any TEXT_CHAR except ']'>]
// So this is just a test case of our explicit special-casing
// of REFERRAL.
expect(parser(str2arr('TAG1 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/] Remote Server'))).to.deep.equal({

@@ -618,5 +618,5 @@ tag: 'TAG1',

it('should succeed 9', function () {
// PERMANENTFLAGS is from RFC3501. Its syntax is also very
// similar to BADCHARSET, except BADCHARSET has astrings
// inside the list.
// PERMANENTFLAGS is from RFC3501. Its syntax is also very
// similar to BADCHARSET, except BADCHARSET has astrings
// inside the list.
expect(parser(str2arr('* OK [PERMANENTFLAGS (de:hacking $label kt-evalution [css3-page] \\*)] Flags permitted.'))).to.deep.equal({

@@ -657,5 +657,5 @@ tag: '*',

it('should succeed 10', function () {
// COPYUID is from RFC4315 and included the previously failing
// parsing situation of a sequence terminated by ']' rather than
// whitespace.
// COPYUID is from RFC4315 and included the previously failing
// parsing situation of a sequence terminated by ']' rather than
// whitespace.
expect(parser(str2arr('TAG1 OK [COPYUID 4 1417051618:1417051620 1421730687:1421730689] COPY completed'))).to.deep.equal({

@@ -688,6 +688,6 @@ tag: 'TAG1',

it('should succeed 11', function () {
// MODIFIED is from RFC4551 and is basically the same situation
// as the COPYUID case, but in this case our example sequences
// have commas in them. (Note that if there was no comma, the
// '7,9' payload would end up an ATOM.)
// MODIFIED is from RFC4551 and is basically the same situation
// as the COPYUID case, but in this case our example sequences
// have commas in them. (Note that if there was no comma, the
// '7,9' payload would end up an ATOM.)
expect(parser(str2arr('TAG1 OK [MODIFIED 7,9] Conditional STORE failed'))).to.deep.equal({

@@ -694,0 +694,0 @@ tag: 'TAG1',

import {
SP, DIGIT, ATOM_CHAR,
TAG, COMMAND, verify
ASCII_ASTERISK,
ASCII_BACKSLASH,
ASCII_COLON,
ASCII_COMMA,
ASCII_CR,
ASCII_DQUOTE,
ASCII_FULL_STOP,
ASCII_GREATER_THAN_SIGN,
ASCII_LEFT_BRACKET,
ASCII_LEFT_CURLY_BRACKET,
ASCII_LEFT_PARENTHESIS,
ASCII_LESS_THAN_SIGN,
ASCII_NL,
ASCII_PERCENT_SIGN,
ASCII_PLUS,
ASCII_RIGHT_BRACKET,
ASCII_RIGHT_CURLY_BRACKET,
ASCII_RIGHT_PARENTHESIS,
ASCII_SPACE,
IS_COMMAND,
IS_DIGIT,
IS_ATOM_CHAR,
IS_TAG
} from './formal-syntax'
let ASCII_NL = 10
let ASCII_CR = 13
let ASCII_SPACE = 32
let ASCII_LEFT_BRACKET = 91
let ASCII_RIGHT_BRACKET = 93
function fromCharCode (uint8Array) {

@@ -62,3 +77,4 @@ const batchSize = 10240

if (!this.tag) {
this.tag = this.getElement(TAG() + '*+', true)
const syntaxChecker = (chr) => IS_TAG(chr) || chr === ASCII_ASTERISK || chr === ASCII_PLUS
this.tag = this.getElement(syntaxChecker)
}

@@ -70,3 +86,3 @@ return this.tag

if (!this.command) {
this.command = this.getElement(COMMAND())
this.command = this.getElement(IS_COMMAND)
}

@@ -94,3 +110,3 @@

getElement (syntax) {
getElement (syntaxChecker) {
let element

@@ -104,10 +120,11 @@ if (this.remainder[0] === ASCII_SPACE) {

if (firstSpace === -1) {
element = fromCharCode(this.remainder)
element = this.remainder
} else {
element = fromCharCode(this.remainder.subarray(0, firstSpace))
element = this.remainder.subarray(0, firstSpace)
}
const errPos = verify(element, syntax)
if (errPos >= 0) {
throw new Error('Unexpected char at position ' + (this.pos + errPos))
for (let i = 0; i < element.length; i++) {
if (!syntaxChecker(element[i])) {
throw new Error('Unexpected char at position ' + (this.pos + i))
}
}

@@ -121,3 +138,3 @@ } else {

return element
return fromCharCode(element)
}

@@ -130,3 +147,3 @@

if (verify(String.fromCharCode(this.remainder[0]), SP()) >= 0) {
if (this.remainder[0] !== ASCII_SPACE) {
throw new Error('Unexpected char at position ' + this.pos)

@@ -280,4 +297,3 @@ }

let ascii = this.uint8Array[index]
return ascii >= 48 && ascii <= 57
return IS_DIGIT(this.uint8Array[index])
}

@@ -336,3 +352,3 @@

// If the node was never closed, throw it
// If the node was never closed, throw it
if (!node.closed) {

@@ -402,4 +418,4 @@ throw new Error('Unexpected end of input at position ' + (this.pos + this.uint8Array.length - 1))

const checkSP = (pos) => {
// jump to the next non whitespace pos
while (this.uint8Array[i + 1] === ' ') {
// jump to the next non whitespace pos
while (this.uint8Array[i + 1] === ASCII_SPACE) {
i++

@@ -410,3 +426,3 @@ }

for (i = 0, len = this.uint8Array.length; i < len; i++) {
let chr = String.fromCharCode(this.uint8Array[i])
let chr = this.uint8Array[i]

@@ -417,4 +433,4 @@ switch (this.state) {

switch (chr) {
// DQUOTE starts a new string
case '"':
// DQUOTE starts a new string
case ASCII_DQUOTE:
this.currentNode = this.createNode(this.currentNode, i)

@@ -426,4 +442,4 @@ this.currentNode.type = 'string'

// ( starts a new list
case '(':
// ( starts a new list
case ASCII_LEFT_PARENTHESIS:
this.currentNode = this.createNode(this.currentNode, i)

@@ -434,4 +450,4 @@ this.currentNode.type = 'LIST'

// ) closes a list
case ')':
// ) closes a list
case ASCII_RIGHT_PARENTHESIS:
if (this.currentNode.type !== 'LIST') {

@@ -448,4 +464,4 @@ throw new Error('Unexpected list terminator ) at position ' + (this.pos + i))

// ] closes section group
case ']':
// ] closes section group
case ASCII_RIGHT_BRACKET:
if (this.currentNode.type !== 'SECTION') {

@@ -460,5 +476,5 @@ throw new Error('Unexpected section terminator ] at position ' + (this.pos + i))

// < starts a new partial
case '<':
if (String.fromCharCode(this.uint8Array[i - 1]) !== ']') {
// < starts a new partial
case ASCII_LESS_THAN_SIGN:
if (this.uint8Array[i - 1] !== ASCII_RIGHT_BRACKET) {
this.currentNode = this.createNode(this.currentNode, i)

@@ -477,4 +493,4 @@ this.currentNode.type = 'ATOM'

// { starts a new literal
case '{':
// { starts a new literal
case ASCII_LEFT_CURLY_BRACKET:
this.currentNode = this.createNode(this.currentNode, i)

@@ -486,4 +502,4 @@ this.currentNode.type = 'LITERAL'

// ( starts a new sequence
case '*':
// ( starts a new sequence
case ASCII_ASTERISK:
this.currentNode = this.createNode(this.currentNode, i)

@@ -497,10 +513,10 @@ this.currentNode.type = 'SEQUENCE'

// normally a space should never occur
case ' ':
// just ignore
// normally a space should never occur
case ASCII_SPACE:
// just ignore
break
// [ starts section
case '[':
// If it is the *first* element after response command, then process as a response argument list
// [ starts section
case ASCII_LEFT_BRACKET:
// If it is the *first* element after response command, then process as a response argument list
if (['OK', 'NO', 'BAD', 'BYE', 'PREAUTH'].indexOf(this.parent.command.toUpperCase()) >= 0 && this.currentNode === this.tree) {

@@ -517,8 +533,8 @@ this.currentNode.endPos = this.pos + i

// RFC2221 defines a response code REFERRAL whose payload is an
// RFC2192/RFC5092 imapurl that we will try to parse as an ATOM but
// fail quite badly at parsing. Since the imapurl is such a unique
// (and crazy) term, we just specialize that case here.
// RFC2221 defines a response code REFERRAL whose payload is an
// RFC2192/RFC5092 imapurl that we will try to parse as an ATOM but
// fail quite badly at parsing. Since the imapurl is such a unique
// (and crazy) term, we just specialize that case here.
if (fromCharCode(this.uint8Array.subarray(i + 1, i + 10)).toUpperCase() === 'REFERRAL ') {
// create the REFERRAL atom
// create the REFERRAL atom
this.currentNode = this.createNode(this.currentNode, this.pos + i + 1)

@@ -532,7 +548,7 @@ this.currentNode.type = 'ATOM'

// eat all the way through the ] to be the IMAPURL token.
// eat all the way through the ] to be the IMAPURL token.
this.currentNode = this.createNode(this.currentNode, this.pos + i + 10)
// just call this an ATOM, even though IMAPURL might be more correct
// just call this an ATOM, even though IMAPURL might be more correct
this.currentNode.type = 'ATOM'
// jump i to the ']'
// jump i to the ']'
i = this.uint8Array.indexOf(ASCII_RIGHT_BRACKET, i + 10)

@@ -544,3 +560,3 @@ this.currentNode.endPos = this.pos + i - 1

// close out the SECTION
// close out the SECTION
this.currentNode.closed = true

@@ -553,8 +569,8 @@ this.currentNode = this.currentNode.parentNode

}
/* falls through */
/* falls through */
default:
// Any ATOM supported char starts a new Atom sequence, otherwise throw an error
// Allow \ as the first char for atom to support system flags
// Allow % to support LIST '' %
if (ATOM_CHAR().indexOf(chr) < 0 && chr !== '\\' && chr !== '%') {
// Any ATOM supported char starts a new Atom sequence, otherwise throw an error
// Allow \ as the first char for atom to support system flags
// Allow % to support LIST '' %
if (!IS_ATOM_CHAR(chr) && chr !== ASCII_BACKSLASH && chr !== ASCII_PERCENT_SIGN) {
throw new Error('Unexpected char at position ' + (this.pos + i))

@@ -574,4 +590,4 @@ }

// space finishes an atom
if (chr === ' ') {
// space finishes an atom
if (chr === ASCII_SPACE) {
this.currentNode.endPos = this.pos + i - 1

@@ -583,10 +599,10 @@ this.currentNode = this.currentNode.parentNode

//
//
if (
this.currentNode.parentNode &&
(
(chr === ')' && this.currentNode.parentNode.type === 'LIST') ||
(chr === ']' && this.currentNode.parentNode.type === 'SECTION')
)
) {
this.currentNode.parentNode &&
(
(chr === ASCII_RIGHT_PARENTHESIS && this.currentNode.parentNode.type === 'LIST') ||
(chr === ASCII_RIGHT_BRACKET && this.currentNode.parentNode.type === 'SECTION')
)
) {
this.currentNode.endPos = this.pos + i - 1

@@ -604,3 +620,3 @@ this.currentNode = this.currentNode.parentNode

if ((chr === ',' || chr === ':') && this.currentNode.isNumber()) {
if ((chr === ASCII_COMMA || chr === ASCII_COLON) && this.currentNode.isNumber()) {
this.currentNode.type = 'SEQUENCE'

@@ -611,4 +627,4 @@ this.currentNode.closed = true

// [ starts a section group for this element
if (chr === '[' && (this.currentNode.equals('BODY', false) || this.currentNode.equals('BODY.PEEK', false))) {
// [ starts a section group for this element
if (chr === ASCII_LEFT_BRACKET && (this.currentNode.equals('BODY', false) || this.currentNode.equals('BODY.PEEK', false))) {
this.currentNode.endPos = this.pos + i

@@ -622,8 +638,8 @@ this.currentNode = this.createNode(this.currentNode.parentNode, this.pos + i)

if (chr === '<') {
if (chr === ASCII_LESS_THAN_SIGN) {
throw new Error('Unexpected start of partial at position ' + this.pos)
}
// if the char is not ATOM compatible, throw. Allow \* as an exception
if (ATOM_CHAR().indexOf(chr) < 0 && chr !== ']' && !(chr === '*' && this.currentNode.equals('\\'))) {
// if the char is not ATOM compatible, throw. Allow \* as an exception
if (!IS_ATOM_CHAR(chr) && chr !== ASCII_RIGHT_BRACKET && !(chr === ASCII_ASTERISK && this.currentNode.equals('\\'))) {
throw new Error('Unexpected char at position ' + (this.pos + i))

@@ -639,4 +655,4 @@ } else if (this.currentNode.equals('\\*')) {

// DQUOTE ends the string sequence
if (chr === '"') {
// DQUOTE ends the string sequence
if (chr === ASCII_DQUOTE) {
this.currentNode.endPos = this.pos + i

@@ -651,4 +667,4 @@ this.currentNode.closed = true

// \ Escapes the following char
if (chr === '\\') {
// \ Escapes the following char
if (chr === ASCII_BACKSLASH) {
this.currentNode.valueSkip.push(i - this.currentNode.valueStart)

@@ -659,10 +675,10 @@ i++

}
chr = String.fromCharCode(this.uint8Array[i])
chr = this.uint8Array[i]
}
/* // skip this check, otherwise the parser might explode on binary input
if (TEXT_CHAR().indexOf(chr) < 0) {
throw new Error('Unexpected char at position ' + (this.pos + i));
}
*/
/* // skip this check, otherwise the parser might explode on binary input
if (TEXT_CHAR().indexOf(chr) < 0) {
throw new Error('Unexpected char at position ' + (this.pos + i));
}
*/

@@ -673,3 +689,3 @@ this.currentNode.valueEnd = i + 1

case 'PARTIAL':
if (chr === '>') {
if (chr === ASCII_GREATER_THAN_SIGN) {
if (this.currentNode.equalsAt('.', -1)) {

@@ -686,11 +702,11 @@ throw new Error('Unexpected end of partial at position ' + this.pos)

if (chr === '.' && (!this.currentNode.getValueLength() || this.currentNode.containsChar('.'))) {
if (chr === ASCII_FULL_STOP && (!this.currentNode.getValueLength() || this.currentNode.containsChar('.'))) {
throw new Error('Unexpected partial separator . at position ' + this.pos)
}
if (DIGIT().indexOf(chr) < 0 && chr !== '.') {
if (!IS_DIGIT(chr) && chr !== ASCII_FULL_STOP) {
throw new Error('Unexpected char at position ' + (this.pos + i))
}
if (chr !== '.' && (this.currentNode.equals('0') || this.currentNode.equalsAt('.0', -2))) {
if (chr !== ASCII_FULL_STOP && (this.currentNode.equals('0') || this.currentNode.equalsAt('.0', -2))) {
throw new Error('Invalid partial at position ' + (this.pos + i))

@@ -704,3 +720,3 @@ }

if (this.currentNode.started) {
if (chr === '\u0000') {
if (chr === 0) {
throw new Error('Unexpected \\x00 at position ' + (this.pos + i))

@@ -720,3 +736,3 @@ }

if (chr === '+' && this.options.literalPlus) {
if (chr === ASCII_PLUS && this.options.literalPlus) {
this.currentNode.literalPlus = true

@@ -726,3 +742,3 @@ break

if (chr === '}') {
if (chr === ASCII_RIGHT_CURLY_BRACKET) {
if (!('literalLength' in this.currentNode)) {

@@ -743,4 +759,4 @@ throw new Error('Unexpected literal prefix end char } at position ' + (this.pos + i))

if (!this.currentNode.literalLength) {
// special case where literal content length is 0
// close the node right away, do not wait for additional input
// special case where literal content length is 0
// close the node right away, do not wait for additional input
this.currentNode.endPos = this.pos + i

@@ -754,3 +770,3 @@ this.currentNode.closed = true

}
if (DIGIT().indexOf(chr) < 0) {
if (!IS_DIGIT(chr)) {
throw new Error('Unexpected char at position ' + (this.pos + i))

@@ -761,8 +777,8 @@ }

}
this.currentNode.literalLength = (this.currentNode.literalLength || '') + chr
this.currentNode.literalLength = (this.currentNode.literalLength || '') + String.fromCharCode(chr)
break
case 'SEQUENCE':
// space finishes the sequence set
if (chr === ' ') {
// space finishes the sequence set
if (chr === ASCII_SPACE) {
if (!this.currentNode.isDigit(-1) && !this.currentNode.equalsAt('*', -1)) {

@@ -782,4 +798,4 @@ throw new Error('Unexpected whitespace at position ' + (this.pos + i))

} else if (this.currentNode.parentNode &&
chr === ']' &&
this.currentNode.parentNode.type === 'SECTION') {
chr === ASCII_RIGHT_BRACKET &&
this.currentNode.parentNode.type === 'SECTION') {
this.currentNode.endPos = this.pos + i - 1

@@ -797,11 +813,11 @@ this.currentNode = this.currentNode.parentNode

if (chr === ':') {
if (chr === ASCII_COLON) {
if (!this.currentNode.isDigit(-1) && !this.currentNode.equalsAt('*', -1)) {
throw new Error('Unexpected range separator : at position ' + (this.pos + i))
}
} else if (chr === '*') {
} else if (chr === ASCII_ASTERISK) {
if (!this.currentNode.equalsAt(',', -1) && !this.currentNode.equalsAt(':', -1)) {
throw new Error('Unexpected range wildcard at position ' + (this.pos + i))
}
} else if (chr === ',') {
} else if (chr === ASCII_COMMA) {
if (!this.currentNode.isDigit(-1) && !this.currentNode.equalsAt('*', -1)) {

@@ -813,7 +829,7 @@ throw new Error('Unexpected sequence separator , at position ' + (this.pos + i))

}
} else if (!/\d/.test(chr)) {
} else if (!IS_DIGIT(chr)) {
throw new Error('Unexpected char at position ' + (this.pos + i))
}
if (/\d/.test(chr) && this.currentNode.equalsAt('*', -1)) {
if (IS_DIGIT(chr) && this.currentNode.equalsAt('*', -1)) {
throw new Error('Unexpected number at position ' + (this.pos + i))

@@ -839,3 +855,3 @@ }

parser.getSpace()
response.command += ' ' + parser.getElement(COMMAND())
response.command += ' ' + parser.getElement(IS_COMMAND)
}

@@ -842,0 +858,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc