vtex-render-session
Advanced tools
Comparing version 1.4.12-beta to 1.5.0
@@ -10,12 +10,8 @@ # Changelog | ||
## [1.4.12-beta] - 2019-09-06 | ||
## [1.5.0] - 2019-09-25 | ||
### Changed | ||
- Add more fields to constants.ts, to get more fields from session. | ||
## [1.4.11-beta] - 2019-09-06 | ||
## [1.4.1] - 2019-09-24 | ||
## [1.4.10-beta] - 2019-09-06 | ||
## [1.4.9-beta] - 2019-09-06 | ||
## [1.4.8-beta] - 2019-09-06 | ||
## [1.4.0] - 2019-07-11 | ||
@@ -60,2 +56,2 @@ | ||
### Added | ||
- Copy of the code available in the render runtime to a separate bundle to provide session | ||
- Copy of the code available in the render runtime to a separate bundle to provide session |
@@ -89,2 +89,39 @@ /******/ (function(modules) { // webpackBootstrap | ||
/***/ "./constants.ts": | ||
/*!**********************!*\ | ||
!*** ./constants.ts ***! | ||
\**********************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.ITEMS = [ | ||
"account.id", | ||
"account.accountName", | ||
"store.channel", | ||
"store.countryCode", | ||
"store.cultureInfo", | ||
"store.currencyCode", | ||
"store.currencySymbol", | ||
"store.admin_cultureInfo", | ||
"creditControl.creditAccounts", | ||
"creditControl.deadlines", | ||
"creditControl.minimumInstallmentValue", | ||
"authentication.storeUserId", | ||
"authentication.storeUserEmail", | ||
"profile.firstName", | ||
"profile.document", | ||
"profile.email", | ||
"profile.id", | ||
"profile.isAuthenticated", | ||
"profile.lastName", | ||
"profile.phone", | ||
"public.favoritePickup" | ||
]; | ||
/***/ }), | ||
/***/ "./index.ts": | ||
@@ -100,48 +137,23 @@ /*!******************!*\ | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var constants_1 = __webpack_require__(/*! ./constants */ "./constants.ts"); | ||
var delay = function (ms) { | ||
return new Promise(function (resolve) { return setTimeout(resolve, ms); }); | ||
}; | ||
var supportedLocales = window.__RUNTIME__ && window.__RUNTIME__.culture && window.__RUNTIME__.culture.availableLocales || []; | ||
var rootPath = window.__RUNTIME__ && window.__RUNTIME__.rootPath || ''; | ||
var RETRY_STATUSES = [408, 425, 429, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511]; | ||
var FETCH_TIMEOUT = 5000; | ||
var canRetry = function (status) { return RETRY_STATUSES.includes(status); }; | ||
var ok = function (status) { return 200 <= status && status < 300; }; | ||
var fetchWithRetry = function (url, init, maxRetries) { | ||
if (maxRetries === void 0) { maxRetries = 1; } | ||
if (maxRetries === void 0) { maxRetries = 3; } | ||
var status = 500; | ||
var didTimeOut = false; | ||
var callFetch = function (attempt) { | ||
if (attempt === void 0) { attempt = 0; } | ||
return new Promise(function (resolve, reject) { | ||
var timeout = setTimeout(function () { | ||
didTimeOut = true; | ||
reject(new Error('Fetch timed out')); | ||
}, FETCH_TIMEOUT); | ||
fetch(url, init).then(function (response) { | ||
clearTimeout(timeout); | ||
if (!didTimeOut) { | ||
resolve(response); | ||
} | ||
}).catch(function (err) { | ||
if (didTimeOut) { | ||
return; | ||
} | ||
reject(err); | ||
}); | ||
}).then(function (response) { | ||
return fetch(url, init).then(function (response) { | ||
status = response.status; | ||
return ok(status) | ||
? { response: response, error: null } | ||
: response.json() | ||
.then(function (error) { return ({ response: response, error: error }); }) | ||
.catch(function () { return ({ response: response, error: { message: 'Unable to parse JSON' } }); }); | ||
}).then(function (_a) { | ||
var error = _a.error; | ||
if (error) { | ||
throw new Error(error.message || 'Unknown error'); | ||
} | ||
return response.json() | ||
.then(function (data) { return ({ response: data, error: null }); }); | ||
}).catch(function (error) { | ||
console.error(error); | ||
if (attempt >= maxRetries || !canRetry(status) || didTimeOut) { | ||
return; // no session is fine for now | ||
if (attempt >= maxRetries || !canRetry(status)) { | ||
return { response: null, error: { message: 'Maximum number of attempts achieved' } }; | ||
} | ||
@@ -161,3 +173,7 @@ var ms = (Math.pow(2, attempt)) * 500; | ||
}).catch(function (err) { return console.log('Error while patching session with error: ', err); }); }; | ||
var sessionPromise = fetchWithRetry("http://localhost:3000", { | ||
var items = (window.location.search ? '&' : '?') + "items=" + constants_1.ITEMS.join(','); | ||
var supportedLocalesSearch = supportedLocales.length > 0 | ||
? "&supportedLocales=" + supportedLocales.join(',') | ||
: ''; | ||
var sessionPromise = fetchWithRetry(rootPath + "/api/sessions" + window.location.search + items + supportedLocalesSearch, { | ||
body: '{}', | ||
@@ -189,2 +205,2 @@ credentials: 'same-origin', | ||
/******/ }); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0RBQTBDLGdDQUFnQztBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUF3RCxrQkFBa0I7QUFDMUU7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQXlDLGlDQUFpQztBQUMxRSx3SEFBZ0gsbUJBQW1CLEVBQUU7QUFDckk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDbEZBLElBQU0sS0FBSyxHQUFHLFVBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLGlCQUFPLElBQUksaUJBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQXZCLENBQXVCLENBQUM7QUFDeEQsQ0FBQztBQWFELElBQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksRUFBRTtBQUV4RSxJQUFNLGNBQWMsR0FBRyxDQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRyxHQUFHLEVBQUcsR0FBRyxFQUFHLEdBQUcsRUFBRyxHQUFHLEVB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USxxQkFBZ0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFRLEVBQUU7SUFDdkcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN4QyxXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUM1RCxNQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUcsSUFBSSxjQUFPLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsQ0FBQyxFQUE3RCxDQUE2RCxDQUFDLEVBTHpDLENBS3lDO0FBRzlFLElBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRTtJQUM3RCxJQUFJLEVBQUUsSUFBSTtJQUNWLFdBQVcsRUFBRSxhQUFhO0lBQzFCLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQzVELE1BQU0sRUFBRSxNQUFNO0NBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFHLElBQUksY0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLENBQUMsRUFBNUQsQ0FBNEQsQ0FBQyxDQUFDO0FBRTdFLE1BQWMsQ0FBQyxvQkFBb0IsR0FBSSxNQUFjLENBQUMsb0JBQW9CLEdBQUc7SUFDNUUsWUFBWTtJQUNaLGNBQWM7Q0FDZiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwL1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4iLCJjb25zdCBkZWxheSA9IChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fUlVOVElNRV9fOiB7XG4gICAgICBjdWx0dXJlOiB7XG4gICAgICAgIGF2YWlsYWJsZUxvY2FsZXM6IHN0cmluZ1tdXG4gICAgICB9XG4gICAgICByb290UGF0aD86IHN0cmluZ1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCByb290UGF0aCA9IHdpbmRvdy5fX1JVTlRJTUVfXyAmJiB3aW5kb3cuX19SVU5USU1FX18ucm9vdFBhdGggfHwgJydcblxuY29uc3QgUkVUUllfU1RBVFVTRVMgPSBbIDQwOCwgNDI1LCA0MjksIDUwMCwgIDUwMSwgIDUwMiwgIDUwMywgIDUwNCwgIDUwNSwgIDUwNiwgIDUwNywgIDUwOCwgIDUxMCwgIDUxMSBdXG5jb25zdCBGRVRDSF9USU1FT1VUID0gNTAwMFxuXG5jb25zdCBjYW5SZXRyeSA9IChzdGF0dXM6IG51bWJlcikgPT4gUkVUUllfU1RBVFVTRVMuaW5jbHVkZXMoc3RhdHVzKVxuXG5jb25zdCBvayA9IChzdGF0dXM6IG51bWJlcikgPT4gMjAwIDw9IHN0YXR1cyAmJiBzdGF0dXMgPCAzMDBcblxuY29uc3QgZmV0Y2hXaXRoUmV0cnkgPSAodXJsOiBzdHJpbmcsIGluaXQ6IFJlcXVlc3RJbml0LCBtYXhSZXRyaWVzOiBudW1iZXIgPSAxKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGxldCBzdGF0dXMgPSA1MDBcbiAgbGV0IGRpZFRpbWVPdXQgPSBmYWxzZVxuICBjb25zdCBjYWxsRmV0Y2ggPSAoYXR0ZW1wdDogbnVtYmVyID0gMCk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRpZFRpbWVPdXQgPSB0cnVlXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZldGNoIHRpbWVkIG91dCcpKVxuICAgICAgfSwgRkVUQ0hfVElNRU9VVClcbiAgICAgIGZldGNoKHVybCwgaW5pdCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICAgIGlmICghZGlkVGltZU91dCkge1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpXG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZGlkVGltZU91dCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIHN0YXR1cyA9IChyZXNwb25zZSBhcyBhbnkpLnN0YXR1c1xuICAgICAgcmV0dXJuIG9rKHN0YXR1cylcbiAgICAgICAgPyB7IHJlc3BvbnNlLCBlcnJvcjogbnVsbCB9XG4gICAgICAgIDogKHJlc3BvbnNlIGFzIGFueSkuanNvbigpXG4gICAgICAgIC50aGVuKChlcnJvcjogYW55KSA9PiAoeyByZXNwb25zZSwgZXJyb3IgfSkpXG4gICAgICAgIC5jYXRjaCgoKSA9PiAoeyByZXNwb25zZSwgZXJyb3I6IHsgbWVzc2FnZTogJ1VuYWJsZSB0byBwYXJzZSBKU09OJyB9IH0pKVxuICAgIH0pLnRoZW4oKHsgZXJyb3IgfTogYW55KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InKVxuICAgICAgfVxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcblxuICAgICAgaWYgKGF0dGVtcHQgPj0gbWF4UmV0cmllcyB8fCAhY2FuUmV0cnkoc3RhdHVzKSB8fCBkaWRUaW1lT3V0KSB7XG4gICAgICAgIHJldHVybiAvLyBubyBzZXNzaW9uIGlzIGZpbmUgZm9yIG5vd1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtcyA9ICgyICoqIGF0dGVtcHQpICogNTAwXG4gICAgICByZXR1cm4gZGVsYXkobXMpXG4gICAgICAgIC50aGVuKCgpID0+IGNhbGxGZXRjaCgrK2F0dGVtcHQpKVxuICAgIH0pXG5cbiAgcmV0dXJuIGNhbGxGZXRjaCgpXG59XG5cbmNvbnN0IHBhdGNoU2Vzc2lvbiA9IChkYXRhPzogYW55KSA9PiBmZXRjaFdpdGhSZXRyeShgJHtyb290UGF0aH0vYXBpL3Nlc3Npb25zJHt3aW5kb3cubG9jYXRpb24uc2VhcmNofWAsIHtcbiAgYm9keTogZGF0YSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogJ3t9JyxcbiAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG4gIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgbWV0aG9kOiAnUEFUQ0gnLFxufSkuY2F0Y2goZXJyID0+IGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBwYXRjaGluZyBzZXNzaW9uIHdpdGggZXJyb3I6ICcsIGVycikpXG5cblxuY29uc3Qgc2Vzc2lvblByb21pc2UgPSBmZXRjaFdpdGhSZXRyeShgaHR0cDovL2xvY2FsaG9zdDozMDAwYCwge1xuICBib2R5OiAne30nLFxuICBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcbiAgaGVhZGVyczogbmV3IEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICBtZXRob2Q6ICdQT1NUJyxcbn0pLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgbG9hZGluZyBzZXNzaW9uIHdpdGggZXJyb3I6ICcsIGVycikpO1xuXG4od2luZG93IGFzIGFueSkuX19SRU5ERVJfN19TRVNTSU9OX18gPSAod2luZG93IGFzIGFueSkuX19SRU5ERVJfOF9TRVNTSU9OX18gPSB7XG4gIHBhdGNoU2Vzc2lvbixcbiAgc2Vzc2lvblByb21pc2UsXG59XG5cbmV4cG9ydCB7fVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vY29uc3RhbnRzLnRzIiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ2xGYSxhQUFLLEdBQUc7SUFDbkIsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6Qiw4QkFBOEI7SUFDOUIseUJBQXlCO0lBQ3pCLHVDQUF1QztJQUN2Qyw0QkFBNEI7SUFDNUIsK0JBQStCO0lBQy9CLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZix1QkFBdUI7Q0FD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QUFHLENBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFTLGlCQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBRztBQUU3RSxJQUFNLHNCQUFzQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQ3hELENBQUMsQ0FBQyx1QkFBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBRztJQUNuRCxDQUFDLENBQUMsRUFBRTtBQUVOLElBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBSSxRQUFRLHFCQUFnQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsc0JBQXdCLEVBQUU7SUFDMUgsSUFBSSxFQUFFLElBQUk7SUFDVixXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUM1RCxNQUFNLEVBQUUsTUFBTTtDQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBRyxJQUFJLGNBQU8sQ0FBQyxHQUFHLENBQUMsMENBQTBDLEVBQUUsR0FBRyxDQUFDLEVBQTVELENBQTRELENBQUMsQ0FBQztBQUU3RSxNQUFjLENBQUMsb0JBQW9CLEdBQUksTUFBYyxDQUFDLG9CQUFvQixHQUFHO0lBQzVFLFlBQVk7SUFDWixjQUFjO0NBQ2YiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9cIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuIiwiZXhwb3J0IGNvbnN0IElURU1TID0gW1xuICBcImFjY291bnQuaWRcIixcbiAgXCJhY2NvdW50LmFjY291bnROYW1lXCIsXG4gIFwic3RvcmUuY2hhbm5lbFwiLFxuICBcInN0b3JlLmNvdW50cnlDb2RlXCIsXG4gIFwic3RvcmUuY3VsdHVyZUluZm9cIixcbiAgXCJzdG9yZS5jdXJyZW5jeUNvZGVcIixcbiAgXCJzdG9yZS5jdXJyZW5jeVN5bWJvbFwiLFxuICBcInN0b3JlLmFkbWluX2N1bHR1cmVJbmZvXCIsXG4gIFwiY3JlZGl0Q29udHJvbC5jcmVkaXRBY2NvdW50c1wiLFxuICBcImNyZWRpdENvbnRyb2wuZGVhZGxpbmVzXCIsXG4gIFwiY3JlZGl0Q29udHJvbC5taW5pbXVtSW5zdGFsbG1lbnRWYWx1ZVwiLFxuICBcImF1dGhlbnRpY2F0aW9uLnN0b3JlVXNlcklkXCIsXG4gIFwiYXV0aGVudGljYXRpb24uc3RvcmVVc2VyRW1haWxcIixcbiAgXCJwcm9maWxlLmZpcnN0TmFtZVwiLFxuICBcInByb2ZpbGUuZG9jdW1lbnRcIixcbiAgXCJwcm9maWxlLmVtYWlsXCIsXG4gIFwicHJvZmlsZS5pZFwiLFxuICBcInByb2ZpbGUuaXNBdXRoZW50aWNhdGVkXCIsXG4gIFwicHJvZmlsZS5sYXN0TmFtZVwiLFxuICBcInByb2ZpbGUucGhvbmVcIixcbiAgXCJwdWJsaWMuZmF2b3JpdGVQaWNrdXBcIlxuXTtcbiIsImltcG9ydCB7IElURU1TIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmludGVyZmFjZSBTZXNzaW9uUmVzcG9uc2Uge1xuICByZXNwb25zZTogUmVzcG9uc2UgfCBudWxsLFxuICBlcnJvcjogYW55LFxufVxuXG5jb25zdCBkZWxheSA9IChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fUlVOVElNRV9fOiB7XG4gICAgICBjdWx0dXJlOiB7XG4gICAgICAgIGF2YWlsYWJsZUxvY2FsZXM6IHN0cmluZ1tdXG4gICAgICB9XG4gICAgICByb290UGF0aD86IHN0cmluZ1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBzdXBwb3J0ZWRMb2NhbGVzID0gd2luZG93Ll9fUlVOVElNRV9fICYmIHdpbmRvdy5fX1JVTlRJTUVfXy5jdWx0dXJlICYmIHdpbmRvdy5fX1JVTlRJTUVfXy5jdWx0dXJlLmF2YWlsYWJsZUxvY2FsZXMgfHwgW11cbmNvbnN0IHJvb3RQYXRoID0gd2luZG93Ll9fUlVOVElNRV9fICYmIHdpbmRvdy5fX1JVTlRJTUVfXy5yb290UGF0aCB8fCAnJ1xuXG5jb25zdCBSRVRSWV9TVEFUVVNFUyA9IFsgNDA4LCA0MjUsIDQyOSwgNTAwLCAgNTAxLCAgNTAyLCAgNTAzLCAgNTA0LCAgNTA1LCAgNTA2LCAgNTA3LCAgNTA4LCAgNTEwLCAgNTExIF1cblxuY29uc3QgY2FuUmV0cnkgPSAoc3RhdHVzOiBudW1iZXIpID0+IFJFVFJZX1NUQVRVU0VTLmluY2x1ZGVzKHN0YXR1cylcblxuY29uc3QgZmV0Y2hXaXRoUmV0cnkgPSAodXJsOiBzdHJpbmcsIGluaXQ6IFJlcXVlc3RJbml0LCBtYXhSZXRyaWVzOiBudW1iZXIgPSAzKSA9PiB7XG4gIGxldCBzdGF0dXMgPSA1MDBcbiAgY29uc3QgY2FsbEZldGNoID0gKGF0dGVtcHQ6IG51bWJlciA9IDApOiBQcm9taXNlPFNlc3Npb25SZXNwb25zZT49PlxuICAgIGZldGNoKHVybCwgaW5pdCkudGhlbigocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXNcbiAgICAgIHJldHVybiByZXNwb25zZS5qc29uKClcbiAgICAgICAgLnRoZW4oKGRhdGE6IGFueSkgPT4gKHtyZXNwb25zZTogZGF0YSwgZXJyb3I6IG51bGx9KSlcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cbiAgICAgIGlmIChhdHRlbXB0ID49IG1heFJldHJpZXMgfHwgIWNhblJldHJ5KHN0YXR1cykpIHtcbiAgICAgICAgcmV0dXJuIHtyZXNwb25zZTogbnVsbCwgZXJyb3I6IHttZXNzYWdlOiAnTWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMgYWNoaWV2ZWQnfX0gYXMgU2Vzc2lvblJlc3BvbnNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1zID0gKDIgKiogYXR0ZW1wdCkgKiA1MDBcbiAgICAgIHJldHVybiBkZWxheShtcylcbiAgICAgICAgLnRoZW4oKCkgPT4gY2FsbEZldGNoKCsrYXR0ZW1wdCkpXG4gICAgfSlcblxuICByZXR1cm4gY2FsbEZldGNoKClcbn1cblxuY29uc3QgcGF0Y2hTZXNzaW9uID0gKGRhdGE/OiBhbnkpID0+IGZldGNoV2l0aFJldHJ5KGAke3Jvb3RQYXRofS9hcGkvc2Vzc2lvbnMke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YCwge1xuICBib2R5OiBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiAne30nLFxuICBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcbiAgaGVhZGVyczogbmV3IEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICBtZXRob2Q6ICdQQVRDSCcsXG59KS5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIHBhdGNoaW5nIHNlc3Npb24gd2l0aCBlcnJvcjogJywgZXJyKSlcblxuY29uc3QgaXRlbXMgPSBgJHt3aW5kb3cubG9jYXRpb24uc2VhcmNoID8gJyYnIDogJz8nfWl0ZW1zPSR7SVRFTVMuam9pbignLCcpfWBcblxuY29uc3Qgc3VwcG9ydGVkTG9jYWxlc1NlYXJjaCA9IHN1cHBvcnRlZExvY2FsZXMubGVuZ3RoID4gMFxuICA/IGAmc3VwcG9ydGVkTG9jYWxlcz0ke3N1cHBvcnRlZExvY2FsZXMuam9pbignLCcpfWBcbiAgOiAnJ1xuXG5jb25zdCBzZXNzaW9uUHJvbWlzZSA9IGZldGNoV2l0aFJldHJ5KGAke3Jvb3RQYXRofS9hcGkvc2Vzc2lvbnMke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9JHtpdGVtc30ke3N1cHBvcnRlZExvY2FsZXNTZWFyY2h9YCwge1xuICBib2R5OiAne30nLFxuICBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcbiAgaGVhZGVyczogbmV3IEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICBtZXRob2Q6ICdQT1NUJyxcbn0pLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgbG9hZGluZyBzZXNzaW9uIHdpdGggZXJyb3I6ICcsIGVycikpO1xuXG4od2luZG93IGFzIGFueSkuX19SRU5ERVJfN19TRVNTSU9OX18gPSAod2luZG93IGFzIGFueSkuX19SRU5ERVJfOF9TRVNTSU9OX18gPSB7XG4gIHBhdGNoU2Vzc2lvbixcbiAgc2Vzc2lvblByb21pc2UsXG59XG5cbmV4cG9ydCB7fSJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -1,1 +0,1 @@ | ||
!function(e){var n={};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,n){if(1&n&&(e=r(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)r.d(t,o,function(n){return e[n]}.bind(null,o));return t},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p="/",r(r.s=0)}([function(e,n,r){e.exports=r(1)},function(e,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=window.__RUNTIME__&&window.__RUNTIME__.rootPath||"",o=[408,425,429,500,501,502,503,504,505,506,507,508,510,511],i=function(e,n,r){void 0===r&&(r=1);var t=500,i=!1,u=function(c){return void 0===c&&(c=0),new Promise(function(r,t){var o=setTimeout(function(){i=!0,t(new Error("Fetch timed out"))},5e3);fetch(e,n).then(function(e){clearTimeout(o),i||r(e)}).catch(function(e){i||t(e)})}).then(function(e){return function(e){return 200<=e&&e<300}(t=e.status)?{response:e,error:null}:e.json().then(function(n){return{response:e,error:n}}).catch(function(){return{response:e,error:{message:"Unable to parse JSON"}}})}).then(function(e){var n=e.error;if(n)throw new Error(n.message||"Unknown error")}).catch(function(e){if(console.error(e),!(c>=r||!function(e){return o.includes(e)}(t)||i))return function(e){return new Promise(function(n){return setTimeout(n,e)})}(500*Math.pow(2,c)).then(function(){return u(++c)})})};return u()},u=i("http://localhost:3000",{body:"{}",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json"}),method:"POST"}).catch(function(e){return console.log("Error while loading session with error: ",e)});window.__RENDER_7_SESSION__=window.__RENDER_8_SESSION__={patchSession:function(e){return i(t+"/api/sessions"+window.location.search,{body:e?JSON.stringify(e):"{}",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json"}),method:"PATCH"}).catch(function(e){return console.log("Error while patching session with error: ",e)})},sessionPromise:u}}]); | ||
!function(e){var n={};function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)t.d(o,r,function(n){return e[n]}.bind(null,r));return o},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/",t(t.s=0)}([function(e,n,t){e.exports=t(1)},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(2),r=window.__RUNTIME__&&window.__RUNTIME__.culture&&window.__RUNTIME__.culture.availableLocales||[],i=window.__RUNTIME__&&window.__RUNTIME__.rootPath||"",u=[408,425,429,500,501,502,503,504,505,506,507,508,510,511],c=function(e,n,t){void 0===t&&(t=3);var o=500,r=function(i){return void 0===i&&(i=0),fetch(e,n).then(function(e){return o=e.status,e.json().then(function(e){return{response:e,error:null}})}).catch(function(e){return console.error(e),i>=t||!function(e){return u.includes(e)}(o)?{response:null,error:{message:"Maximum number of attempts achieved"}}:function(e){return new Promise(function(n){return setTimeout(n,e)})}(500*Math.pow(2,i)).then(function(){return r(++i)})})};return r()},s=(window.location.search?"&":"?")+"items="+o.ITEMS.join(","),a=r.length>0?"&supportedLocales="+r.join(","):"",l=c(i+"/api/sessions"+window.location.search+s+a,{body:"{}",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json"}),method:"POST"}).catch(function(e){return console.log("Error while loading session with error: ",e)});window.__RENDER_7_SESSION__=window.__RENDER_8_SESSION__={patchSession:function(e){return c(i+"/api/sessions"+window.location.search,{body:e?JSON.stringify(e):"{}",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json"}),method:"PATCH"}).catch(function(e){return console.log("Error while patching session with error: ",e)})},sessionPromise:l}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ITEMS=["account.id","account.accountName","store.channel","store.countryCode","store.cultureInfo","store.currencyCode","store.currencySymbol","store.admin_cultureInfo","creditControl.creditAccounts","creditControl.deadlines","creditControl.minimumInstallmentValue","authentication.storeUserId","authentication.storeUserEmail","profile.firstName","profile.document","profile.email","profile.id","profile.isAuthenticated","profile.lastName","profile.phone","public.favoritePickup"]}]); |
{ | ||
"name": "vtex-render-session", | ||
"version": "1.4.12-beta", | ||
"version": "1.5.0", | ||
"description": "Adds session as external to render runtime", | ||
@@ -5,0 +5,0 @@ "scripts": { |
@@ -0,1 +1,8 @@ | ||
import { ITEMS } from './constants' | ||
interface SessionResponse { | ||
response: Response | null, | ||
error: any, | ||
} | ||
const delay = (ms: number): Promise<void> => { | ||
@@ -16,47 +23,21 @@ return new Promise(resolve => setTimeout(resolve, ms)) | ||
const supportedLocales = window.__RUNTIME__ && window.__RUNTIME__.culture && window.__RUNTIME__.culture.availableLocales || [] | ||
const rootPath = window.__RUNTIME__ && window.__RUNTIME__.rootPath || '' | ||
const RETRY_STATUSES = [ 408, 425, 429, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511 ] | ||
const FETCH_TIMEOUT = 5000 | ||
const canRetry = (status: number) => RETRY_STATUSES.includes(status) | ||
const ok = (status: number) => 200 <= status && status < 300 | ||
const fetchWithRetry = (url: string, init: RequestInit, maxRetries: number = 1): Promise<void> => { | ||
const fetchWithRetry = (url: string, init: RequestInit, maxRetries: number = 3) => { | ||
let status = 500 | ||
let didTimeOut = false | ||
const callFetch = (attempt: number = 0): Promise<void> => | ||
new Promise((resolve, reject) => { | ||
const timeout = setTimeout(() => { | ||
didTimeOut = true | ||
reject(new Error('Fetch timed out')) | ||
}, FETCH_TIMEOUT) | ||
fetch(url, init).then((response) => { | ||
clearTimeout(timeout) | ||
if (!didTimeOut) { | ||
resolve(response) | ||
} | ||
}).catch((err) => { | ||
if (didTimeOut) { | ||
return | ||
} | ||
reject(err) | ||
}) | ||
}).then((response) => { | ||
status = (response as any).status | ||
return ok(status) | ||
? { response, error: null } | ||
: (response as any).json() | ||
.then((error: any) => ({ response, error })) | ||
.catch(() => ({ response, error: { message: 'Unable to parse JSON' } })) | ||
}).then(({ error }: any) => { | ||
if (error) { | ||
throw new Error(error.message || 'Unknown error') | ||
} | ||
const callFetch = (attempt: number = 0): Promise<SessionResponse>=> | ||
fetch(url, init).then((response: Response) => { | ||
status = response.status | ||
return response.json() | ||
.then((data: any) => ({response: data, error: null})) | ||
}).catch((error) => { | ||
console.error(error) | ||
if (attempt >= maxRetries || !canRetry(status) || didTimeOut) { | ||
return // no session is fine for now | ||
if (attempt >= maxRetries || !canRetry(status)) { | ||
return {response: null, error: {message: 'Maximum number of attempts achieved'}} as SessionResponse | ||
} | ||
@@ -79,4 +60,9 @@ | ||
const items = `${window.location.search ? '&' : '?'}items=${ITEMS.join(',')}` | ||
const sessionPromise = fetchWithRetry(`http://localhost:3000`, { | ||
const supportedLocalesSearch = supportedLocales.length > 0 | ||
? `&supportedLocales=${supportedLocales.join(',')}` | ||
: '' | ||
const sessionPromise = fetchWithRetry(`${rootPath}/api/sessions${window.location.search}${items}${supportedLocalesSearch}`, { | ||
body: '{}', | ||
@@ -93,2 +79,2 @@ credentials: 'same-origin', | ||
export {} | ||
export {} |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
31147
11
350
1