Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@input-output-hk/mailchimp-subscribe

Package Overview
Dependencies
Maintainers
3
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@input-output-hk/mailchimp-subscribe - npm Package Compare versions

Comparing version 0.1.0 to 0.3.0

28

build/index.js

@@ -8,14 +8,2 @@ "use strict";

});
Object.defineProperty(exports, "ERROR_CODES", {
enumerable: true,
get: function get() {
return _constants.ERROR_CODES;
}
});
Object.defineProperty(exports, "SUCCESS_CODES", {
enumerable: true,
get: function get() {
return _constants.SUCCESS_CODES;
}
});
exports["default"] = void 0;

@@ -31,4 +19,2 @@

var _constants = require("./constants");
var validateFields = function validateFields(_ref) {

@@ -54,3 +40,3 @@ var email = _ref.email,

*
* @return {Promise<MailChimpSuccess>} Rejects with MailChimpError
* @return {Promise<MailChimpSuccess>} Or rejects with MailChimpError
*/

@@ -81,5 +67,7 @@

return new Promise(function (resolve, reject) {
(0, _jsonp["default"])("".concat(url).concat(endpoint, "?").concat(Object.keys(parameters).map(function (key) {
return "".concat(key, "=").concat(encodeURIComponent(parameters[key]));
}).join('&')), {
var queryString = Object.keys(parameters).map(function (key) {
return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(parameters[key]));
}).join('&');
var fullURL = "".concat(url).concat(endpoint, "?").concat(queryString);
(0, _jsonp["default"])(fullURL, {
param: 'c',

@@ -89,3 +77,3 @@ timeout: timeout

try {
if (err) throw new _MailChimpError["default"](err.message);
if (err) throw err;
if (data.result === 'error') throw new _MailChimpError["default"](data.msg);

@@ -101,2 +89,2 @@ resolve(new _MailChimpSuccess["default"](data.msg));

exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJ2YWxpZGF0ZUZpZWxkcyIsImVtYWlsIiwibGlzdE5hbWUiLCJ1SUQiLCJhdWRpZW5jZUlEIiwibWF0Y2giLCJFcnJvciIsImN1c3RvbUZpZWxkcyIsInRpbWVvdXQiLCJ1cmwiLCJlbmRwb2ludCIsInBhcmFtZXRlcnMiLCJ1IiwiaWQiLCJFTUFJTCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImtleSIsImVuY29kZVVSSUNvbXBvbmVudCIsImpvaW4iLCJwYXJhbSIsImVyciIsImRhdGEiLCJNYWlsQ2hpbXBFcnJvciIsIm1lc3NhZ2UiLCJyZXN1bHQiLCJtc2ciLCJNYWlsQ2hpbXBTdWNjZXNzIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixPQUEwQztBQUFBLE1BQXZDQyxLQUF1QyxRQUF2Q0EsS0FBdUM7QUFBQSxNQUFoQ0MsUUFBZ0MsUUFBaENBLFFBQWdDO0FBQUEsTUFBdEJDLEdBQXNCLFFBQXRCQSxHQUFzQjtBQUFBLE1BQWpCQyxVQUFpQixRQUFqQkEsVUFBaUI7QUFDL0QsTUFBSSxDQUFDRixRQUFELElBQWFBLFFBQVEsQ0FBQ0csS0FBVCxDQUFlLElBQWYsQ0FBakIsRUFBdUMsTUFBTSxJQUFJQyxLQUFKLDBCQUE0QkosUUFBNUIsK0hBQU47QUFDdkMsTUFBSSxDQUFDRCxLQUFMLEVBQVksTUFBTSxJQUFJSyxLQUFKLG1CQUFOO0FBQ1osTUFBSSxDQUFDSCxHQUFMLEVBQVUsTUFBTSxJQUFJRyxLQUFKLGlCQUFOO0FBQ1YsTUFBSSxDQUFDRixVQUFMLEVBQWlCLE1BQU0sSUFBSUUsS0FBSix3QkFBTjtBQUNsQixDQUxEO0FBT0E7Ozs7Ozs7Ozs7Ozs7O2VBWWUseUJBQXdFO0FBQUEsTUFBckVMLEtBQXFFLFNBQXJFQSxLQUFxRTtBQUFBLE1BQTlETSxZQUE4RCxTQUE5REEsWUFBOEQ7QUFBQSxNQUFoREwsUUFBZ0QsU0FBaERBLFFBQWdEO0FBQUEsTUFBdENDLEdBQXNDLFNBQXRDQSxHQUFzQztBQUFBLE1BQWpDQyxVQUFpQyxTQUFqQ0EsVUFBaUM7QUFBQSw0QkFBckJJLE9BQXFCO0FBQUEsTUFBckJBLE9BQXFCLDhCQUFYLElBQVc7QUFDckZSLEVBQUFBLGNBQWMsQ0FBQztBQUFFQyxJQUFBQSxLQUFLLEVBQUxBLEtBQUY7QUFBU0MsSUFBQUEsUUFBUSxFQUFSQSxRQUFUO0FBQW1CQyxJQUFBQSxHQUFHLEVBQUhBLEdBQW5CO0FBQXdCQyxJQUFBQSxVQUFVLEVBQVZBO0FBQXhCLEdBQUQsQ0FBZDtBQUNBLE1BQU1LLEdBQUcsZUFBUVAsUUFBUixxQkFBVDtBQUNBLE1BQU1RLFFBQVEsR0FBRyxzQkFBakI7QUFDQSxNQUFNQyxVQUFVO0FBQ2RDLElBQUFBLENBQUMsRUFBRVQsR0FEVztBQUVkVSxJQUFBQSxFQUFFLEVBQUVULFVBRlU7QUFHZFUsSUFBQUEsS0FBSyxFQUFFYjtBQUhPLEtBSVhNLFlBSlcsQ0FBaEI7QUFPQSxTQUFPLElBQUlRLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEMscUNBQVNSLEdBQVQsU0FBZUMsUUFBZixjQUEyQlEsTUFBTSxDQUFDQyxJQUFQLENBQVlSLFVBQVosRUFBd0JTLEdBQXhCLENBQTRCLFVBQUFDLEdBQUc7QUFBQSx1QkFBT0EsR0FBUCxjQUFjQyxrQkFBa0IsQ0FBQ1gsVUFBVSxDQUFDVSxHQUFELENBQVgsQ0FBaEM7QUFBQSxLQUEvQixFQUFvRkUsSUFBcEYsQ0FBeUYsR0FBekYsQ0FBM0IsR0FBNEg7QUFDMUhDLE1BQUFBLEtBQUssRUFBRSxHQURtSDtBQUUxSGhCLE1BQUFBLE9BQU8sRUFBUEE7QUFGMEgsS0FBNUgsRUFHRyxVQUFDaUIsR0FBRCxFQUFNQyxJQUFOLEVBQWU7QUFDaEIsVUFBSTtBQUNGLFlBQUlELEdBQUosRUFBUyxNQUFNLElBQUlFLDBCQUFKLENBQW1CRixHQUFHLENBQUNHLE9BQXZCLENBQU47QUFDVCxZQUFJRixJQUFJLENBQUNHLE1BQUwsS0FBZ0IsT0FBcEIsRUFBNkIsTUFBTSxJQUFJRiwwQkFBSixDQUFtQkQsSUFBSSxDQUFDSSxHQUF4QixDQUFOO0FBQzdCZCxRQUFBQSxPQUFPLENBQUMsSUFBSWUsNEJBQUosQ0FBcUJMLElBQUksQ0FBQ0ksR0FBMUIsQ0FBRCxDQUFQO0FBQ0QsT0FKRCxDQUlFLE9BQU9FLEtBQVAsRUFBYztBQUNkZixRQUFBQSxNQUFNLENBQUNlLEtBQUQsQ0FBTjtBQUNEO0FBQ0YsS0FYRDtBQVlELEdBYk0sQ0FBUDtBQWNELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQganNvbnAgZnJvbSAnanNvbnAnXG5pbXBvcnQgTWFpbENoaW1wRXJyb3IgZnJvbSAnLi9NYWlsQ2hpbXBFcnJvcidcbmltcG9ydCBNYWlsQ2hpbXBTdWNjZXNzIGZyb20gJy4vTWFpbENoaW1wU3VjY2VzcydcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBTVUNDRVNTX0NPREVTIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmNvbnN0IHZhbGlkYXRlRmllbGRzID0gKHsgZW1haWwsIGxpc3ROYW1lLCB1SUQsIGF1ZGllbmNlSUQgfSkgPT4ge1xuICBpZiAoIWxpc3ROYW1lIHx8IGxpc3ROYW1lLm1hdGNoKC9cXC8vKSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlICcke2xpc3ROYW1lfScgZm9yICdsaXN0TmFtZScsIHNob3VsZCBiZSB0aGUgc3ViZG9tYWluIHNlY3Rpb24gb2YgJ2xpc3QtbWFuYWdlLmNvbSc7IGh0dHBzOi8vbXlsaXN0LnVzLmxpc3QtbWFuYWdlLmNvbS8gLT4gJ215bGlzdC51cydgKVxuICBpZiAoIWVtYWlsKSB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgJ2VtYWlsJ2ApXG4gIGlmICghdUlEKSB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgJ3VJRCdgKVxuICBpZiAoIWF1ZGllbmNlSUQpIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAnYXVkaWVuY2VJRCdgKVxufVxuXG4vKipcbiAqIFN1YnNjcmliZSBhbiBlbWFpbCBhZGRyZXNzIHRvIGEgbWFpbGNoaW1wIGxpc3RcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZW1haWwgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbWFpbCBhZGRyZXNzIHRvIHNpZ24gdXBcbiAqIEBwYXJhbSB7T2JqZWN0PFN0cmluZz46PFN0cmluZz59IGN1c3RvbUZpZWxkcyAgT2JqZWN0IHBhaXJpbmcgb2YgY3VzdG9tIGZpZWxkcyB0byBwYXNzIHRocm91Z2ggdG8gbWFpbGNoaW1wXG4gKiBAcGFyYW0ge1N0cmluZ30gbGlzdE5hbWUgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgb2YgdGhlIGxpc3QgdG8gc3Vic2NyaWJlIHRvXG4gKiBAcGFyYW0ge1N0cmluZ30gdUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgdmFsdWUgZm9yIHF1ZXJ5IHN0cmluZ1xuICogQHBhcmFtIHtTdHJpbmd9IGF1ZGllbmNlSUQgICAgICAgICAgICAgICAgICAgICBBdWRpZW5jZSBJRFxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0IHRpbWVvdXQgdmFsdWUgaW4gbXNcbiAqXG4gKiBAcmV0dXJuIHtQcm9taXNlPE1haWxDaGltcFN1Y2Nlc3M+fSAgICAgICAgICAgIFJlamVjdHMgd2l0aCBNYWlsQ2hpbXBFcnJvclxuICovXG5leHBvcnQgZGVmYXVsdCAoeyBlbWFpbCwgY3VzdG9tRmllbGRzLCBsaXN0TmFtZSwgdUlELCBhdWRpZW5jZUlELCB0aW1lb3V0ID0gMzAwMCB9KSA9PiB7XG4gIHZhbGlkYXRlRmllbGRzKHsgZW1haWwsIGxpc3ROYW1lLCB1SUQsIGF1ZGllbmNlSUQgfSlcbiAgY29uc3QgdXJsID0gYC8vJHtsaXN0TmFtZX0ubGlzdC1tYW5hZ2UuY29tYFxuICBjb25zdCBlbmRwb2ludCA9ICcvc3Vic2NyaWJlL3Bvc3QtanNvbidcbiAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICB1OiB1SUQsXG4gICAgaWQ6IGF1ZGllbmNlSUQsXG4gICAgRU1BSUw6IGVtYWlsLFxuICAgIC4uLmN1c3RvbUZpZWxkc1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBqc29ucChgJHt1cmx9JHtlbmRwb2ludH0/JHtPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5tYXAoa2V5ID0+IGAke2tleX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVyc1trZXldKX1gKS5qb2luKCcmJyl9YCwge1xuICAgICAgcGFyYW06ICdjJyxcbiAgICAgIHRpbWVvdXRcbiAgICB9LCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZXJyKSB0aHJvdyBuZXcgTWFpbENoaW1wRXJyb3IoZXJyLm1lc3NhZ2UpXG4gICAgICAgIGlmIChkYXRhLnJlc3VsdCA9PT0gJ2Vycm9yJykgdGhyb3cgbmV3IE1haWxDaGltcEVycm9yKGRhdGEubXNnKVxuICAgICAgICByZXNvbHZlKG5ldyBNYWlsQ2hpbXBTdWNjZXNzKGRhdGEubXNnKSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9KVxufVxuXG5leHBvcnQge1xuICBFUlJPUl9DT0RFUyxcbiAgU1VDQ0VTU19DT0RFU1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJ2YWxpZGF0ZUZpZWxkcyIsImVtYWlsIiwibGlzdE5hbWUiLCJ1SUQiLCJhdWRpZW5jZUlEIiwibWF0Y2giLCJFcnJvciIsImN1c3RvbUZpZWxkcyIsInRpbWVvdXQiLCJ1cmwiLCJlbmRwb2ludCIsInBhcmFtZXRlcnMiLCJ1IiwiaWQiLCJFTUFJTCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicXVlcnlTdHJpbmciLCJPYmplY3QiLCJrZXlzIiwibWFwIiwia2V5IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsImZ1bGxVUkwiLCJwYXJhbSIsImVyciIsImRhdGEiLCJyZXN1bHQiLCJNYWlsQ2hpbXBFcnJvciIsIm1zZyIsIk1haWxDaGltcFN1Y2Nlc3MiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFNQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLE9BQTBDO0FBQUEsTUFBdkNDLEtBQXVDLFFBQXZDQSxLQUF1QztBQUFBLE1BQWhDQyxRQUFnQyxRQUFoQ0EsUUFBZ0M7QUFBQSxNQUF0QkMsR0FBc0IsUUFBdEJBLEdBQXNCO0FBQUEsTUFBakJDLFVBQWlCLFFBQWpCQSxVQUFpQjtBQUMvRCxNQUFJLENBQUNGLFFBQUQsSUFBYUEsUUFBUSxDQUFDRyxLQUFULENBQWUsSUFBZixDQUFqQixFQUF1QyxNQUFNLElBQUlDLEtBQUosMEJBQTRCSixRQUE1QiwrSEFBTjtBQUN2QyxNQUFJLENBQUNELEtBQUwsRUFBWSxNQUFNLElBQUlLLEtBQUosbUJBQU47QUFDWixNQUFJLENBQUNILEdBQUwsRUFBVSxNQUFNLElBQUlHLEtBQUosaUJBQU47QUFDVixNQUFJLENBQUNGLFVBQUwsRUFBaUIsTUFBTSxJQUFJRSxLQUFKLHdCQUFOO0FBQ2xCLENBTEQ7QUFPQTs7Ozs7Ozs7Ozs7Ozs7ZUFZZSx5QkFBd0U7QUFBQSxNQUFyRUwsS0FBcUUsU0FBckVBLEtBQXFFO0FBQUEsTUFBOURNLFlBQThELFNBQTlEQSxZQUE4RDtBQUFBLE1BQWhETCxRQUFnRCxTQUFoREEsUUFBZ0Q7QUFBQSxNQUF0Q0MsR0FBc0MsU0FBdENBLEdBQXNDO0FBQUEsTUFBakNDLFVBQWlDLFNBQWpDQSxVQUFpQztBQUFBLDRCQUFyQkksT0FBcUI7QUFBQSxNQUFyQkEsT0FBcUIsOEJBQVgsSUFBVztBQUNyRlIsRUFBQUEsY0FBYyxDQUFDO0FBQUVDLElBQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTQyxJQUFBQSxRQUFRLEVBQVJBLFFBQVQ7QUFBbUJDLElBQUFBLEdBQUcsRUFBSEEsR0FBbkI7QUFBd0JDLElBQUFBLFVBQVUsRUFBVkE7QUFBeEIsR0FBRCxDQUFkO0FBQ0EsTUFBTUssR0FBRyxlQUFRUCxRQUFSLHFCQUFUO0FBQ0EsTUFBTVEsUUFBUSxHQUFHLHNCQUFqQjtBQUNBLE1BQUlDLFVBQVU7QUFDWkMsSUFBQUEsQ0FBQyxFQUFFVCxHQURTO0FBRVpVLElBQUFBLEVBQUUsRUFBRVQsVUFGUTtBQUdaVSxJQUFBQSxLQUFLLEVBQUViO0FBSEssS0FJVE0sWUFKUyxDQUFkO0FBT0EsU0FBTyxJQUFJUSxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3RDLFFBQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVlULFVBQVosRUFBd0JVLEdBQXhCLENBQTRCLFVBQUFDLEdBQUc7QUFBQSx1QkFBT0Msa0JBQWtCLENBQUNELEdBQUQsQ0FBekIsY0FBa0NDLGtCQUFrQixDQUFDWixVQUFVLENBQUNXLEdBQUQsQ0FBWCxDQUFwRDtBQUFBLEtBQS9CLEVBQXdHRSxJQUF4RyxDQUE2RyxHQUE3RyxDQUFwQjtBQUNBLFFBQU1DLE9BQU8sYUFBTWhCLEdBQU4sU0FBWUMsUUFBWixjQUF3QlEsV0FBeEIsQ0FBYjtBQUNBLDJCQUFNTyxPQUFOLEVBQWU7QUFDYkMsTUFBQUEsS0FBSyxFQUFFLEdBRE07QUFFYmxCLE1BQUFBLE9BQU8sRUFBUEE7QUFGYSxLQUFmLEVBR0csVUFBQ21CLEdBQUQsRUFBTUMsSUFBTixFQUFlO0FBQ2hCLFVBQUk7QUFDRixZQUFJRCxHQUFKLEVBQVMsTUFBTUEsR0FBTjtBQUNULFlBQUlDLElBQUksQ0FBQ0MsTUFBTCxLQUFnQixPQUFwQixFQUE2QixNQUFNLElBQUlDLDBCQUFKLENBQW1CRixJQUFJLENBQUNHLEdBQXhCLENBQU47QUFDN0JmLFFBQUFBLE9BQU8sQ0FBQyxJQUFJZ0IsNEJBQUosQ0FBcUJKLElBQUksQ0FBQ0csR0FBMUIsQ0FBRCxDQUFQO0FBQ0QsT0FKRCxDQUlFLE9BQU9FLEtBQVAsRUFBYztBQUNkaEIsUUFBQUEsTUFBTSxDQUFDZ0IsS0FBRCxDQUFOO0FBQ0Q7QUFDRixLQVhEO0FBWUQsR0FmTSxDQUFQO0FBZ0JELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQganNvbnAgZnJvbSAnanNvbnAnXG5pbXBvcnQgTWFpbENoaW1wRXJyb3IgZnJvbSAnLi9NYWlsQ2hpbXBFcnJvcidcbmltcG9ydCBNYWlsQ2hpbXBTdWNjZXNzIGZyb20gJy4vTWFpbENoaW1wU3VjY2VzcydcblxuY29uc3QgdmFsaWRhdGVGaWVsZHMgPSAoeyBlbWFpbCwgbGlzdE5hbWUsIHVJRCwgYXVkaWVuY2VJRCB9KSA9PiB7XG4gIGlmICghbGlzdE5hbWUgfHwgbGlzdE5hbWUubWF0Y2goL1xcLy8pKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWUgJyR7bGlzdE5hbWV9JyBmb3IgJ2xpc3ROYW1lJywgc2hvdWxkIGJlIHRoZSBzdWJkb21haW4gc2VjdGlvbiBvZiAnbGlzdC1tYW5hZ2UuY29tJzsgaHR0cHM6Ly9teWxpc3QudXMubGlzdC1tYW5hZ2UuY29tLyAtPiAnbXlsaXN0LnVzJ2ApXG4gIGlmICghZW1haWwpIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAnZW1haWwnYClcbiAgaWYgKCF1SUQpIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAndUlEJ2ApXG4gIGlmICghYXVkaWVuY2VJRCkgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nICdhdWRpZW5jZUlEJ2ApXG59XG5cbi8qKlxuICogU3Vic2NyaWJlIGFuIGVtYWlsIGFkZHJlc3MgdG8gYSBtYWlsY2hpbXAgbGlzdFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBlbWFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGVtYWlsIGFkZHJlc3MgdG8gc2lnbiB1cFxuICogQHBhcmFtIHtPYmplY3Q8U3RyaW5nPjo8U3RyaW5nPn0gY3VzdG9tRmllbGRzICBPYmplY3QgcGFpcmluZyBvZiBjdXN0b20gZmllbGRzIHRvIHBhc3MgdGhyb3VnaCB0byBtYWlsY2hpbXBcbiAqIEBwYXJhbSB7U3RyaW5nfSBsaXN0TmFtZSAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBvZiB0aGUgbGlzdCB0byBzdWJzY3JpYmUgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSB1SUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSB2YWx1ZSBmb3IgcXVlcnkgc3RyaW5nXG4gKiBAcGFyYW0ge1N0cmluZ30gYXVkaWVuY2VJRCAgICAgICAgICAgICAgICAgICAgIEF1ZGllbmNlIElEXG4gKiBAcGFyYW0ge051bWJlcn0gdGltZW91dCAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QgdGltZW91dCB2YWx1ZSBpbiBtc1xuICpcbiAqIEByZXR1cm4ge1Byb21pc2U8TWFpbENoaW1wU3VjY2Vzcz59ICAgICAgICAgICAgT3IgcmVqZWN0cyB3aXRoIE1haWxDaGltcEVycm9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0ICh7IGVtYWlsLCBjdXN0b21GaWVsZHMsIGxpc3ROYW1lLCB1SUQsIGF1ZGllbmNlSUQsIHRpbWVvdXQgPSAzMDAwIH0pID0+IHtcbiAgdmFsaWRhdGVGaWVsZHMoeyBlbWFpbCwgbGlzdE5hbWUsIHVJRCwgYXVkaWVuY2VJRCB9KVxuICBjb25zdCB1cmwgPSBgLy8ke2xpc3ROYW1lfS5saXN0LW1hbmFnZS5jb21gXG4gIGNvbnN0IGVuZHBvaW50ID0gJy9zdWJzY3JpYmUvcG9zdC1qc29uJ1xuICBsZXQgcGFyYW1ldGVycyA9IHtcbiAgICB1OiB1SUQsXG4gICAgaWQ6IGF1ZGllbmNlSUQsXG4gICAgRU1BSUw6IGVtYWlsLFxuICAgIC4uLmN1c3RvbUZpZWxkc1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLm1hcChrZXkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnNba2V5XSl9YCkuam9pbignJicpXG4gICAgY29uc3QgZnVsbFVSTCA9IGAke3VybH0ke2VuZHBvaW50fT8ke3F1ZXJ5U3RyaW5nfWBcbiAgICBqc29ucChmdWxsVVJMLCB7XG4gICAgICBwYXJhbTogJ2MnLFxuICAgICAgdGltZW91dFxuICAgIH0sIChlcnIsIGRhdGEpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnIpIHRocm93IGVyclxuICAgICAgICBpZiAoZGF0YS5yZXN1bHQgPT09ICdlcnJvcicpIHRocm93IG5ldyBNYWlsQ2hpbXBFcnJvcihkYXRhLm1zZylcbiAgICAgICAgcmVzb2x2ZShuZXcgTWFpbENoaW1wU3VjY2VzcyhkYXRhLm1zZykpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfSlcbn1cbiJdfQ==
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

@@ -13,4 +11,6 @@

var _ = _interopRequireWildcard(require("./"));
var _ = _interopRequireDefault(require("./"));
var _MailChimpError = _interopRequireDefault(require("./MailChimpError"));
describe('subscribe', function () {

@@ -72,2 +72,7 @@ var email, uID, listName, audienceID;

beforeEach(function () {
data = {
msg: 'Success',
result: 'success'
};
_jsonp["default"].mockImplementation(function (url, options, cb) {

@@ -92,47 +97,36 @@ cb(null, data);

});
describe('generic success', function () {
beforeEach(function () {
data = {
msg: 'Success',
result: 'success'
};
});
test('it resolves with the GENERIC success code',
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee() {
var result;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _["default"])({
email: email,
uID: uID,
audienceID: audienceID,
listName: listName
});
test('it resolves with the success message',
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee() {
var result;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _["default"])({
email: email,
uID: uID,
audienceID: audienceID,
listName: listName
});
case 2:
result = _context.sent;
expect(result.getCode()).toEqual(_.SUCCESS_CODES.GENERIC);
case 2:
result = _context.sent;
expect(result.message).toEqual('Success');
case 4:
case "end":
return _context.stop();
}
case 4:
case "end":
return _context.stop();
}
}, _callee);
})));
});
describe('when a user needs to confirm their email address', function () {
beforeEach(function () {
data = {
msg: 'Almost finished... We need to confirm your email address. To complete the subscription process, please click the link in the email we just sent you.',
result: 'success'
};
});
test('it resolves with the CONFIRM_EMAIL_ADDRESS success code',
}
}, _callee);
})));
});
describe('errors', function () {
var err, error;
describe('jsonp error', function () {
beforeEach(
/*#__PURE__*/

@@ -142,3 +136,2 @@ (0, _asyncToGenerator2["default"])(

_regenerator["default"].mark(function _callee2() {
var result;
return _regenerator["default"].wrap(function _callee2$(_context2) {

@@ -148,3 +141,10 @@ while (1) {

case 0:
_context2.next = 2;
err = new Error('jsonp error');
_jsonp["default"].mockImplementation(function (url, options, cb) {
return cb(err, {});
});
_context2.prev = 2;
_context2.next = 5;
return (0, _["default"])({

@@ -157,7 +157,12 @@ email: email,

case 2:
result = _context2.sent;
expect(result.getCode()).toEqual(_.SUCCESS_CODES.CONFIRM_EMAIL_ADDRESS);
case 5:
_context2.next = 10;
break;
case 4:
case 7:
_context2.prev = 7;
_context2.t0 = _context2["catch"](2);
error = _context2.t0;
case 10:
case "end":

@@ -167,23 +172,32 @@ return _context2.stop();

}
}, _callee2);
}, _callee2, null, [[2, 7]]);
})));
test('it rejects with the jsonp error message', function () {
expect(error.message).toEqual('jsonp error');
});
test('the error is not an instance of MailChimpError', function () {
expect(error).not.toBeInstanceOf(_MailChimpError["default"]);
});
});
});
describe('errors', function () {
var error = {};
function assignError() {
return _assignError.apply(this, arguments);
}
function _assignError() {
_assignError = (0, _asyncToGenerator2["default"])(
describe('mailchimp errors', function () {
var data = {
result: 'error'
};
beforeEach(
/*#__PURE__*/
_regenerator["default"].mark(function _callee11() {
return _regenerator["default"].wrap(function _callee11$(_context11) {
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee3() {
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context11.prev = _context11.next) {
switch (_context3.prev = _context3.next) {
case 0:
_context11.prev = 0;
_context11.next = 3;
data.msg = 'Mailchimp error';
_jsonp["default"].mockImplementation(function (url, options, cb) {
return cb(null, data);
});
_context3.prev = 2;
_context3.next = 5;
return (0, _["default"])({

@@ -196,246 +210,27 @@ email: email,

case 3:
_context11.next = 8;
case 5:
_context3.next = 10;
break;
case 5:
_context11.prev = 5;
_context11.t0 = _context11["catch"](0);
error = _context11.t0;
case 7:
_context3.prev = 7;
_context3.t0 = _context3["catch"](2);
error = _context3.t0;
case 8:
case 10:
case "end":
return _context11.stop();
return _context3.stop();
}
}
}, _callee11, null, [[0, 5]]);
}));
return _assignError.apply(this, arguments);
}
describe('jsonp error', function () {
var err;
beforeEach(function () {
_jsonp["default"].mockImplementation(function (url, options, cb) {
cb(err, {});
});
}, _callee3, null, [[2, 7]]);
})));
test('it rejects with the mailchimp error message', function () {
expect(error.message).toEqual('Mailchimp error');
});
describe('generic errors', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee3() {
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
err = new Error('Generic error');
_context3.next = 3;
return assignError();
case 3:
case "end":
return _context3.stop();
}
}
}, _callee3);
})));
test('it rejects with the GENERIC error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.GENERIC);
});
test('it rejects with a MailChimpError instance', function () {
expect(error).toBeInstanceOf(_MailChimpError["default"]);
});
describe('timeout errors', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee4() {
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
err = new Error('Timeout');
_context4.next = 3;
return assignError();
case 3:
case "end":
return _context4.stop();
}
}
}, _callee4);
})));
test('it rejects with the TIMEOUT error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.TIMEOUT);
});
});
});
describe('mailchimp errors', function () {
var data = {
result: 'error'
};
beforeEach(function () {
_jsonp["default"].mockImplementation(function (url, options, cb) {
cb(null, data);
});
});
describe('generic error', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee5() {
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
data.msg = 'borked';
_context5.next = 3;
return assignError();
case 3:
case "end":
return _context5.stop();
}
}
}, _callee5);
})));
test('it rejects with the GENERIC error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.GENERIC);
});
});
describe('invalid emails', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee6() {
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
data.msg = '0 - This email address looks fake or invalid. Please enter a real email address.';
_context6.next = 3;
return assignError();
case 3:
case "end":
return _context6.stop();
}
}
}, _callee6);
})));
test('it rejects with the INVALID_EMAIL error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.INVALID_EMAIL);
});
});
describe('messages beginning with `0 - `', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee7() {
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
data.msg = '0 - Some error';
_context7.next = 3;
return assignError();
case 3:
case "end":
return _context7.stop();
}
}
}, _callee7);
})));
test('it rejects with the INVALID_EMAIL error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.INVALID_EMAIL);
});
});
describe('invalid email domain', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee8() {
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
data.msg = '0 - The domain portion of the email address is invalid (the portion after the @: example)';
_context8.next = 3;
return assignError();
case 3:
case "end":
return _context8.stop();
}
}
}, _callee8);
})));
test('it rejects with the INVALID_EMAIL_DOMAIN error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.INVALID_EMAIL_DOMAIN);
});
});
describe('invalid email username', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee9() {
return _regenerator["default"].wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
data.msg = '0 - The username portion of the email address is invalid (the portion before the @: .)';
_context9.next = 3;
return assignError();
case 3:
case "end":
return _context9.stop();
}
}
}, _callee9);
})));
test('it rejects with the INVALID_EMAIL_USERNAME error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.INVALID_EMAIL_USERNAME);
});
});
describe('email already subscribed', function () {
beforeEach(
/*#__PURE__*/
(0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee10() {
return _regenerator["default"].wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
data.msg = 'example@example.org is already subscribed to list abc.def. <a href="https://abc.def.list-manage.com/subscribe/send-email?e=abcdefg">Click here to update your profile</a>';
_context10.next = 3;
return assignError();
case 3:
case "end":
return _context10.stop();
}
}
}, _callee10);
})));
test('it rejects with the EMAIL_ALREADY_SUBSCRIBED error code', function () {
expect(error.getCode()).toEqual(_.ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED);
});
test('it returns the manage link in context', function () {
expect(error.getContext()).toEqual({
manageSubscriptionLink: 'https://abc.def.list-manage.com/subscribe/send-email?e=abcdefg'
});
});
});
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50ZXN0LmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZW1haWwiLCJ1SUQiLCJsaXN0TmFtZSIsImF1ZGllbmNlSUQiLCJiZWZvcmVFYWNoIiwidGVzdCIsImV4cGVjdCIsInRvVGhyb3dFcnJvciIsImRhdGEiLCJqc29ucCIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsInVybCIsIm9wdGlvbnMiLCJjYiIsImV4cGVjdGVkVVJMIiwidGltZW91dCIsInRvQmVDYWxsZWRXaXRoIiwicGFyYW0iLCJhbnkiLCJGdW5jdGlvbiIsIm1zZyIsInJlc3VsdCIsImdldENvZGUiLCJ0b0VxdWFsIiwiU1VDQ0VTU19DT0RFUyIsIkdFTkVSSUMiLCJDT05GSVJNX0VNQUlMX0FERFJFU1MiLCJlcnJvciIsImFzc2lnbkVycm9yIiwiZXJyIiwiRXJyb3IiLCJFUlJPUl9DT0RFUyIsIlRJTUVPVVQiLCJJTlZBTElEX0VNQUlMIiwiSU5WQUxJRF9FTUFJTF9ET01BSU4iLCJJTlZBTElEX0VNQUlMX1VTRVJOQU1FIiwiRU1BSUxfQUxSRUFEWV9TVUJTQ1JJQkVEIiwiZ2V0Q29udGV4dCIsIm1hbmFnZVN1YnNjcmlwdGlvbkxpbmsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQUEsUUFBUSxDQUFDLFdBQUQsRUFBYyxZQUFNO0FBQzFCLE1BQUlDLEtBQUosRUFBV0MsR0FBWCxFQUFnQkMsUUFBaEIsRUFBMEJDLFVBQTFCO0FBQ0FDLEVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2ZKLElBQUFBLEtBQUssR0FBRyxxQkFBUjtBQUNBQyxJQUFBQSxHQUFHLEdBQUcsUUFBTjtBQUNBQyxJQUFBQSxRQUFRLEdBQUcsU0FBWDtBQUNBQyxJQUFBQSxVQUFVLEdBQUcsS0FBYjtBQUNELEdBTFMsQ0FBVjtBQU9BSixFQUFBQSxRQUFRLENBQUMsOEJBQUQsRUFBaUMsWUFBTTtBQUM3Q00sSUFBQUEsSUFBSSxDQUFDLG9CQUFELEVBQXVCLFlBQU07QUFD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LEVBQUQsQ0FBTixDQUF3QkMsT0FBeEIsQ0FBZ0NRLGNBQVlJLHNCQUE1QztBQUNELFNBRkcsQ0FBSjtBQUdELE9BVE8sQ0FBUjtBQVdBcEMsTUFBQUEsUUFBUSxDQUFDLDBCQUFELEVBQTZCLFlBQU07QUFDekNLLFFBQUFBLFVBQVU7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1RJLGtCQUFBQSxJQUFJLENBQUNZLEdBQUwsR0FBVywyS0FBWDtBQURTO0FBQUEseUJBRUhRLFdBQVcsRUFGUjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFELEdBQVY7QUFLQXZCLFFBQUFBLElBQUksQ0FBQyx5REFBRCxFQUE0RCxZQUFNO0FBQ3BFQyxVQUFBQSxNQUFNLENBQUNxQixLQUFLLENBQUNMLE9BQU4sRUFBRCxDQUFOLENBQXdCQyxPQUF4QixDQUFnQ1EsY0FBWUssd0JBQTVDO0FBQ0QsU0FGRyxDQUFKO0FBSUEvQixRQUFBQSxJQUFJLENBQUMsdUNBQUQsRUFBMEMsWUFBTTtBQUNsREMsVUFBQUEsTUFBTSxDQUFDcUIsS0FBSyxDQUFDVSxVQUFOLEVBQUQsQ0FBTixDQUEyQmQsT0FBM0IsQ0FBbUM7QUFDakNlLFlBQUFBLHNCQUFzQixFQUFFO0FBRFMsV0FBbkM7QUFHRCxTQUpHLENBQUo7QUFLRCxPQWZPLENBQVI7QUFnQkQsS0EvRU8sQ0FBUjtBQWdGRCxHQTFITyxDQUFSO0FBMkhELENBN01PLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQganNvbnAgZnJvbSAnanNvbnAnXG5pbXBvcnQgc3Vic2NyaWJlLCB7IEVSUk9SX0NPREVTLCBTVUNDRVNTX0NPREVTIH0gZnJvbSAnLi8nXG5cbmRlc2NyaWJlKCdzdWJzY3JpYmUnLCAoKSA9PiB7XG4gIGxldCBlbWFpbCwgdUlELCBsaXN0TmFtZSwgYXVkaWVuY2VJRFxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBlbWFpbCA9ICdleGFtcGxlQGV4YW1wbGUub3JnJ1xuICAgIHVJRCA9ICdhYmMxMjMnXG4gICAgbGlzdE5hbWUgPSAnYWJjLmRlZidcbiAgICBhdWRpZW5jZUlEID0gJ3h5eidcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiB0aGUgbGlzdE5hbWUgaXMgaW52YWxpZCcsICgpID0+IHtcbiAgICB0ZXN0KCdpdCB0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmUoeyBlbWFpbCwgdUlELCBhdWRpZW5jZUlELCBsaXN0TmFtZTogJ2h0dHBzOi8vbXlsaXN0LnVzLmxpc3RzLmNvbScgfSlcbiAgICAgIH0pLnRvVGhyb3dFcnJvcigvXkludmFsaWQgdmFsdWUgJ2h0dHBzOlxcL1xcL215bGlzdFxcLnVzXFwubGlzdHNcXC5jb20nIGZvciAnbGlzdE5hbWUnLylcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd3aGVuIG5vIGVtYWlsIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIHRlc3QoJ2l0IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIHN1YnNjcmliZSh7IHVJRCwgYXVkaWVuY2VJRCwgbGlzdE5hbWUgfSlcbiAgICAgIH0pLnRvVGhyb3dFcnJvcihgTWlzc2luZyAnZW1haWwnYClcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd3aGVuIG5vIHVJRCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICB0ZXN0KCdpdCB0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmUoeyBlbWFpbCwgYXVkaWVuY2VJRCwgbGlzdE5hbWUgfSlcbiAgICAgIH0pLnRvVGhyb3dFcnJvcihgTWlzc2luZyAndUlEJ2ApXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiBubyBhdWRpZW5jZUlEIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIHRlc3QoJ2l0IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIHN1YnNjcmliZSh7IGVtYWlsLCB1SUQsIGxpc3ROYW1lIH0pXG4gICAgICB9KS50b1Rocm93RXJyb3IoYE1pc3NpbmcgJ2F1ZGllbmNlSUQnYClcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdzdWNjZXNzJywgKCkgPT4ge1xuICAgIGxldCBkYXRhXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBqc29ucC5tb2NrSW1wbGVtZW50YXRpb24oKHVybCwgb3B0aW9ucywgY2IpID0+IHtcbiAgICAgICAgY2IobnVsbCwgZGF0YSlcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHRlc3QoJ2pzb25wIGlzIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50cycsICgpID0+IHtcbiAgICAgIGVtYWlsID0gJ2V4YW1wbGVAZXhhbXBsZS5vcmcnXG4gICAgICBjb25zdCBleHBlY3RlZFVSTCA9IGAvLyR7bGlzdE5hbWV9Lmxpc3QtbWFuYWdlLmNvbS9zdWJzY3JpYmUvcG9zdC1qc29uP3U9JHt1SUR9JmlkPSR7YXVkaWVuY2VJRH0mRU1BSUw9ZXhhbXBsZSU0MGV4YW1wbGUub3JnYFxuICAgICAgc3Vic2NyaWJlKHsgZW1haWwsIHVJRCwgYXVkaWVuY2VJRCwgbGlzdE5hbWUsIHRpbWVvdXQ6IDIwMDAgfSlcbiAgICAgIGV4cGVjdChqc29ucCkudG9CZUNhbGxlZFdpdGgoZXhwZWN0ZWRVUkwsIHsgcGFyYW06ICdjJywgdGltZW91dDogMjAwMCB9LCBleHBlY3QuYW55KEZ1bmN0aW9uKSlcbiAgICB9KVxuXG4gICAgZGVzY3JpYmUoJ2dlbmVyaWMgc3VjY2VzcycsICgpID0+IHtcbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBkYXRhID0geyBtc2c6ICdTdWNjZXNzJywgcmVzdWx0OiAnc3VjY2VzcycgfVxuICAgICAgfSlcblxuICAgICAgdGVzdCgnaXQgcmVzb2x2ZXMgd2l0aCB0aGUgR0VORVJJQyBzdWNjZXNzIGNvZGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN1YnNjcmliZSh7IGVtYWlsLCB1SUQsIGF1ZGllbmNlSUQsIGxpc3ROYW1lIH0pXG4gICAgICAgIGV4cGVjdChyZXN1bHQuZ2V0Q29kZSgpKS50b0VxdWFsKFNVQ0NFU1NfQ09ERVMuR0VORVJJQylcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGRlc2NyaWJlKCd3aGVuIGEgdXNlciBuZWVkcyB0byBjb25maXJtIHRoZWlyIGVtYWlsIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICBtc2c6ICdBbG1vc3QgZmluaXNoZWQuLi4gV2UgbmVlZCB0byBjb25maXJtIHlvdXIgZW1haWwgYWRkcmVzcy4gVG8gY29tcGxldGUgdGhlIHN1YnNjcmlwdGlvbiBwcm9jZXNzLCBwbGVhc2UgY2xpY2sgdGhlIGxpbmsgaW4gdGhlIGVtYWlsIHdlIGp1c3Qgc2VudCB5b3UuJyxcbiAgICAgICAgICByZXN1bHQ6ICdzdWNjZXNzJ1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICB0ZXN0KCdpdCByZXNvbHZlcyB3aXRoIHRoZSBDT05GSVJNX0VNQUlMX0FERFJFU1Mgc3VjY2VzcyBjb2RlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdWJzY3JpYmUoeyBlbWFpbCwgdUlELCBhdWRpZW5jZUlELCBsaXN0TmFtZSB9KVxuICAgICAgICBleHBlY3QocmVzdWx0LmdldENvZGUoKSkudG9FcXVhbChTVUNDRVNTX0NPREVTLkNPTkZJUk1fRU1BSUxfQUREUkVTUylcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnZXJyb3JzJywgKCkgPT4ge1xuICAgIGxldCBlcnJvciA9IHt9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBhc3NpZ25FcnJvciAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzdWJzY3JpYmUoeyBlbWFpbCwgdUlELCBhdWRpZW5jZUlELCBsaXN0TmFtZSB9KVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9yID0gZXJyXG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVzY3JpYmUoJ2pzb25wIGVycm9yJywgKCkgPT4ge1xuICAgICAgbGV0IGVyclxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIGpzb25wLm1vY2tJbXBsZW1lbnRhdGlvbigodXJsLCBvcHRpb25zLCBjYikgPT4ge1xuICAgICAgICAgIGNiKGVyciwge30pXG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgICBkZXNjcmliZSgnZ2VuZXJpYyBlcnJvcnMnLCAoKSA9PiB7XG4gICAgICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGVyciA9IG5ldyBFcnJvcignR2VuZXJpYyBlcnJvcicpXG4gICAgICAgICAgYXdhaXQgYXNzaWduRXJyb3IoKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRlc3QoJ2l0IHJlamVjdHMgd2l0aCB0aGUgR0VORVJJQyBlcnJvciBjb2RlJywgKCkgPT4ge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5nZXRDb2RlKCkpLnRvRXF1YWwoRVJST1JfQ09ERVMuR0VORVJJQylcbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIGRlc2NyaWJlKCd0aW1lb3V0IGVycm9ycycsICgpID0+IHtcbiAgICAgICAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgZXJyID0gbmV3IEVycm9yKCdUaW1lb3V0JylcbiAgICAgICAgICBhd2FpdCBhc3NpZ25FcnJvcigpXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGVzdCgnaXQgcmVqZWN0cyB3aXRoIHRoZSBUSU1FT1VUIGVycm9yIGNvZGUnLCAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmdldENvZGUoKSkudG9FcXVhbChFUlJPUl9DT0RFUy5USU1FT1VUKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgZGVzY3JpYmUoJ21haWxjaGltcCBlcnJvcnMnLCAoKSA9PiB7XG4gICAgICBsZXQgZGF0YSA9IHsgcmVzdWx0OiAnZXJyb3InIH1cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBqc29ucC5tb2NrSW1wbGVtZW50YXRpb24oKHVybCwgb3B0aW9ucywgY2IpID0+IHtcbiAgICAgICAgICBjYihudWxsLCBkYXRhKVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgZGVzY3JpYmUoJ2dlbmVyaWMgZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGRhdGEubXNnID0gJ2JvcmtlZCdcbiAgICAgICAgICBhd2FpdCBhc3NpZ25FcnJvcigpXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGVzdCgnaXQgcmVqZWN0cyB3aXRoIHRoZSBHRU5FUklDIGVycm9yIGNvZGUnLCAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmdldENvZGUoKSkudG9FcXVhbChFUlJPUl9DT0RFUy5HRU5FUklDKVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgZGVzY3JpYmUoJ2ludmFsaWQgZW1haWxzJywgKCkgPT4ge1xuICAgICAgICBiZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBkYXRhLm1zZyA9ICcwIC0gVGhpcyBlbWFpbCBhZGRyZXNzIGxvb2tzIGZha2Ugb3IgaW52YWxpZC4gUGxlYXNlIGVudGVyIGEgcmVhbCBlbWFpbCBhZGRyZXNzLidcbiAgICAgICAgICBhd2FpdCBhc3NpZ25FcnJvcigpXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGVzdCgnaXQgcmVqZWN0cyB3aXRoIHRoZSBJTlZBTElEX0VNQUlMIGVycm9yIGNvZGUnLCAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmdldENvZGUoKSkudG9FcXVhbChFUlJPUl9DT0RFUy5JTlZBTElEX0VNQUlMKVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgZGVzY3JpYmUoJ21lc3NhZ2VzIGJlZ2lubmluZyB3aXRoIGAwIC0gYCcsICgpID0+IHtcbiAgICAgICAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgZGF0YS5tc2cgPSAnMCAtIFNvbWUgZXJyb3InXG4gICAgICAgICAgYXdhaXQgYXNzaWduRXJyb3IoKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRlc3QoJ2l0IHJlamVjdHMgd2l0aCB0aGUgSU5WQUxJRF9FTUFJTCBlcnJvciBjb2RlJywgKCkgPT4ge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5nZXRDb2RlKCkpLnRvRXF1YWwoRVJST1JfQ09ERVMuSU5WQUxJRF9FTUFJTClcbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIGRlc2NyaWJlKCdpbnZhbGlkIGVtYWlsIGRvbWFpbicsICgpID0+IHtcbiAgICAgICAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgZGF0YS5tc2cgPSAnMCAtIFRoZSBkb21haW4gcG9ydGlvbiBvZiB0aGUgZW1haWwgYWRkcmVzcyBpcyBpbnZhbGlkICh0aGUgcG9ydGlvbiBhZnRlciB0aGUgQDogZXhhbXBsZSknXG4gICAgICAgICAgYXdhaXQgYXNzaWduRXJyb3IoKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRlc3QoJ2l0IHJlamVjdHMgd2l0aCB0aGUgSU5WQUxJRF9FTUFJTF9ET01BSU4gZXJyb3IgY29kZScsICgpID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuZ2V0Q29kZSgpKS50b0VxdWFsKEVSUk9SX0NPREVTLklOVkFMSURfRU1BSUxfRE9NQUlOKVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgZGVzY3JpYmUoJ2ludmFsaWQgZW1haWwgdXNlcm5hbWUnLCAoKSA9PiB7XG4gICAgICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGRhdGEubXNnID0gJzAgLSBUaGUgdXNlcm5hbWUgcG9ydGlvbiBvZiB0aGUgZW1haWwgYWRkcmVzcyBpcyBpbnZhbGlkICh0aGUgcG9ydGlvbiBiZWZvcmUgdGhlIEA6IC4pJ1xuICAgICAgICAgIGF3YWl0IGFzc2lnbkVycm9yKClcbiAgICAgICAgfSlcblxuICAgICAgICB0ZXN0KCdpdCByZWplY3RzIHdpdGggdGhlIElOVkFMSURfRU1BSUxfVVNFUk5BTUUgZXJyb3IgY29kZScsICgpID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuZ2V0Q29kZSgpKS50b0VxdWFsKEVSUk9SX0NPREVTLklOVkFMSURfRU1BSUxfVVNFUk5BTUUpXG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgICBkZXNjcmliZSgnZW1haWwgYWxyZWFkeSBzdWJzY3JpYmVkJywgKCkgPT4ge1xuICAgICAgICBiZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBkYXRhLm1zZyA9ICdleGFtcGxlQGV4YW1wbGUub3JnIGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0byBsaXN0IGFiYy5kZWYuIDxhIGhyZWY9XCJodHRwczovL2FiYy5kZWYubGlzdC1tYW5hZ2UuY29tL3N1YnNjcmliZS9zZW5kLWVtYWlsP2U9YWJjZGVmZ1wiPkNsaWNrIGhlcmUgdG8gdXBkYXRlIHlvdXIgcHJvZmlsZTwvYT4nXG4gICAgICAgICAgYXdhaXQgYXNzaWduRXJyb3IoKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRlc3QoJ2l0IHJlamVjdHMgd2l0aCB0aGUgRU1BSUxfQUxSRUFEWV9TVUJTQ1JJQkVEIGVycm9yIGNvZGUnLCAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmdldENvZGUoKSkudG9FcXVhbChFUlJPUl9DT0RFUy5FTUFJTF9BTFJFQURZX1NVQlNDUklCRUQpXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGVzdCgnaXQgcmV0dXJucyB0aGUgbWFuYWdlIGxpbmsgaW4gY29udGV4dCcsICgpID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuZ2V0Q29udGV4dCgpKS50b0VxdWFsKHtcbiAgICAgICAgICAgIG1hbmFnZVN1YnNjcmlwdGlvbkxpbms6ICdodHRwczovL2FiYy5kZWYubGlzdC1tYW5hZ2UuY29tL3N1YnNjcmliZS9zZW5kLWVtYWlsP2U9YWJjZGVmZydcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufSlcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50ZXN0LmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZW1haWwiLCJ1SUQiLCJsaXN0TmFtZSIsImF1ZGllbmNlSUQiLCJiZWZvcmVFYWNoIiwidGVzdCIsImV4cGVjdCIsInRvVGhyb3dFcnJvciIsImRhdGEiLCJtc2ciLCJyZXN1bHQiLCJqc29ucCIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsInVybCIsIm9wdGlvbnMiLCJjYiIsImV4cGVjdGVkVVJMIiwidGltZW91dCIsInRvQmVDYWxsZWRXaXRoIiwicGFyYW0iLCJhbnkiLCJGdW5jdGlvbiIsIm1lc3NhZ2UiLCJ0b0VxdWFsIiwiZXJyIiwiZXJyb3IiLCJFcnJvciIsIm5vdCIsInRvQmVJbnN0YW5jZU9mIiwiTWFpbENoaW1wRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUFBLFFBQVEsQ0FBQyxXQUFELEVBQWMsWUFBTTtBQUMxQixNQUFJQyxLQUFKLEVBQVdDLEdBQVgsRUFBZ0JDLFFBQWhCLEVBQTBCQyxVQUExQjtBQUNBQyxFQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmSixJQUFBQSxLQUFLLEdBQUcscUJBQVI7QUFDQUMsSUFBQUEsR0FBRyxHQUFHLFFBQU47QUFDQUMsSUFBQUEsUUFBUSxHQUFHLFNBQVg7QUFDQUMsSUFBQUEsVUFBVSxHQUFHLEtBQWI7QUFDRCxHQUxTLENBQVY7QUFPQUosRUFBQUEsUUFBUSxDQUFDLDhCQUFELEVBQWlDLFlBQU07QUFDN0NNLElBQUFBLElBQUksQ0FBQyxvQkFBRCxFQUF1QixZQUFNO0FBQy9CQyxNQUFBQSxNQUFNLENBQUMsWUFBTTtBQUNYLDBCQUFVO0FBQUVOLFVBQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTQyxVQUFBQSxHQUFHLEVBQUhBLEdBQVQ7QUFBY0UsVUFBQUEsVUFBVSxFQUFWQSxVQUFkO0FBQTBCRCxVQUFBQSxRQUFRLEVBQUU7QUFBcEMsU0FBVjtBQUNELE9BRkssQ0FBTixDQUVH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QUE4QyxZQUFNO0FBQ3REQyxRQUFBQSxNQUFNLENBQUNtQixLQUFELENBQU4sQ0FBY0csY0FBZCxDQUE2QkMsMEJBQTdCO0FBQ0QsT0FGRyxDQUFKO0FBR0QsS0FuQk8sQ0FBUjtBQW9CRCxHQTFDTyxDQUFSO0FBMkNELENBMUdPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQganNvbnAgZnJvbSAnanNvbnAnXG5pbXBvcnQgc3Vic2NyaWJlIGZyb20gJy4vJ1xuaW1wb3J0IE1haWxDaGltcEVycm9yIGZyb20gJy4vTWFpbENoaW1wRXJyb3InXG5cbmRlc2NyaWJlKCdzdWJzY3JpYmUnLCAoKSA9PiB7XG4gIGxldCBlbWFpbCwgdUlELCBsaXN0TmFtZSwgYXVkaWVuY2VJRFxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBlbWFpbCA9ICdleGFtcGxlQGV4YW1wbGUub3JnJ1xuICAgIHVJRCA9ICdhYmMxMjMnXG4gICAgbGlzdE5hbWUgPSAnYWJjLmRlZidcbiAgICBhdWRpZW5jZUlEID0gJ3h5eidcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiB0aGUgbGlzdE5hbWUgaXMgaW52YWxpZCcsICgpID0+IHtcbiAgICB0ZXN0KCdpdCB0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmUoeyBlbWFpbCwgdUlELCBhdWRpZW5jZUlELCBsaXN0TmFtZTogJ2h0dHBzOi8vbXlsaXN0LnVzLmxpc3RzLmNvbScgfSlcbiAgICAgIH0pLnRvVGhyb3dFcnJvcigvXkludmFsaWQgdmFsdWUgJ2h0dHBzOlxcL1xcL215bGlzdFxcLnVzXFwubGlzdHNcXC5jb20nIGZvciAnbGlzdE5hbWUnLylcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd3aGVuIG5vIGVtYWlsIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIHRlc3QoJ2l0IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIHN1YnNjcmliZSh7IHVJRCwgYXVkaWVuY2VJRCwgbGlzdE5hbWUgfSlcbiAgICAgIH0pLnRvVGhyb3dFcnJvcihgTWlzc2luZyAnZW1haWwnYClcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd3aGVuIG5vIHVJRCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICB0ZXN0KCdpdCB0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmUoeyBlbWFpbCwgYXVkaWVuY2VJRCwgbGlzdE5hbWUgfSlcbiAgICAgIH0pLnRvVGhyb3dFcnJvcihgTWlzc2luZyAndUlEJ2ApXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiBubyBhdWRpZW5jZUlEIGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIHRlc3QoJ2l0IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIHN1YnNjcmliZSh7IGVtYWlsLCB1SUQsIGxpc3ROYW1lIH0pXG4gICAgICB9KS50b1Rocm93RXJyb3IoYE1pc3NpbmcgJ2F1ZGllbmNlSUQnYClcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdzdWNjZXNzJywgKCkgPT4ge1xuICAgIGxldCBkYXRhXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBkYXRhID0geyBtc2c6ICdTdWNjZXNzJywgcmVzdWx0OiAnc3VjY2VzcycgfVxuICAgICAganNvbnAubW9ja0ltcGxlbWVudGF0aW9uKCh1cmwsIG9wdGlvbnMsIGNiKSA9PiB7XG4gICAgICAgIGNiKG51bGwsIGRhdGEpXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICB0ZXN0KCdqc29ucCBpcyBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudHMnLCAoKSA9PiB7XG4gICAgICBlbWFpbCA9ICdleGFtcGxlQGV4YW1wbGUub3JnJ1xuICAgICAgY29uc3QgZXhwZWN0ZWRVUkwgPSBgLy8ke2xpc3ROYW1lfS5saXN0LW1hbmFnZS5jb20vc3Vic2NyaWJlL3Bvc3QtanNvbj91PSR7dUlEfSZpZD0ke2F1ZGllbmNlSUR9JkVNQUlMPWV4YW1wbGUlNDBleGFtcGxlLm9yZ2BcbiAgICAgIHN1YnNjcmliZSh7IGVtYWlsLCB1SUQsIGF1ZGllbmNlSUQsIGxpc3ROYW1lLCB0aW1lb3V0OiAyMDAwIH0pXG4gICAgICBleHBlY3QoanNvbnApLnRvQmVDYWxsZWRXaXRoKGV4cGVjdGVkVVJMLCB7IHBhcmFtOiAnYycsIHRpbWVvdXQ6IDIwMDAgfSwgZXhwZWN0LmFueShGdW5jdGlvbikpXG4gICAgfSlcblxuICAgIHRlc3QoJ2l0IHJlc29sdmVzIHdpdGggdGhlIHN1Y2Nlc3MgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN1YnNjcmliZSh7IGVtYWlsLCB1SUQsIGF1ZGllbmNlSUQsIGxpc3ROYW1lIH0pXG4gICAgICBleHBlY3QocmVzdWx0Lm1lc3NhZ2UpLnRvRXF1YWwoJ1N1Y2Nlc3MnKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ2Vycm9ycycsICgpID0+IHtcbiAgICBsZXQgZXJyLCBlcnJvclxuICAgIGRlc2NyaWJlKCdqc29ucCBlcnJvcicsICgpID0+IHtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgICBlcnIgPSBuZXcgRXJyb3IoJ2pzb25wIGVycm9yJylcbiAgICAgICAganNvbnAubW9ja0ltcGxlbWVudGF0aW9uKCh1cmwsIG9wdGlvbnMsIGNiKSA9PiBjYihlcnIsIHt9KSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzdWJzY3JpYmUoeyBlbWFpbCwgdUlELCBhdWRpZW5jZUlELCBsaXN0TmFtZSB9KVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBlcnJvciA9IGVyclxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICB0ZXN0KCdpdCByZWplY3RzIHdpdGggdGhlIGpzb25wIGVycm9yIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0VxdWFsKCdqc29ucCBlcnJvcicpXG4gICAgICB9KVxuXG4gICAgICB0ZXN0KCd0aGUgZXJyb3IgaXMgbm90IGFuIGluc3RhbmNlIG9mIE1haWxDaGltcEVycm9yJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoZXJyb3IpLm5vdC50b0JlSW5zdGFuY2VPZihNYWlsQ2hpbXBFcnJvcilcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGRlc2NyaWJlKCdtYWlsY2hpbXAgZXJyb3JzJywgKCkgPT4ge1xuICAgICAgbGV0IGRhdGEgPSB7IHJlc3VsdDogJ2Vycm9yJyB9XG4gICAgICBiZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGF0YS5tc2cgPSAnTWFpbGNoaW1wIGVycm9yJ1xuICAgICAgICBqc29ucC5tb2NrSW1wbGVtZW50YXRpb24oKHVybCwgb3B0aW9ucywgY2IpID0+IGNiKG51bGwsIGRhdGEpKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHN1YnNjcmliZSh7IGVtYWlsLCB1SUQsIGF1ZGllbmNlSUQsIGxpc3ROYW1lIH0pXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGVycm9yID0gZXJyXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHRlc3QoJ2l0IHJlamVjdHMgd2l0aCB0aGUgbWFpbGNoaW1wIGVycm9yIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0VxdWFsKCdNYWlsY2hpbXAgZXJyb3InKVxuICAgICAgfSlcblxuICAgICAgdGVzdCgnaXQgcmVqZWN0cyB3aXRoIGEgTWFpbENoaW1wRXJyb3IgaW5zdGFuY2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvcikudG9CZUluc3RhbmNlT2YoTWFpbENoaW1wRXJyb3IpXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59KVxuIl19

