merchi_checkout
Version:
Merchi's custom checkout step form
125 lines (124 loc) • 19.9 kB
JavaScript
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import camelCase from 'lodash/camelCase';
import snakeCase from 'lodash/snakeCase';
var TransformationType = /*#__PURE__*/function (TransformationType) {
TransformationType["CAMEL"] = "camel";
TransformationType["UNDERSCORE"] = "underscore";
return TransformationType;
}(TransformationType || {});
var functionDict = _defineProperty(_defineProperty({}, TransformationType.CAMEL, camelCase), TransformationType.UNDERSCORE, snakeCase);
function parseJsonKeyNames(jsonObject, standard) {
if (_typeof(jsonObject) === 'object' && jsonObject !== null) {
if (Array.isArray(jsonObject)) {
var _iterator = _createForOfIteratorHelper(jsonObject),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var item = _step.value;
parseJsonKeyNames(item, standard);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
} else {
var oldKeys = Object.keys(jsonObject);
for (var _i = 0, _oldKeys = oldKeys; _i < _oldKeys.length; _i++) {
var old = _oldKeys[_i];
var newKey = functionDict[standard](old);
if (newKey !== old) {
jsonObject[newKey] = jsonObject[old];
delete jsonObject[old];
parseJsonKeyNames(jsonObject[newKey], standard);
} else {
parseJsonKeyNames(jsonObject[old], standard);
}
}
}
}
return jsonObject;
}
function parseJsonKeyCamel(jsonObject) {
return parseJsonKeyNames(jsonObject, TransformationType.CAMEL);
}
export function unpackRecursiveJsonIter(jsonObject, options, fileIndex) {
if (!options) options = {};
var result = options.existing || new FormData();
var prefix = options._prefix || '';
if (!fileIndex) fileIndex = {
value: 0
};
var appendData = function appendData(name, value) {
if (prefix) {
name = prefix + '-' + name;
}
if (value !== undefined && value !== null) {
result.set(name, value.toString()); // Convert to string since FormData accepts only strings or Blobs.
}
};
var processSingleEntityProperty = function processSingleEntityProperty(key, value) {
var innerPrefix = key + '-0';
if (prefix) {
innerPrefix = prefix + '-' + innerPrefix;
}
unpackRecursiveJsonIter(value, {
existing: result,
_prefix: innerPrefix
}, fileIndex);
appendData(key + '-count', '1');
};
var _loop = function _loop(_key) {
if ([undefined, '', null].includes(jsonObject[_key]) || _key === 'rights') {
return 1; // continue
}
if (Array.isArray(jsonObject[_key])) {
jsonObject[_key].forEach(function (item, index) {
if ((_typeof(item) === "object" || Array.isArray(item)) && item !== null) {
var arrayPrefix = prefix ? "".concat(prefix, "-").concat(_key, "-").concat(index) : "".concat(_key, "-").concat(index);
unpackRecursiveJsonIter(item, {
existing: result,
_prefix: arrayPrefix
}, fileIndex);
} else {
appendData("".concat(_key, "-").concat(index), item);
}
});
appendData(_key + '-count', jsonObject[_key].length.toString());
} else if (_typeof(jsonObject[_key]) === "object" && jsonObject[_key] !== null) {
processSingleEntityProperty(_key, jsonObject[_key]);
} else {
appendData(_key, jsonObject[_key]);
}
};
for (var _key in jsonObject) {
if (_loop(_key)) continue;
}
return result;
}
export function encodeMerchiApiData(dataDict) {
var dataJson = parseJsonKeyCamel(dataDict);
return unpackRecursiveJsonIter(dataJson);
}
export function urlSearchParams(inputParams) {
var params = _objectSpread({}, inputParams); // Create a shallow copy to prevent mutation
Object.keys(params).forEach(function (key) {
if (params[key] === undefined || params[key] === null || params[key] === "") {
delete params[key];
} else if (Array.isArray(params[key])) {
params[key] = params[key].join(',');
} else if (_typeof(params[key]) === 'object') {
params[key] = JSON.stringify(params[key]);
}
});
return new URLSearchParams(params).toString();
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYW1lbENhc2UiLCJzbmFrZUNhc2UiLCJUcmFuc2Zvcm1hdGlvblR5cGUiLCJmdW5jdGlvbkRpY3QiLCJfZGVmaW5lUHJvcGVydHkiLCJDQU1FTCIsIlVOREVSU0NPUkUiLCJwYXJzZUpzb25LZXlOYW1lcyIsImpzb25PYmplY3QiLCJzdGFuZGFyZCIsIl90eXBlb2YiLCJBcnJheSIsImlzQXJyYXkiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwiaXRlbSIsInZhbHVlIiwiZXJyIiwiZSIsImYiLCJvbGRLZXlzIiwiT2JqZWN0Iiwia2V5cyIsIl9pIiwiX29sZEtleXMiLCJsZW5ndGgiLCJvbGQiLCJuZXdLZXkiLCJwYXJzZUpzb25LZXlDYW1lbCIsInVucGFja1JlY3Vyc2l2ZUpzb25JdGVyIiwib3B0aW9ucyIsImZpbGVJbmRleCIsInJlc3VsdCIsImV4aXN0aW5nIiwiRm9ybURhdGEiLCJwcmVmaXgiLCJfcHJlZml4IiwiYXBwZW5kRGF0YSIsIm5hbWUiLCJ1bmRlZmluZWQiLCJzZXQiLCJ0b1N0cmluZyIsInByb2Nlc3NTaW5nbGVFbnRpdHlQcm9wZXJ0eSIsImtleSIsImlubmVyUHJlZml4IiwiX2xvb3AiLCJfa2V5IiwiaW5jbHVkZXMiLCJmb3JFYWNoIiwiaW5kZXgiLCJhcnJheVByZWZpeCIsImNvbmNhdCIsImVuY29kZU1lcmNoaUFwaURhdGEiLCJkYXRhRGljdCIsImRhdGFKc29uIiwidXJsU2VhcmNoUGFyYW1zIiwiaW5wdXRQYXJhbXMiLCJwYXJhbXMiLCJfb2JqZWN0U3ByZWFkIiwiam9pbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJVUkxTZWFyY2hQYXJhbXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjYW1lbENhc2UgZnJvbSAnbG9kYXNoL2NhbWVsQ2FzZSc7XG5pbXBvcnQgc25ha2VDYXNlIGZyb20gJ2xvZGFzaC9zbmFrZUNhc2UnO1xuXG5pbnRlcmZhY2UgSnNvbk9iamVjdCB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZW51bSBUcmFuc2Zvcm1hdGlvblR5cGUge1xuICBDQU1FTCA9IFwiY2FtZWxcIixcbiAgVU5ERVJTQ09SRSA9IFwidW5kZXJzY29yZVwiXG59XG5cbmNvbnN0IGZ1bmN0aW9uRGljdDogeyBba2V5IGluIFRyYW5zZm9ybWF0aW9uVHlwZV06ICh3b3JkOiBzdHJpbmcpID0+IHN0cmluZyB9ID0ge1xuICBbVHJhbnNmb3JtYXRpb25UeXBlLkNBTUVMXTogY2FtZWxDYXNlLFxuICBbVHJhbnNmb3JtYXRpb25UeXBlLlVOREVSU0NPUkVdOiBzbmFrZUNhc2Vcbn07XG5cbmZ1bmN0aW9uIHBhcnNlSnNvbktleU5hbWVzKGpzb25PYmplY3Q6IGFueSwgc3RhbmRhcmQ6IGtleW9mIHR5cGVvZiBmdW5jdGlvbkRpY3QpOiBhbnkge1xuICBpZiAodHlwZW9mIGpzb25PYmplY3QgPT09ICdvYmplY3QnICYmIGpzb25PYmplY3QgIT09IG51bGwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uT2JqZWN0KSkge1xuICAgICAgZm9yIChsZXQgaXRlbSBvZiBqc29uT2JqZWN0KSB7XG4gICAgICAgIHBhcnNlSnNvbktleU5hbWVzKGl0ZW0sIHN0YW5kYXJkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb2xkS2V5cyA9IE9iamVjdC5rZXlzKGpzb25PYmplY3QpO1xuICAgICAgZm9yIChsZXQgb2xkIG9mIG9sZEtleXMpIHtcbiAgICAgICAgY29uc3QgbmV3S2V5ID0gZnVuY3Rpb25EaWN0W3N0YW5kYXJkXShvbGQpO1xuICAgICAgICBpZiAobmV3S2V5ICE9PSBvbGQpIHtcbiAgICAgICAgICBqc29uT2JqZWN0W25ld0tleV0gPSBqc29uT2JqZWN0W29sZF07XG4gICAgICAgICAgZGVsZXRlIGpzb25PYmplY3Rbb2xkXTtcbiAgICAgICAgICBwYXJzZUpzb25LZXlOYW1lcyhqc29uT2JqZWN0W25ld0tleV0sIHN0YW5kYXJkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJzZUpzb25LZXlOYW1lcyhqc29uT2JqZWN0W29sZF0sIHN0YW5kYXJkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4ganNvbk9iamVjdDtcbn1cblxuZnVuY3Rpb24gcGFyc2VKc29uS2V5Q2FtZWwoanNvbk9iamVjdDogYW55KSB7XG4gIHJldHVybiBwYXJzZUpzb25LZXlOYW1lcyhqc29uT2JqZWN0LCBUcmFuc2Zvcm1hdGlvblR5cGUuQ0FNRUwpO1xufVxuXG5pbnRlcmZhY2UgQ291bnRlciB7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTZXJpYWxpc2VPcHRpb25zIHtcbiAgZXhpc3Rpbmc/OiBGb3JtRGF0YTtcbiAgZXhjbHVkZU9sZD86IGJvb2xlYW47XG4gIF9wcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnBhY2tSZWN1cnNpdmVKc29uSXRlcihqc29uT2JqZWN0OiBKc29uT2JqZWN0LCBvcHRpb25zPzogU2VyaWFsaXNlT3B0aW9ucywgZmlsZUluZGV4PzogQ291bnRlcik6IEZvcm1EYXRhIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIGNvbnN0IHJlc3VsdCA9IG9wdGlvbnMuZXhpc3RpbmcgfHwgbmV3IEZvcm1EYXRhKCk7XG4gIGNvbnN0IHByZWZpeCA9IG9wdGlvbnMuX3ByZWZpeCB8fCAnJztcblxuICBpZiAoIWZpbGVJbmRleCkgZmlsZUluZGV4ID0geyB2YWx1ZTogMCB9O1xuXG4gIGNvbnN0IGFwcGVuZERhdGEgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgbmFtZSA9IHByZWZpeCArICctJyArIG5hbWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQuc2V0KG5hbWUsIHZhbHVlLnRvU3RyaW5nKCkpOyAgLy8gQ29udmVydCB0byBzdHJpbmcgc2luY2UgRm9ybURhdGEgYWNjZXB0cyBvbmx5IHN0cmluZ3Mgb3IgQmxvYnMuXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHByb2Nlc3NTaW5nbGVFbnRpdHlQcm9wZXJ0eSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIGxldCBpbm5lclByZWZpeCA9IGtleSArICctMCc7XG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgaW5uZXJQcmVmaXggPSBwcmVmaXggKyAnLScgKyBpbm5lclByZWZpeDtcbiAgICB9XG4gICAgdW5wYWNrUmVjdXJzaXZlSnNvbkl0ZXIodmFsdWUsIHsgZXhpc3Rpbmc6IHJlc3VsdCwgX3ByZWZpeDogaW5uZXJQcmVmaXggfSwgZmlsZUluZGV4KTtcbiAgICBhcHBlbmREYXRhKGtleSArICctY291bnQnLCAnMScpO1xuICB9O1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGpzb25PYmplY3QpIHtcbiAgICBpZiAoW3VuZGVmaW5lZCwgJycsIG51bGxdLmluY2x1ZGVzKGpzb25PYmplY3Rba2V5XSkgfHwga2V5ID09PSAncmlnaHRzJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbk9iamVjdFtrZXldKSkge1xuICAgICAganNvbk9iamVjdFtrZXldLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoKHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoaXRlbSkpICYmIGl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBhcnJheVByZWZpeCA9IHByZWZpeCA/IGAke3ByZWZpeH0tJHtrZXl9LSR7aW5kZXh9YCA6IGAke2tleX0tJHtpbmRleH1gO1xuICAgICAgICAgIHVucGFja1JlY3Vyc2l2ZUpzb25JdGVyKGl0ZW0sIHsgZXhpc3Rpbmc6IHJlc3VsdCwgX3ByZWZpeDogYXJyYXlQcmVmaXggfSwgZmlsZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcHBlbmREYXRhKGAke2tleX0tJHtpbmRleH1gLCBpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBhcHBlbmREYXRhKGtleSArICctY291bnQnLCBqc29uT2JqZWN0W2tleV0ubGVuZ3RoLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGpzb25PYmplY3Rba2V5XSA9PT0gXCJvYmplY3RcIiAmJiBqc29uT2JqZWN0W2tleV0gIT09IG51bGwpIHtcbiAgICAgIHByb2Nlc3NTaW5nbGVFbnRpdHlQcm9wZXJ0eShrZXksIGpzb25PYmplY3Rba2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwcGVuZERhdGEoa2V5LCBqc29uT2JqZWN0W2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVNZXJjaGlBcGlEYXRhKGRhdGFEaWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGNvbnN0IGRhdGFKc29uID0gcGFyc2VKc29uS2V5Q2FtZWwoZGF0YURpY3QpO1xuICByZXR1cm4gdW5wYWNrUmVjdXJzaXZlSnNvbkl0ZXIoZGF0YUpzb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsU2VhcmNoUGFyYW1zKGlucHV0UGFyYW1zOiBhbnkpOiBzdHJpbmcge1xuICBjb25zdCBwYXJhbXMgPSB7IC4uLmlucHV0UGFyYW1zIH07ICAvLyBDcmVhdGUgYSBzaGFsbG93IGNvcHkgdG8gcHJldmVudCBtdXRhdGlvblxuICBcbiAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaWYgKHBhcmFtc1trZXldID09PSB1bmRlZmluZWQgfHwgcGFyYW1zW2tleV0gPT09IG51bGwgfHwgcGFyYW1zW2tleV0gPT09IFwiXCIpIHtcbiAgICAgIGRlbGV0ZSBwYXJhbXNba2V5XTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zW2tleV0pKSB7XG4gICAgICBwYXJhbXNba2V5XSA9IHBhcmFtc1trZXldLmpvaW4oJywnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXNba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHBhcmFtc1trZXldID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxTQUFTLE1BQU0sa0JBQWtCO0FBQ3hDLE9BQU9DLFNBQVMsTUFBTSxrQkFBa0I7QUFBQyxJQU1wQ0Msa0JBQWtCLDBCQUFsQkEsa0JBQWtCO0VBQWxCQSxrQkFBa0I7RUFBbEJBLGtCQUFrQjtFQUFBLE9BQWxCQSxrQkFBa0I7QUFBQSxFQUFsQkEsa0JBQWtCO0FBS3ZCLElBQU1DLFlBQXVFLEdBQUFDLGVBQUEsQ0FBQUEsZUFBQSxLQUMxRUYsa0JBQWtCLENBQUNHLEtBQUssRUFBR0wsU0FBUyxHQUNwQ0Usa0JBQWtCLENBQUNJLFVBQVUsRUFBR0wsU0FBUyxDQUMzQztBQUVELFNBQVNNLGlCQUFpQkEsQ0FBQ0MsVUFBZSxFQUFFQyxRQUFtQyxFQUFPO0VBQ3BGLElBQUlDLE9BQUEsQ0FBT0YsVUFBVSxNQUFLLFFBQVEsSUFBSUEsVUFBVSxLQUFLLElBQUksRUFBRTtJQUN6RCxJQUFJRyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osVUFBVSxDQUFDLEVBQUU7TUFBQSxJQUFBSyxTQUFBLEdBQUFDLDBCQUFBLENBQ1pOLFVBQVU7UUFBQU8sS0FBQTtNQUFBO1FBQTNCLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FB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