@@ -12,4 +12,2 @@ "use strict";

var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));

@@ -23,15 +21,2 @@

var _constants = require("./constants");
function getLinks(message) {
var matches = message.match(/<a href=("|')[^"']+/g);
return matches ? matches.map(function (match) {
return match.replace(/^.*?("|')([^"']+)/, '$2');
}) : [];
}
/**
* Transforms error message strings from mailchimp into error codes
*/
var MailChimpError =

@@ -47,42 +32,2 @@ /*#__PURE__*/

(0, _createClass2["default"])(MailChimpError, [{
key: "getCode",
/**
* Get the error code from error code constants
*
* @return {Number} Error code
*/
value: function getCode() {
var message = this.message.toLowerCase();
if (message === 'timeout') return _constants.ERROR_CODES.TIMEOUT;
if (message.includes('this email address looks fake or invalid')) return _constants.ERROR_CODES.INVALID_EMAIL;
if (message.includes('the domain portion of the email address is invalid')) return _constants.ERROR_CODES.INVALID_EMAIL_DOMAIN;
if (message.includes('the username portion of the email address is invalid')) return _constants.ERROR_CODES.INVALID_EMAIL_USERNAME;
if (message.includes('is already subscribed to list')) return _constants.ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED;
if (message.match(/^0\s-\s/)) return _constants.ERROR_CODES.INVALID_EMAIL;
return _constants.ERROR_CODES.GENERIC;
}
/**
* Gets optional context for the error code, by further parsing the error message
*
* @return {Object}
*/
}, {
key: "getContext",
value: function getContext() {
var context = {};
var message = this.message;
var code = this.getCode();
switch (code) {
case _constants.ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED:
context.manageSubscriptionLink = getLinks(message)[0];
break;
}
return context;
}
}]);
return MailChimpError;

@@ -92,2 +37,2 @@ }((0, _wrapNativeSuper2["default"])(Error));

exports["default"] = MailChimpError;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NYWlsQ2hpbXBFcnJvci5qcyJdLCJuYW1lcyI6WyJnZXRMaW5rcyIsIm1lc3NhZ2UiLCJtYXRjaGVzIiwibWF0Y2giLCJtYXAiLCJyZXBsYWNlIiwiTWFpbENoaW1wRXJyb3IiLCJ0b0xvd2VyQ2FzZSIsIkVSUk9SX0NPREVTIiwiVElNRU9VVCIsImluY2x1ZGVzIiwiSU5WQUxJRF9FTUFJTCIsIklOVkFMSURfRU1BSUxfRE9NQUlOIiwiSU5WQUxJRF9FTUFJTF9VU0VSTkFNRSIsIkVNQUlMX0FMUkVBRFlfU1VCU0NSSUJFRCIsIkdFTkVSSUMiLCJjb250ZXh0IiwiY29kZSIsImdldENvZGUiLCJtYW5hZ2VTdWJzY3JpcHRpb25MaW5rIiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBLFNBQVNBLFFBQVQsQ0FBbUJDLE9BQW5CLEVBQTRCO0FBQzFCLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDRSxLQUFSLENBQWMsc0JBQWQsQ0FBaEI7QUFDQSxTQUFPRCxPQUFPLEdBQ1ZBLE9BQU8sQ0FBQ0UsR0FBUixDQUFZLFVBQUFELEtBQUs7QUFBQSxXQUFJQSxLQUFLLENBQUNFLE9BQU4sQ0FBYyxtQkFBZCxFQUFtQyxJQUFuQyxDQUFKO0FBQUEsR0FBakIsQ0FEVSxHQUVWLEVBRko7QUFHRDtBQUVEOzs7OztJQUdxQkMsYzs7Ozs7Ozs7Ozs7OztBQUNuQjs7Ozs7OEJBS1c7QUFDVCxVQUFNTCxPQUFPLEdBQUcsS0FBS0EsT0FBTCxDQUFhTSxXQUFiLEVBQWhCO0FBQ0EsVUFBSU4sT0FBTyxLQUFLLFNBQWhCLEVBQTJCLE9BQU9PLHVCQUFZQyxPQUFuQjtBQUMzQixVQUFJUixPQUFPLENBQUNTLFFBQVIsQ0FBaUIsMENBQWpCLENBQUosRUFBa0UsT0FBT0YsdUJBQVlHLGFBQW5CO0FBQ2xFLFVBQUlWLE9BQU8sQ0FBQ1MsUUFBUixDQUFpQixvREFBakIsQ0FBSixFQUE0RSxPQUFPRix1QkFBWUksb0JBQW5CO0FBQzVFLFVBQUlYLE9BQU8sQ0FBQ1MsUUFBUixDQUFpQixzREFBakIsQ0FBSixFQUE4RSxPQUFPRix1QkFBWUssc0JBQW5CO0FBQzlFLFVBQUlaLE9BQU8sQ0FBQ1MsUUFBUixDQUFpQiwrQkFBakIsQ0FBSixFQUF1RCxPQUFPRix1QkFBWU0sd0JBQW5CO0FBQ3ZELFVBQUliLE9BQU8sQ0FBQ0UsS0FBUixDQUFjLFNBQWQsQ0FBSixFQUE4QixPQUFPSyx1QkFBWUcsYUFBbkI7QUFDOUIsYUFBT0gsdUJBQVlPLE9BQW5CO0FBQ0Q7QUFFRDs7Ozs7Ozs7aUNBS2M7QUFDWixVQUFJQyxPQUFPLEdBQUcsRUFBZDtBQURZLFVBRUpmLE9BRkksR0FFUSxJQUZSLENBRUpBLE9BRkk7QUFHWixVQUFNZ0IsSUFBSSxHQUFHLEtBQUtDLE9BQUwsRUFBYjs7QUFDQSxjQUFRRCxJQUFSO0FBQ0UsYUFBS1QsdUJBQVlNLHdCQUFqQjtBQUNFRSxVQUFBQSxPQUFPLENBQUNHLHNCQUFSLEdBQWlDbkIsUUFBUSxDQUFDQyxPQUFELENBQVIsQ0FBa0IsQ0FBbEIsQ0FBakM7QUFDQTtBQUhKOztBQU1BLGFBQU9lLE9BQVA7QUFDRDs7O29DQWpDeUNJLEsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFUlJPUl9DT0RFUyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5mdW5jdGlvbiBnZXRMaW5rcyAobWVzc2FnZSkge1xuICBjb25zdCBtYXRjaGVzID0gbWVzc2FnZS5tYXRjaCgvPGEgaHJlZj0oXCJ8JylbXlwiJ10rL2cpXG4gIHJldHVybiBtYXRjaGVzXG4gICAgPyBtYXRjaGVzLm1hcChtYXRjaCA9PiBtYXRjaC5yZXBsYWNlKC9eLio/KFwifCcpKFteXCInXSspLywgJyQyJykpXG4gICAgOiBbXVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgZXJyb3IgbWVzc2FnZSBzdHJpbmdzIGZyb20gbWFpbGNoaW1wIGludG8gZXJyb3IgY29kZXNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFpbENoaW1wRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGVycm9yIGNvZGUgZnJvbSBlcnJvciBjb2RlIGNvbnN0YW50c1xuICAgKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IEVycm9yIGNvZGVcbiAgICovXG4gIGdldENvZGUgKCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2UudG9Mb3dlckNhc2UoKVxuICAgIGlmIChtZXNzYWdlID09PSAndGltZW91dCcpIHJldHVybiBFUlJPUl9DT0RFUy5USU1FT1VUXG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ3RoaXMgZW1haWwgYWRkcmVzcyBsb29rcyBmYWtlIG9yIGludmFsaWQnKSkgcmV0dXJuIEVSUk9SX0NPREVTLklOVkFMSURfRU1BSUxcbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygndGhlIGRvbWFpbiBwb3J0aW9uIG9mIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGludmFsaWQnKSkgcmV0dXJuIEVSUk9SX0NPREVTLklOVkFMSURfRU1BSUxfRE9NQUlOXG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ3RoZSB1c2VybmFtZSBwb3J0aW9uIG9mIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGludmFsaWQnKSkgcmV0dXJuIEVSUk9SX0NPREVTLklOVkFMSURfRU1BSUxfVVNFUk5BTUVcbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnaXMgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIGxpc3QnKSkgcmV0dXJuIEVSUk9SX0NPREVTLkVNQUlMX0FMUkVBRFlfU1VCU0NSSUJFRFxuICAgIGlmIChtZXNzYWdlLm1hdGNoKC9eMFxccy1cXHMvKSkgcmV0dXJuIEVSUk9SX0NPREVTLklOVkFMSURfRU1BSUxcbiAgICByZXR1cm4gRVJST1JfQ09ERVMuR0VORVJJQ1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgb3B0aW9uYWwgY29udGV4dCBmb3IgdGhlIGVycm9yIGNvZGUsIGJ5IGZ1cnRoZXIgcGFyc2luZyB0aGUgZXJyb3IgbWVzc2FnZVxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBnZXRDb250ZXh0ICgpIHtcbiAgICBsZXQgY29udGV4dCA9IHt9XG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aGlzXG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0Q29kZSgpXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIEVSUk9SX0NPREVTLkVNQUlMX0FMUkVBRFlfU1VCU0NSSUJFRDpcbiAgICAgICAgY29udGV4dC5tYW5hZ2VTdWJzY3JpcHRpb25MaW5rID0gZ2V0TGlua3MobWVzc2FnZSlbMF1cbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dFxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NYWlsQ2hpbXBFcnJvci5qcyJdLCJuYW1lcyI6WyJNYWlsQ2hpbXBFcnJvciIsIkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQXFCQSxjOzs7Ozs7Ozs7OztvQ0FBdUJDLEsiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBNYWlsQ2hpbXBFcnJvciBleHRlbmRzIEVycm9yIHt9XG4iXX0=

@@ -12,39 +12,13 @@ "use strict";

var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _constants = require("./constants");
var MailChimpSuccess =
/**
* Transforms success messages into codes
*
* @param {String} message The msg from mailchimp
*/
var MailChimpSuccess =
/*#__PURE__*/
function () {
/**
*
* @param {String} message The msg from mailchimp
*/
function MailChimpSuccess(message) {
(0, _classCallCheck2["default"])(this, MailChimpSuccess);
this.message = message;
}
/**
* Gets the success code
*
* @return {Number}
*/
function MailChimpSuccess(message) {
(0, _classCallCheck2["default"])(this, MailChimpSuccess);
this.message = message;
};
(0, _createClass2["default"])(MailChimpSuccess, [{
key: "getCode",
value: function getCode() {
var message = this.message.toLowerCase();
if (message.includes('we need to confirm your email address')) return _constants.SUCCESS_CODES.CONFIRM_EMAIL_ADDRESS;
return _constants.SUCCESS_CODES.GENERIC;
}
}]);
return MailChimpSuccess;
}();
exports["default"] = MailChimpSuccess;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NYWlsQ2hpbXBTdWNjZXNzLmpzIl0sIm5hbWVzIjpbIk1haWxDaGltcFN1Y2Nlc3MiLCJtZXNzYWdlIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsIlNVQ0NFU1NfQ09ERVMiLCJDT05GSVJNX0VNQUlMX0FERFJFU1MiLCJHRU5FUklDIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7OztJQUdxQkEsZ0I7OztBQUNuQjs7OztBQUlBLDRCQUFhQyxPQUFiLEVBQXNCO0FBQUE7QUFDcEIsU0FBS0EsT0FBTCxHQUFlQSxPQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7OzhCQUtXO0FBQ1QsVUFBTUEsT0FBTyxHQUFHLEtBQUtBLE9BQUwsQ0FBYUMsV0FBYixFQUFoQjtBQUNBLFVBQUlELE9BQU8sQ0FBQ0UsUUFBUixDQUFpQix1Q0FBakIsQ0FBSixFQUErRCxPQUFPQyx5QkFBY0MscUJBQXJCO0FBQy9ELGFBQU9ELHlCQUFjRSxPQUFyQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU1VDQ0VTU19DT0RFUyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgc3VjY2VzcyBtZXNzYWdlcyBpbnRvIGNvZGVzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1haWxDaGltcFN1Y2Nlc3Mge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIG1zZyBmcm9tIG1haWxjaGltcFxuICAgKi9cbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3VjY2VzcyBjb2RlXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIGdldENvZGUgKCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2UudG9Mb3dlckNhc2UoKVxuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCd3ZSBuZWVkIHRvIGNvbmZpcm0geW91ciBlbWFpbCBhZGRyZXNzJykpIHJldHVybiBTVUNDRVNTX0NPREVTLkNPTkZJUk1fRU1BSUxfQUREUkVTU1xuICAgIHJldHVybiBTVUNDRVNTX0NPREVTLkdFTkVSSUNcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NYWlsQ2hpbXBTdWNjZXNzLmpzIl0sIm5hbWVzIjpbIk1haWxDaGltcFN1Y2Nlc3MiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFxQkEsZ0I7QUFDbkI7Ozs7QUFJQSwwQkFBYUMsT0FBYixFQUFzQjtBQUFBO0FBQ3BCLE9BQUtBLE9BQUwsR0FBZUEsT0FBZjtBQUNELEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBNYWlsQ2hpbXBTdWNjZXNzIHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIFRoZSBtc2cgZnJvbSBtYWlsY2hpbXBcbiAgICovXG4gIGNvbnN0cnVjdG9yIChtZXNzYWdlKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICB9XG59XG4iXX0=
{
"name": "@input-output-hk/mailchimp-subscribe",
"version": "0.1.0",
"description": "i18n friendly mailchimp subscriber",
"version": "0.3.0",
"description": "Lightweight mailchimp subscriber library supporting custom fields",
"main": "build/index.js",

@@ -18,7 +18,3 @@ "homepage": "https://github.com/input-output-hk/mailchimp-subscribe",

"subscribe",
"i18n",
"internationalization",
"locale",
"localization",
"language"
"custom"
],

@@ -25,0 +21,0 @@ "repository": {

@@ -6,3 +6,3 @@ <h1 align="center">

<p align="center">
An internationalization friendly mailchimp subscribe library. Subscribe emails to your mailing lists.
A lightweight [Mailchimp](https://mailchimp.com/) subscriber library supporting custom fields. Subscribe emails to your mailing lists.
</p>

@@ -34,3 +34,2 @@

* Error codes and success codes for i18n
* Custom fields

@@ -78,63 +77,2 @@

### Basic supporting localization
```
import subscribe, { SUCCESS_CODES, ERROR_CODES } from '@input-output-hk/mailchimp-subscribe'
async function submitForm (email) {
try {
const result = await subscribe({
email,
uID: 'XXXXXXXXX',
audienceID: 'XXXXXXXXX',
listName: 'XXXXXX.XXXX'
})
const successCode = result.getCode()
switch (successCode) {
case SUCCESS_CODES.CONFIRM_EMAIL_ADDRESS:
// Successfully subscribed, user needs to confirm email
return '' // Use the code to return a localized string message
case SUCCESS_CODES.GENERIC:
// Successfully subscribed, default code
return '' // Use the code to return a localized string message
}
} catch (error) {
// Original message returned from mailchimp
const message = error.message
const errorCode = error.getCode()
switch (successCode) {
case ERROR_CODES.INVALID_EMAIL:
// Email invalid
return '' // Use the code to return a localized string message
case ERROR_CODES.INVALID_EMAIL_DOMAIN:
// Domain section of email invalid
return '' // Use the code to return a localized string message
case ERROR_CODES.INVALID_EMAIL_USERNAME:
// Username section of email invalid
return '' // Use the code to return a localized string message
case ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED:
// Email is already subscribed to mailing list
// Additional context is available here
// Link to manage the subscription for the email address
const manageSubscriptionLink = error.getContext().manageSubscriptionLink
return '' // Use the code to return a localized string message
case ERROR_CODES.TIMEOUT:
// Request timed out
return '' // Use the code to return a localized string message
case ERROR_CODES.GENERIC:
// Generic error code, server errors etc.
return '' // Use the code to return a localized string message
}
}
}
```
### Basic without localization

@@ -147,3 +85,3 @@

try {
await subscribe({
const result = await subscribe({
email,

@@ -155,7 +93,10 @@ uID: 'XXXXXXXXX',

return true
// Instance of MailChimpSuccess
// result.message is the msg value received from Mailchimp
return result
} catch (error) {
// handle error
// error is instance of MailChimpError when error originates from mailchimp
// error.message is the message returned from Mailchimp if the error originated on mailchimp
return false
return error
}

@@ -184,7 +125,10 @@ }

return true
// Instance of MailChimpSuccess
// result.message is the msg value received from Mailchimp
return result
} catch (error) {
// handle error
// error is instance of MailChimpError when error originates from mailchimp
// error.message is the message returned from Mailchimp if the error originated on mailchimp
return false
return error
}

@@ -211,7 +155,10 @@ }

return true
// Instance of MailChimpSuccess
// result.message is the msg value received from Mailchimp
return result
} catch (error) {
// handle error
// error is instance of MailChimpError when error originates from mailchimp
// error.message is the message returned from Mailchimp if the error originated on mailchimp
return false
return error
}

@@ -218,0 +165,0 @@ }

import jsonp from 'jsonp'
import MailChimpError from './MailChimpError'
import MailChimpSuccess from './MailChimpSuccess'
import { ERROR_CODES, SUCCESS_CODES } from './constants'

@@ -23,3 +22,3 @@ const validateFields = ({ email, listName, uID, audienceID }) => {

*
* @return {Promise<MailChimpSuccess>} Rejects with MailChimpError
* @return {Promise<MailChimpSuccess>} Or rejects with MailChimpError
*/

@@ -30,3 +29,3 @@ export default ({ email, customFields, listName, uID, audienceID, timeout = 3000 }) => {

const endpoint = '/subscribe/post-json'
const parameters = {
let parameters = {
u: uID,

@@ -39,3 +38,5 @@ id: audienceID,

return new Promise((resolve, reject) => {
jsonp(`${url}${endpoint}?${Object.keys(parameters).map(key => `${key}=${encodeURIComponent(parameters[key])}`).join('&')}`, {
const queryString = Object.keys(parameters).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(parameters[key])}`).join('&')
const fullURL = `${url}${endpoint}?${queryString}`
jsonp(fullURL, {
param: 'c',

@@ -45,3 +46,3 @@ timeout

try {
if (err) throw new MailChimpError(err.message)
if (err) throw err
if (data.result === 'error') throw new MailChimpError(data.msg)

@@ -55,6 +56,1 @@ resolve(new MailChimpSuccess(data.msg))

}
export {
ERROR_CODES,
SUCCESS_CODES
}
import jsonp from 'jsonp'
import subscribe, { ERROR_CODES, SUCCESS_CODES } from './'
import subscribe from './'
import MailChimpError from './MailChimpError'

@@ -48,2 +49,3 @@ describe('subscribe', () => {

beforeEach(() => {
data = { msg: 'Success', result: 'success' }
jsonp.mockImplementation((url, options, cb) => {

@@ -61,67 +63,27 @@ cb(null, data)

describe('generic success', () => {
beforeEach(() => {
data = { msg: 'Success', result: 'success' }
})
test('it resolves with the GENERIC success code', async () => {
const result = await subscribe({ email, uID, audienceID, listName })
expect(result.getCode()).toEqual(SUCCESS_CODES.GENERIC)
})
test('it resolves with the success message', async () => {
const result = await subscribe({ email, uID, audienceID, listName })
expect(result.message).toEqual('Success')
})
describe('when a user needs to confirm their email address', () => {
beforeEach(() => {
data = {
msg: 'Almost finished... We need to confirm your email address. To complete the subscription process, please click the link in the email we just sent you.',
result: 'success'
}
})
test('it resolves with the CONFIRM_EMAIL_ADDRESS success code', async () => {
const result = await subscribe({ email, uID, audienceID, listName })
expect(result.getCode()).toEqual(SUCCESS_CODES.CONFIRM_EMAIL_ADDRESS)
})
})
})
describe('errors', () => {
let error = {}
async function assignError () {
try {
await subscribe({ email, uID, audienceID, listName })
} catch (err) {
error = err
}
}
let err, error
describe('jsonp error', () => {
let err
beforeEach(() => {
jsonp.mockImplementation((url, options, cb) => {
cb(err, {})
})
beforeEach(async () => {
err = new Error('jsonp error')
jsonp.mockImplementation((url, options, cb) => cb(err, {}))
try {
await subscribe({ email, uID, audienceID, listName })
} catch (err) {
error = err
}
})
describe('generic errors', () => {
beforeEach(async () => {
err = new Error('Generic error')
await assignError()
})
test('it rejects with the GENERIC error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.GENERIC)
})
test('it rejects with the jsonp error message', () => {
expect(error.message).toEqual('jsonp error')
})
describe('timeout errors', () => {
beforeEach(async () => {
err = new Error('Timeout')
await assignError()
})
test('it rejects with the TIMEOUT error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.TIMEOUT)
})
test('the error is not an instance of MailChimpError', () => {
expect(error).not.toBeInstanceOf(MailChimpError)
})

@@ -132,81 +94,21 @@ })

let data = { result: 'error' }
beforeEach(() => {
jsonp.mockImplementation((url, options, cb) => {
cb(null, data)
})
beforeEach(async () => {
data.msg = 'Mailchimp error'
jsonp.mockImplementation((url, options, cb) => cb(null, data))
try {
await subscribe({ email, uID, audienceID, listName })
} catch (err) {
error = err
}
})
describe('generic error', () => {
beforeEach(async () => {
data.msg = 'borked'
await assignError()
})
test('it rejects with the GENERIC error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.GENERIC)
})
test('it rejects with the mailchimp error message', () => {
expect(error.message).toEqual('Mailchimp error')
})
describe('invalid emails', () => {
beforeEach(async () => {
data.msg = '0 - This email address looks fake or invalid. Please enter a real email address.'
await assignError()
})
test('it rejects with the INVALID_EMAIL error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.INVALID_EMAIL)
})
test('it rejects with a MailChimpError instance', () => {
expect(error).toBeInstanceOf(MailChimpError)
})
describe('messages beginning with `0 - `', () => {
beforeEach(async () => {
data.msg = '0 - Some error'
await assignError()
})
test('it rejects with the INVALID_EMAIL error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.INVALID_EMAIL)
})
})
describe('invalid email domain', () => {
beforeEach(async () => {
data.msg = '0 - The domain portion of the email address is invalid (the portion after the @: example)'
await assignError()
})
test('it rejects with the INVALID_EMAIL_DOMAIN error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.INVALID_EMAIL_DOMAIN)
})
})
describe('invalid email username', () => {
beforeEach(async () => {
data.msg = '0 - The username portion of the email address is invalid (the portion before the @: .)'
await assignError()
})
test('it rejects with the INVALID_EMAIL_USERNAME error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.INVALID_EMAIL_USERNAME)
})
})
describe('email already subscribed', () => {
beforeEach(async () => {
data.msg = 'example@example.org is already subscribed to list abc.def. <a href="https://abc.def.list-manage.com/subscribe/send-email?e=abcdefg">Click here to update your profile</a>'
await assignError()
})
test('it rejects with the EMAIL_ALREADY_SUBSCRIBED error code', () => {
expect(error.getCode()).toEqual(ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED)
})
test('it returns the manage link in context', () => {
expect(error.getContext()).toEqual({
manageSubscriptionLink: 'https://abc.def.list-manage.com/subscribe/send-email?e=abcdefg'
})
})
})
})
})
})

@@ -1,47 +0,1 @@

import { ERROR_CODES } from './constants'
function getLinks (message) {
const matches = message.match(/<a href=("|')[^"']+/g)
return matches
? matches.map(match => match.replace(/^.*?("|')([^"']+)/, '$2'))
: []
}
/**
* Transforms error message strings from mailchimp into error codes
*/
export default class MailChimpError extends Error {
/**
* Get the error code from error code constants
*
* @return {Number} Error code
*/
getCode () {
const message = this.message.toLowerCase()
if (message === 'timeout') return ERROR_CODES.TIMEOUT
if (message.includes('this email address looks fake or invalid')) return ERROR_CODES.INVALID_EMAIL
if (message.includes('the domain portion of the email address is invalid')) return ERROR_CODES.INVALID_EMAIL_DOMAIN
if (message.includes('the username portion of the email address is invalid')) return ERROR_CODES.INVALID_EMAIL_USERNAME
if (message.includes('is already subscribed to list')) return ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED
if (message.match(/^0\s-\s/)) return ERROR_CODES.INVALID_EMAIL
return ERROR_CODES.GENERIC
}
/**
* Gets optional context for the error code, by further parsing the error message
*
* @return {Object}
*/
getContext () {
let context = {}
const { message } = this
const code = this.getCode()
switch (code) {
case ERROR_CODES.EMAIL_ALREADY_SUBSCRIBED:
context.manageSubscriptionLink = getLinks(message)[0]
break
}
return context
}
}
export default class MailChimpError extends Error {}

@@ -1,6 +0,1 @@

import { SUCCESS_CODES } from './constants'
/**
* Transforms success messages into codes
*/
export default class MailChimpSuccess {

@@ -14,13 +9,2 @@ /**

}
/**
* Gets the success code
*
* @return {Number}
*/
getCode () {
const message = this.message.toLowerCase()
if (message.includes('we need to confirm your email address')) return SUCCESS_CODES.CONFIRM_EMAIL_ADDRESS
return SUCCESS_CODES.GENERIC
}
}
SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc