2428 lines
197 KiB
JavaScript
2428 lines
197 KiB
JavaScript
|
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["amp"],{
|
||
|
|
||
|
/***/ "./node_modules/next/dist/client/dev/amp-dev.js":
|
||
|
/*!******************************************************!*\
|
||
|
!*** ./node_modules/next/dist/client/dev/amp-dev.js ***!
|
||
|
\******************************************************/
|
||
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
||
|
|
||
|
"use strict";
|
||
|
/* module decorator */ module = __webpack_require__.nmd(module);
|
||
|
|
||
|
|
||
|
var _regeneratorRuntime = __webpack_require__(/*! ./node_modules/next/node_modules/@babel/runtime/regenerator */ "./node_modules/next/node_modules/@babel/runtime/regenerator/index.js");
|
||
|
|
||
|
var _asyncToGenerator = __webpack_require__(/*! ./node_modules/next/node_modules/@babel/runtime/helpers/asyncToGenerator */ "./node_modules/next/node_modules/@babel/runtime/helpers/asyncToGenerator.js");
|
||
|
|
||
|
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/next/node_modules/@babel/runtime/helpers/interopRequireDefault.js");
|
||
|
|
||
|
var _eventSourcePolyfill = _interopRequireDefault(__webpack_require__(/*! ./event-source-polyfill */ "./node_modules/next/dist/client/dev/event-source-polyfill.js"));
|
||
|
|
||
|
var _eventsource = __webpack_require__(/*! ./error-overlay/eventsource */ "./node_modules/next/dist/client/dev/error-overlay/eventsource.js");
|
||
|
|
||
|
var _onDemandEntriesUtils = __webpack_require__(/*! ./on-demand-entries-utils */ "./node_modules/next/dist/client/dev/on-demand-entries-utils.js");
|
||
|
|
||
|
var _fouc = __webpack_require__(/*! ./fouc */ "./node_modules/next/dist/client/dev/fouc.js");
|
||
|
/* globals __webpack_hash__ */
|
||
|
|
||
|
|
||
|
if (!window.EventSource) {
|
||
|
window.EventSource = _eventSourcePolyfill["default"];
|
||
|
}
|
||
|
|
||
|
var data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);
|
||
|
var assetPrefix = data.assetPrefix,
|
||
|
page = data.page;
|
||
|
assetPrefix = assetPrefix || '';
|
||
|
var mostRecentHash = null;
|
||
|
/* eslint-disable-next-line */
|
||
|
|
||
|
var curHash = __webpack_require__.h();
|
||
|
var hotUpdatePath = assetPrefix + (assetPrefix.endsWith('/') ? '' : '/') + '_next/static/webpack/'; // Is there a newer version of this code available?
|
||
|
|
||
|
function isUpdateAvailable() {
|
||
|
// __webpack_hash__ is the hash of the current compilation.
|
||
|
// It's a global variable injected by Webpack.
|
||
|
|
||
|
/* eslint-disable-next-line */
|
||
|
return mostRecentHash !== __webpack_require__.h();
|
||
|
} // Webpack disallows updates in other states.
|
||
|
|
||
|
|
||
|
function canApplyUpdates() {
|
||
|
return module.hot.status() === 'idle';
|
||
|
} // This function reads code updates on the fly and hard
|
||
|
// reloads the page when it has changed.
|
||
|
|
||
|
|
||
|
function tryApplyUpdates() {
|
||
|
return _tryApplyUpdates.apply(this, arguments);
|
||
|
}
|
||
|
|
||
|
function _tryApplyUpdates() {
|
||
|
_tryApplyUpdates = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
||
|
var res, jsonData, curPage, pageUpdated;
|
||
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
||
|
while (1) {
|
||
|
switch (_context.prev = _context.next) {
|
||
|
case 0:
|
||
|
if (!(!isUpdateAvailable() || !canApplyUpdates())) {
|
||
|
_context.next = 2;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return _context.abrupt("return");
|
||
|
|
||
|
case 2:
|
||
|
_context.prev = 2;
|
||
|
_context.next = 5;
|
||
|
return fetch("".concat(hotUpdatePath).concat(curHash, ".hot-update.json"));
|
||
|
|
||
|
case 5:
|
||
|
res = _context.sent;
|
||
|
_context.next = 8;
|
||
|
return res.json();
|
||
|
|
||
|
case 8:
|
||
|
jsonData = _context.sent;
|
||
|
curPage = page === '/' ? 'index' : page; // webpack 5 uses an array instead
|
||
|
|
||
|
pageUpdated = (Array.isArray(jsonData.c) ? jsonData.c : Object.keys(jsonData.c)).some(function (mod) {
|
||
|
return mod.indexOf("pages".concat(curPage.substr(0, 1) === '/' ? curPage : "/".concat(curPage))) !== -1 || mod.indexOf("pages".concat(curPage.substr(0, 1) === '/' ? curPage : "/".concat(curPage)).replace(/\//g, '\\')) !== -1;
|
||
|
});
|
||
|
|
||
|
if (pageUpdated) {
|
||
|
document.location.reload(true);
|
||
|
} else {
|
||
|
curHash = mostRecentHash;
|
||
|
}
|
||
|
|
||
|
_context.next = 18;
|
||
|
break;
|
||
|
|
||
|
case 14:
|
||
|
_context.prev = 14;
|
||
|
_context.t0 = _context["catch"](2);
|
||
|
console.error('Error occurred checking for update', _context.t0);
|
||
|
document.location.reload(true);
|
||
|
|
||
|
case 18:
|
||
|
case "end":
|
||
|
return _context.stop();
|
||
|
}
|
||
|
}
|
||
|
}, _callee, null, [[2, 14]]);
|
||
|
}));
|
||
|
return _tryApplyUpdates.apply(this, arguments);
|
||
|
}
|
||
|
|
||
|
(0, _eventsource.addMessageListener)(function (event) {
|
||
|
if (event.data === "\uD83D\uDC93") {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
var message = JSON.parse(event.data);
|
||
|
|
||
|
if (message.action === 'sync' || message.action === 'built') {
|
||
|
if (!message.hash) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
mostRecentHash = message.hash;
|
||
|
tryApplyUpdates();
|
||
|
} else if (message.action === 'reloadPage') {
|
||
|
document.location.reload(true);
|
||
|
}
|
||
|
} catch (ex) {
|
||
|
console.warn('Invalid HMR message: ' + event.data + '\n' + ex);
|
||
|
}
|
||
|
});
|
||
|
(0, _onDemandEntriesUtils.setupPing)(assetPrefix, function () {
|
||
|
return page;
|
||
|
});
|
||
|
(0, _fouc.displayContent)();
|
||
|
|
||
|
;
|
||
|
var _a, _b;
|
||
|
// Legacy CSS implementations will `eval` browser code in a Node.js context
|
||
|
// to extract CSS. For backwards compatibility, we need to check we're in a
|
||
|
// browser context before continuing.
|
||
|
if (typeof self !== 'undefined' &&
|
||
|
// AMP / No-JS mode does not inject these helpers:
|
||
|
'$RefreshHelpers$' in self) {
|
||
|
var currentExports = module.__proto__.exports;
|
||
|
var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;
|
||
|
// This cannot happen in MainTemplate because the exports mismatch between
|
||
|
// templating and execution.
|
||
|
self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);
|
||
|
// A module can be accepted automatically based on its exports, e.g. when
|
||
|
// it is a Refresh Boundary.
|
||
|
if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {
|
||
|
// Save the previous exports on update so we can compare the boundary
|
||
|
// signatures.
|
||
|
module.hot.dispose(function (data) {
|
||
|
data.prevExports = currentExports;
|
||
|
});
|
||
|
// Unconditionally accept an update to this module, we'll check if it's
|
||
|
// still a Refresh Boundary later.
|
||
|
module.hot.accept();
|
||
|
// This field is set when the previous version of this module was a
|
||
|
// Refresh Boundary, letting us know we need to check for invalidation or
|
||
|
// enqueue an update.
|
||
|
if (prevExports !== null) {
|
||
|
// A boundary can become ineligible if its exports are incompatible
|
||
|
// with the previous exports.
|
||
|
//
|
||
|
// For example, if you add/remove/change exports, we'll want to
|
||
|
// re-execute the importing modules, and force those components to
|
||
|
// re-render. Similarly, if you convert a class component to a
|
||
|
// function, we want to invalidate the boundary.
|
||
|
if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
else {
|
||
|
self.$RefreshHelpers$.scheduleUpdate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// Since we just executed the code for the module, it's possible that the
|
||
|
// new exports made it ineligible for being a boundary.
|
||
|
// We only care about the case when we were _previously_ a boundary,
|
||
|
// because we already accepted this update (accidental side effect).
|
||
|
var isNoLongerABoundary = prevExports !== null;
|
||
|
if (isNoLongerABoundary) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/dist/client/dev/error-overlay/eventsource.js":
|
||
|
/*!************************************************************************!*\
|
||
|
!*** ./node_modules/next/dist/client/dev/error-overlay/eventsource.js ***!
|
||
|
\************************************************************************/
|
||
|
/***/ (function(module, exports, __webpack_require__) {
|
||
|
|
||
|
"use strict";
|
||
|
/* module decorator */ module = __webpack_require__.nmd(module);
|
||
|
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.addMessageListener = addMessageListener;
|
||
|
exports.getEventSourceWrapper = getEventSourceWrapper;
|
||
|
var eventCallbacks = [];
|
||
|
|
||
|
function EventSourceWrapper(options) {
|
||
|
var source;
|
||
|
var lastActivity = new Date();
|
||
|
var listeners = [];
|
||
|
|
||
|
if (!options.timeout) {
|
||
|
options.timeout = 20 * 1000;
|
||
|
}
|
||
|
|
||
|
init();
|
||
|
var timer = setInterval(function () {
|
||
|
if (new Date() - lastActivity > options.timeout) {
|
||
|
handleDisconnect();
|
||
|
}
|
||
|
}, options.timeout / 2);
|
||
|
|
||
|
function init() {
|
||
|
source = new window.EventSource(options.path);
|
||
|
source.onopen = handleOnline;
|
||
|
source.onerror = handleDisconnect;
|
||
|
source.onmessage = handleMessage;
|
||
|
}
|
||
|
|
||
|
function handleOnline() {
|
||
|
if (options.log) console.log('[HMR] connected');
|
||
|
lastActivity = new Date();
|
||
|
}
|
||
|
|
||
|
function handleMessage(event) {
|
||
|
lastActivity = new Date();
|
||
|
|
||
|
for (var i = 0; i < listeners.length; i++) {
|
||
|
listeners[i](event);
|
||
|
}
|
||
|
|
||
|
eventCallbacks.forEach(function (cb) {
|
||
|
if (!cb.unfiltered && event.data.indexOf('action') === -1) return;
|
||
|
cb(event);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function handleDisconnect() {
|
||
|
clearInterval(timer);
|
||
|
source.close();
|
||
|
setTimeout(init, options.timeout);
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
close: function close() {
|
||
|
clearInterval(timer);
|
||
|
source.close();
|
||
|
},
|
||
|
addMessageListener: function addMessageListener(fn) {
|
||
|
listeners.push(fn);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
_c = EventSourceWrapper;
|
||
|
|
||
|
function addMessageListener(cb) {
|
||
|
eventCallbacks.push(cb);
|
||
|
}
|
||
|
|
||
|
function getEventSourceWrapper(options) {
|
||
|
return EventSourceWrapper(options);
|
||
|
}
|
||
|
|
||
|
var _c;
|
||
|
|
||
|
$RefreshReg$(_c, "EventSourceWrapper");
|
||
|
|
||
|
;
|
||
|
var _a, _b;
|
||
|
// Legacy CSS implementations will `eval` browser code in a Node.js context
|
||
|
// to extract CSS. For backwards compatibility, we need to check we're in a
|
||
|
// browser context before continuing.
|
||
|
if (typeof self !== 'undefined' &&
|
||
|
// AMP / No-JS mode does not inject these helpers:
|
||
|
'$RefreshHelpers$' in self) {
|
||
|
var currentExports = module.__proto__.exports;
|
||
|
var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;
|
||
|
// This cannot happen in MainTemplate because the exports mismatch between
|
||
|
// templating and execution.
|
||
|
self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);
|
||
|
// A module can be accepted automatically based on its exports, e.g. when
|
||
|
// it is a Refresh Boundary.
|
||
|
if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {
|
||
|
// Save the previous exports on update so we can compare the boundary
|
||
|
// signatures.
|
||
|
module.hot.dispose(function (data) {
|
||
|
data.prevExports = currentExports;
|
||
|
});
|
||
|
// Unconditionally accept an update to this module, we'll check if it's
|
||
|
// still a Refresh Boundary later.
|
||
|
module.hot.accept();
|
||
|
// This field is set when the previous version of this module was a
|
||
|
// Refresh Boundary, letting us know we need to check for invalidation or
|
||
|
// enqueue an update.
|
||
|
if (prevExports !== null) {
|
||
|
// A boundary can become ineligible if its exports are incompatible
|
||
|
// with the previous exports.
|
||
|
//
|
||
|
// For example, if you add/remove/change exports, we'll want to
|
||
|
// re-execute the importing modules, and force those components to
|
||
|
// re-render. Similarly, if you convert a class component to a
|
||
|
// function, we want to invalidate the boundary.
|
||
|
if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
else {
|
||
|
self.$RefreshHelpers$.scheduleUpdate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// Since we just executed the code for the module, it's possible that the
|
||
|
// new exports made it ineligible for being a boundary.
|
||
|
// We only care about the case when we were _previously_ a boundary,
|
||
|
// because we already accepted this update (accidental side effect).
|
||
|
var isNoLongerABoundary = prevExports !== null;
|
||
|
if (isNoLongerABoundary) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/dist/client/dev/event-source-polyfill.js":
|
||
|
/*!********************************************************************!*\
|
||
|
!*** ./node_modules/next/dist/client/dev/event-source-polyfill.js ***!
|
||
|
\********************************************************************/
|
||
|
/***/ (function(module, exports, __webpack_require__) {
|
||
|
|
||
|
"use strict";
|
||
|
/* module decorator */ module = __webpack_require__.nmd(module);
|
||
|
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.default = void 0;
|
||
|
/* eslint-disable */
|
||
|
// Improved version of https://github.com/Yaffle/EventSource/
|
||
|
// Available under MIT License (MIT)
|
||
|
// Only tries to support IE11 and nothing below
|
||
|
|
||
|
var document = window.document;
|
||
|
var Response = window.Response;
|
||
|
var TextDecoder = window.TextDecoder;
|
||
|
var TextEncoder = window.TextEncoder;
|
||
|
var AbortController = window.AbortController;
|
||
|
|
||
|
if (AbortController == undefined) {
|
||
|
AbortController = function AbortController() {
|
||
|
this.signal = null;
|
||
|
|
||
|
this.abort = function () {};
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function TextDecoderPolyfill() {
|
||
|
this.bitsNeeded = 0;
|
||
|
this.codePoint = 0;
|
||
|
}
|
||
|
|
||
|
_c = TextDecoderPolyfill;
|
||
|
|
||
|
TextDecoderPolyfill.prototype.decode = function (octets) {
|
||
|
function valid(codePoint, shift, octetsCount) {
|
||
|
if (octetsCount === 1) {
|
||
|
return codePoint >= 0x0080 >> shift && codePoint << shift <= 0x07ff;
|
||
|
}
|
||
|
|
||
|
if (octetsCount === 2) {
|
||
|
return codePoint >= 0x0800 >> shift && codePoint << shift <= 0xd7ff || codePoint >= 0xe000 >> shift && codePoint << shift <= 0xffff;
|
||
|
}
|
||
|
|
||
|
if (octetsCount === 3) {
|
||
|
return codePoint >= 0x010000 >> shift && codePoint << shift <= 0x10ffff;
|
||
|
}
|
||
|
|
||
|
throw new Error();
|
||
|
}
|
||
|
|
||
|
function octetsCount(bitsNeeded, codePoint) {
|
||
|
if (bitsNeeded === 6 * 1) {
|
||
|
return codePoint >> 6 > 15 ? 3 : codePoint > 31 ? 2 : 1;
|
||
|
}
|
||
|
|
||
|
if (bitsNeeded === 6 * 2) {
|
||
|
return codePoint > 15 ? 3 : 2;
|
||
|
}
|
||
|
|
||
|
if (bitsNeeded === 6 * 3) {
|
||
|
return 3;
|
||
|
}
|
||
|
|
||
|
throw new Error();
|
||
|
}
|
||
|
|
||
|
var REPLACER = 0xfffd;
|
||
|
var string = '';
|
||
|
var bitsNeeded = this.bitsNeeded;
|
||
|
var codePoint = this.codePoint;
|
||
|
|
||
|
for (var i = 0; i < octets.length; i += 1) {
|
||
|
var octet = octets[i];
|
||
|
|
||
|
if (bitsNeeded !== 0) {
|
||
|
if (octet < 128 || octet > 191 || !valid(codePoint << 6 | octet & 63, bitsNeeded - 6, octetsCount(bitsNeeded, codePoint))) {
|
||
|
bitsNeeded = 0;
|
||
|
codePoint = REPLACER;
|
||
|
string += String.fromCharCode(codePoint);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (bitsNeeded === 0) {
|
||
|
if (octet >= 0 && octet <= 127) {
|
||
|
bitsNeeded = 0;
|
||
|
codePoint = octet;
|
||
|
} else if (octet >= 192 && octet <= 223) {
|
||
|
bitsNeeded = 6 * 1;
|
||
|
codePoint = octet & 31;
|
||
|
} else if (octet >= 224 && octet <= 239) {
|
||
|
bitsNeeded = 6 * 2;
|
||
|
codePoint = octet & 15;
|
||
|
} else if (octet >= 240 && octet <= 247) {
|
||
|
bitsNeeded = 6 * 3;
|
||
|
codePoint = octet & 7;
|
||
|
} else {
|
||
|
bitsNeeded = 0;
|
||
|
codePoint = REPLACER;
|
||
|
}
|
||
|
|
||
|
if (bitsNeeded !== 0 && !valid(codePoint, bitsNeeded, octetsCount(bitsNeeded, codePoint))) {
|
||
|
bitsNeeded = 0;
|
||
|
codePoint = REPLACER;
|
||
|
}
|
||
|
} else {
|
||
|
bitsNeeded -= 6;
|
||
|
codePoint = codePoint << 6 | octet & 63;
|
||
|
}
|
||
|
|
||
|
if (bitsNeeded === 0) {
|
||
|
if (codePoint <= 0xffff) {
|
||
|
string += String.fromCharCode(codePoint);
|
||
|
} else {
|
||
|
string += String.fromCharCode(0xd800 + (codePoint - 0xffff - 1 >> 10));
|
||
|
string += String.fromCharCode(0xdc00 + (codePoint - 0xffff - 1 & 0x3ff));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.bitsNeeded = bitsNeeded;
|
||
|
this.codePoint = codePoint;
|
||
|
return string;
|
||
|
}; // Firefox < 38 throws an error with stream option
|
||
|
|
||
|
|
||
|
var supportsStreamOption = function supportsStreamOption() {
|
||
|
try {
|
||
|
return new TextDecoder().decode(new TextEncoder().encode('test'), {
|
||
|
stream: true
|
||
|
}) === 'test';
|
||
|
} catch (error) {
|
||
|
console.log(error);
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}; // IE, Edge
|
||
|
|
||
|
|
||
|
if (TextDecoder == undefined || TextEncoder == undefined || !supportsStreamOption()) {
|
||
|
TextDecoder = TextDecoderPolyfill;
|
||
|
}
|
||
|
|
||
|
var k = function k() {};
|
||
|
|
||
|
function XHRWrapper(xhr) {
|
||
|
this.withCredentials = false;
|
||
|
this.responseType = '';
|
||
|
this.readyState = 0;
|
||
|
this.status = 0;
|
||
|
this.statusText = '';
|
||
|
this.responseText = '';
|
||
|
this.onprogress = k;
|
||
|
this.onreadystatechange = k;
|
||
|
this._contentType = '';
|
||
|
this._xhr = xhr;
|
||
|
this._sendTimeout = 0;
|
||
|
this._abort = k;
|
||
|
}
|
||
|
|
||
|
_c2 = XHRWrapper;
|
||
|
|
||
|
XHRWrapper.prototype.open = function (method, url) {
|
||
|
this._abort(true);
|
||
|
|
||
|
var that = this;
|
||
|
var xhr = this._xhr;
|
||
|
var state = 1;
|
||
|
var timeout = 0;
|
||
|
|
||
|
this._abort = function (silent) {
|
||
|
if (that._sendTimeout !== 0) {
|
||
|
clearTimeout(that._sendTimeout);
|
||
|
that._sendTimeout = 0;
|
||
|
}
|
||
|
|
||
|
if (state === 1 || state === 2 || state === 3) {
|
||
|
state = 4;
|
||
|
xhr.onload = k;
|
||
|
xhr.onerror = k;
|
||
|
xhr.onabort = k;
|
||
|
xhr.onprogress = k;
|
||
|
xhr.onreadystatechange = k; // IE 8 - 9: XDomainRequest#abort() does not fire any event
|
||
|
// Opera < 10: XMLHttpRequest#abort() does not fire any event
|
||
|
|
||
|
xhr.abort();
|
||
|
|
||
|
if (timeout !== 0) {
|
||
|
clearTimeout(timeout);
|
||
|
timeout = 0;
|
||
|
}
|
||
|
|
||
|
if (!silent) {
|
||
|
that.readyState = 4;
|
||
|
that.onreadystatechange();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
state = 0;
|
||
|
};
|
||
|
|
||
|
var onStart = function onStart() {
|
||
|
if (state === 1) {
|
||
|
// state = 2;
|
||
|
var status = 0;
|
||
|
var statusText = '';
|
||
|
var contentType = undefined;
|
||
|
|
||
|
if (!('contentType' in xhr)) {
|
||
|
try {
|
||
|
status = xhr.status;
|
||
|
statusText = xhr.statusText;
|
||
|
contentType = xhr.getResponseHeader('Content-Type');
|
||
|
} catch (error) {
|
||
|
// IE < 10 throws exception for `xhr.status` when xhr.readyState === 2 || xhr.readyState === 3
|
||
|
// Opera < 11 throws exception for `xhr.status` when xhr.readyState === 2
|
||
|
// https://bugs.webkit.org/show_bug.cgi?id=29121
|
||
|
status = 0;
|
||
|
statusText = '';
|
||
|
contentType = undefined; // Firefox < 14, Chrome ?, Safari ?
|
||
|
// https://bugs.webkit.org/show_bug.cgi?id=29658
|
||
|
// https://bugs.webkit.org/show_bug.cgi?id=77854
|
||
|
}
|
||
|
} else {
|
||
|
status = 200;
|
||
|
statusText = 'OK';
|
||
|
contentType = xhr.contentType;
|
||
|
}
|
||
|
|
||
|
if (status !== 0) {
|
||
|
state = 2;
|
||
|
that.readyState = 2;
|
||
|
that.status = status;
|
||
|
that.statusText = statusText;
|
||
|
that._contentType = contentType;
|
||
|
that.onreadystatechange();
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var onProgress = function onProgress() {
|
||
|
onStart();
|
||
|
|
||
|
if (state === 2 || state === 3) {
|
||
|
state = 3;
|
||
|
var responseText = '';
|
||
|
|
||
|
try {
|
||
|
responseText = xhr.responseText;
|
||
|
} catch (error) {// IE 8 - 9 with XMLHttpRequest
|
||
|
}
|
||
|
|
||
|
that.readyState = 3;
|
||
|
that.responseText = responseText;
|
||
|
that.onprogress();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var onFinish = function onFinish() {
|
||
|
// Firefox 52 fires "readystatechange" (xhr.readyState === 4) without final "readystatechange" (xhr.readyState === 3)
|
||
|
// IE 8 fires "onload" without "onprogress"
|
||
|
onProgress();
|
||
|
|
||
|
if (state === 1 || state === 2 || state === 3) {
|
||
|
state = 4;
|
||
|
|
||
|
if (timeout !== 0) {
|
||
|
clearTimeout(timeout);
|
||
|
timeout = 0;
|
||
|
}
|
||
|
|
||
|
that.readyState = 4;
|
||
|
that.onreadystatechange();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var onReadyStateChange = function onReadyStateChange() {
|
||
|
if (xhr != undefined) {
|
||
|
// Opera 12
|
||
|
if (xhr.readyState === 4) {
|
||
|
onFinish();
|
||
|
} else if (xhr.readyState === 3) {
|
||
|
onProgress();
|
||
|
} else if (xhr.readyState === 2) {
|
||
|
onStart();
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var onTimeout = function onTimeout() {
|
||
|
timeout = setTimeout(function () {
|
||
|
onTimeout();
|
||
|
}, 500);
|
||
|
|
||
|
if (xhr.readyState === 3) {
|
||
|
onProgress();
|
||
|
}
|
||
|
}; // XDomainRequest#abort removes onprogress, onerror, onload
|
||
|
|
||
|
|
||
|
xhr.onload = onFinish;
|
||
|
xhr.onerror = onFinish; // improper fix to match Firefox behavior, but it is better than just ignore abort
|
||
|
// see https://bugzilla.mozilla.org/show_bug.cgi?id=768596
|
||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=880200
|
||
|
// https://code.google.com/p/chromium/issues/detail?id=153570
|
||
|
// IE 8 fires "onload" without "onprogress
|
||
|
|
||
|
xhr.onabort = onFinish; // https://bugzilla.mozilla.org/show_bug.cgi?id=736723
|
||
|
|
||
|
if (!('sendAsBinary' in XMLHttpRequest.prototype) && !('mozAnon' in XMLHttpRequest.prototype)) {
|
||
|
xhr.onprogress = onProgress;
|
||
|
} // IE 8 - 9 (XMLHTTPRequest)
|
||
|
// Opera < 12
|
||
|
// Firefox < 3.5
|
||
|
// Firefox 3.5 - 3.6 - ? < 9.0
|
||
|
// onprogress is not fired sometimes or delayed
|
||
|
// see also #64
|
||
|
|
||
|
|
||
|
xhr.onreadystatechange = onReadyStateChange;
|
||
|
|
||
|
if ('contentType' in xhr) {
|
||
|
url += (url.indexOf('?') === -1 ? '?' : '&') + 'padding=true';
|
||
|
}
|
||
|
|
||
|
xhr.open(method, url, true);
|
||
|
|
||
|
if ('readyState' in xhr) {
|
||
|
// workaround for Opera 12 issue with "progress" events
|
||
|
// #91
|
||
|
timeout = setTimeout(function () {
|
||
|
onTimeout();
|
||
|
}, 0);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
XHRWrapper.prototype.abort = function () {
|
||
|
this._abort(false);
|
||
|
};
|
||
|
|
||
|
XHRWrapper.prototype.getResponseHeader = function (name) {
|
||
|
return this._contentType;
|
||
|
};
|
||
|
|
||
|
XHRWrapper.prototype.setRequestHeader = function (name, value) {
|
||
|
var xhr = this._xhr;
|
||
|
|
||
|
if ('setRequestHeader' in xhr) {
|
||
|
xhr.setRequestHeader(name, value);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
XHRWrapper.prototype.getAllResponseHeaders = function () {
|
||
|
return this._xhr.getAllResponseHeaders != undefined ? this._xhr.getAllResponseHeaders() : '';
|
||
|
};
|
||
|
|
||
|
XHRWrapper.prototype.send = function () {
|
||
|
// loading indicator in Safari < ? (6), Chrome < 14, Firefox
|
||
|
if (!('ontimeout' in XMLHttpRequest.prototype) && document != undefined && document.readyState != undefined && document.readyState !== 'complete') {
|
||
|
var that = this;
|
||
|
that._sendTimeout = setTimeout(function () {
|
||
|
that._sendTimeout = 0;
|
||
|
that.send();
|
||
|
}, 4);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var xhr = this._xhr; // withCredentials should be set after "open" for Safari and Chrome (< 19 ?)
|
||
|
|
||
|
xhr.withCredentials = this.withCredentials;
|
||
|
xhr.responseType = this.responseType;
|
||
|
|
||
|
try {
|
||
|
// xhr.send(); throws "Not enough arguments" in Firefox 3.0
|
||
|
xhr.send(undefined);
|
||
|
} catch (error1) {
|
||
|
// Safari 5.1.7, Opera 12
|
||
|
throw error1;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
function toLowerCase(name) {
|
||
|
return name.replace(/[A-Z]/g, function (c) {
|
||
|
return String.fromCharCode(c.charCodeAt(0) + 0x20);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function HeadersPolyfill(all) {
|
||
|
// Get headers: implemented according to mozilla's example code: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example
|
||
|
var map = Object.create(null);
|
||
|
var array = all.split('\r\n');
|
||
|
|
||
|
for (var i = 0; i < array.length; i += 1) {
|
||
|
var line = array[i];
|
||
|
var parts = line.split(': ');
|
||
|
var name = parts.shift();
|
||
|
var value = parts.join(': ');
|
||
|
map[toLowerCase(name)] = value;
|
||
|
}
|
||
|
|
||
|
this._map = map;
|
||
|
}
|
||
|
|
||
|
_c3 = HeadersPolyfill;
|
||
|
|
||
|
HeadersPolyfill.prototype.get = function (name) {
|
||
|
return this._map[toLowerCase(name)];
|
||
|
};
|
||
|
|
||
|
function XHRTransport() {}
|
||
|
|
||
|
_c4 = XHRTransport;
|
||
|
|
||
|
XHRTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) {
|
||
|
xhr.open('GET', url);
|
||
|
var offset = 0;
|
||
|
|
||
|
xhr.onprogress = function () {
|
||
|
var responseText = xhr.responseText;
|
||
|
var chunk = responseText.slice(offset);
|
||
|
offset += chunk.length;
|
||
|
onProgressCallback(chunk);
|
||
|
};
|
||
|
|
||
|
xhr.onreadystatechange = function () {
|
||
|
if (xhr.readyState === 2) {
|
||
|
var status = xhr.status;
|
||
|
var statusText = xhr.statusText;
|
||
|
var contentType = xhr.getResponseHeader('Content-Type');
|
||
|
var headers = xhr.getAllResponseHeaders();
|
||
|
onStartCallback(status, statusText, contentType, new HeadersPolyfill(headers), function () {
|
||
|
xhr.abort();
|
||
|
});
|
||
|
} else if (xhr.readyState === 4) {
|
||
|
onFinishCallback();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
xhr.withCredentials = withCredentials;
|
||
|
xhr.responseType = 'text';
|
||
|
|
||
|
for (var name in headers) {
|
||
|
if (Object.prototype.hasOwnProperty.call(headers, name)) {
|
||
|
xhr.setRequestHeader(name, headers[name]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xhr.send();
|
||
|
};
|
||
|
|
||
|
function HeadersWrapper(headers) {
|
||
|
this._headers = headers;
|
||
|
}
|
||
|
|
||
|
_c5 = HeadersWrapper;
|
||
|
|
||
|
HeadersWrapper.prototype.get = function (name) {
|
||
|
return this._headers.get(name);
|
||
|
};
|
||
|
|
||
|
function FetchTransport() {}
|
||
|
|
||
|
_c6 = FetchTransport;
|
||
|
|
||
|
FetchTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) {
|
||
|
var controller = new AbortController();
|
||
|
var signal = controller.signal; // see #120
|
||
|
|
||
|
var textDecoder = new TextDecoder();
|
||
|
fetch(url, {
|
||
|
headers: headers,
|
||
|
credentials: withCredentials ? 'include' : 'same-origin',
|
||
|
signal: signal,
|
||
|
cache: 'no-store'
|
||
|
}).then(function (response) {
|
||
|
var reader = response.body.getReader();
|
||
|
onStartCallback(response.status, response.statusText, response.headers.get('Content-Type'), new HeadersWrapper(response.headers), function () {
|
||
|
controller.abort();
|
||
|
reader.cancel();
|
||
|
});
|
||
|
return new Promise(function (resolve, reject) {
|
||
|
var readNextChunk = function readNextChunk() {
|
||
|
reader.read().then(function (result) {
|
||
|
if (result.done) {
|
||
|
// Note: bytes in textDecoder are ignored
|
||
|
resolve(undefined);
|
||
|
} else {
|
||
|
var chunk = textDecoder.decode(result.value, {
|
||
|
stream: true
|
||
|
});
|
||
|
onProgressCallback(chunk);
|
||
|
readNextChunk();
|
||
|
}
|
||
|
})['catch'](function (error) {
|
||
|
reject(error);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
readNextChunk();
|
||
|
});
|
||
|
}).then(function (result) {
|
||
|
onFinishCallback();
|
||
|
return result;
|
||
|
}, function (error) {
|
||
|
onFinishCallback();
|
||
|
return Promise.reject(error);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function EventTarget() {
|
||
|
this._listeners = Object.create(null);
|
||
|
}
|
||
|
|
||
|
_c7 = EventTarget;
|
||
|
|
||
|
function throwError(e) {
|
||
|
setTimeout(function () {
|
||
|
throw e;
|
||
|
}, 0);
|
||
|
}
|
||
|
|
||
|
EventTarget.prototype.dispatchEvent = function (event) {
|
||
|
event.target = this;
|
||
|
var typeListeners = this._listeners[event.type];
|
||
|
|
||
|
if (typeListeners != undefined) {
|
||
|
var length = typeListeners.length;
|
||
|
|
||
|
for (var i = 0; i < length; i += 1) {
|
||
|
var listener = typeListeners[i];
|
||
|
|
||
|
try {
|
||
|
if (typeof listener.handleEvent === 'function') {
|
||
|
listener.handleEvent(event);
|
||
|
} else {
|
||
|
listener.call(this, event);
|
||
|
}
|
||
|
} catch (e) {
|
||
|
throwError(e);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
EventTarget.prototype.addEventListener = function (type, listener) {
|
||
|
type = String(type);
|
||
|
var listeners = this._listeners;
|
||
|
var typeListeners = listeners[type];
|
||
|
|
||
|
if (typeListeners == undefined) {
|
||
|
typeListeners = [];
|
||
|
listeners[type] = typeListeners;
|
||
|
}
|
||
|
|
||
|
var found = false;
|
||
|
|
||
|
for (var i = 0; i < typeListeners.length; i += 1) {
|
||
|
if (typeListeners[i] === listener) {
|
||
|
found = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!found) {
|
||
|
typeListeners.push(listener);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
EventTarget.prototype.removeEventListener = function (type, listener) {
|
||
|
type = String(type);
|
||
|
var listeners = this._listeners;
|
||
|
var typeListeners = listeners[type];
|
||
|
|
||
|
if (typeListeners != undefined) {
|
||
|
var filtered = [];
|
||
|
|
||
|
for (var i = 0; i < typeListeners.length; i += 1) {
|
||
|
if (typeListeners[i] !== listener) {
|
||
|
filtered.push(typeListeners[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (filtered.length === 0) {
|
||
|
delete listeners[type];
|
||
|
} else {
|
||
|
listeners[type] = filtered;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
function Event(type) {
|
||
|
this.type = type;
|
||
|
this.target = undefined;
|
||
|
}
|
||
|
|
||
|
_c8 = Event;
|
||
|
|
||
|
function MessageEvent(type, options) {
|
||
|
Event.call(this, type);
|
||
|
this.data = options.data;
|
||
|
this.lastEventId = options.lastEventId;
|
||
|
}
|
||
|
|
||
|
_c9 = MessageEvent;
|
||
|
MessageEvent.prototype = Object.create(Event.prototype);
|
||
|
|
||
|
function ConnectionEvent(type, options) {
|
||
|
Event.call(this, type);
|
||
|
this.status = options.status;
|
||
|
this.statusText = options.statusText;
|
||
|
this.headers = options.headers;
|
||
|
}
|
||
|
|
||
|
_c10 = ConnectionEvent;
|
||
|
ConnectionEvent.prototype = Object.create(Event.prototype);
|
||
|
var WAITING = -1;
|
||
|
var CONNECTING = 0;
|
||
|
var OPEN = 1;
|
||
|
var CLOSED = 2;
|
||
|
var AFTER_CR = -1;
|
||
|
var FIELD_START = 0;
|
||
|
var FIELD = 1;
|
||
|
var VALUE_START = 2;
|
||
|
var VALUE = 3;
|
||
|
var contentTypeRegExp = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i;
|
||
|
var MINIMUM_DURATION = 1000;
|
||
|
var MAXIMUM_DURATION = 18000000;
|
||
|
|
||
|
var parseDuration = function parseDuration(value, def) {
|
||
|
var n = parseInt(value, 10);
|
||
|
|
||
|
if (n !== n) {
|
||
|
n = def;
|
||
|
}
|
||
|
|
||
|
return clampDuration(n);
|
||
|
};
|
||
|
|
||
|
var clampDuration = function clampDuration(n) {
|
||
|
return Math.min(Math.max(n, MINIMUM_DURATION), MAXIMUM_DURATION);
|
||
|
};
|
||
|
|
||
|
var fire = function fire(that, f, event) {
|
||
|
try {
|
||
|
if (typeof f === 'function') {
|
||
|
f.call(that, event);
|
||
|
}
|
||
|
} catch (e) {
|
||
|
throwError(e);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
function EventSourcePolyfill(url, options) {
|
||
|
EventTarget.call(this);
|
||
|
this.onopen = undefined;
|
||
|
this.onmessage = undefined;
|
||
|
this.onerror = undefined;
|
||
|
this.url = undefined;
|
||
|
this.readyState = undefined;
|
||
|
this.withCredentials = undefined;
|
||
|
this._close = undefined;
|
||
|
start(this, url, options);
|
||
|
}
|
||
|
|
||
|
_c11 = EventSourcePolyfill;
|
||
|
var isFetchSupported = fetch != undefined && Response != undefined && 'body' in Response.prototype;
|
||
|
|
||
|
function start(es, url, options) {
|
||
|
url = String(url);
|
||
|
var withCredentials = options != undefined && Boolean(options.withCredentials);
|
||
|
var initialRetry = clampDuration(1000);
|
||
|
var heartbeatTimeout = options != undefined && options.heartbeatTimeout != undefined ? parseDuration(options.heartbeatTimeout, 45000) : clampDuration(45000);
|
||
|
var lastEventId = '';
|
||
|
var retry = initialRetry;
|
||
|
var wasActivity = false;
|
||
|
var headers = options != undefined && options.headers != undefined ? JSON.parse(JSON.stringify(options.headers)) : undefined;
|
||
|
var CurrentTransport = options != undefined && options.Transport != undefined ? options.Transport : XMLHttpRequest;
|
||
|
var xhr = isFetchSupported && !(options != undefined && options.Transport != undefined) ? undefined : new XHRWrapper(new CurrentTransport());
|
||
|
var transport = xhr == undefined ? new FetchTransport() : new XHRTransport();
|
||
|
var cancelFunction = undefined;
|
||
|
var timeout = 0;
|
||
|
var currentState = WAITING;
|
||
|
var dataBuffer = '';
|
||
|
var lastEventIdBuffer = '';
|
||
|
var eventTypeBuffer = '';
|
||
|
var textBuffer = '';
|
||
|
var state = FIELD_START;
|
||
|
var fieldStart = 0;
|
||
|
var valueStart = 0;
|
||
|
|
||
|
var onStart = function onStart(status, statusText, contentType, headers, cancel) {
|
||
|
if (currentState === CONNECTING) {
|
||
|
cancelFunction = cancel;
|
||
|
|
||
|
if (status === 200 && contentType != undefined && contentTypeRegExp.test(contentType)) {
|
||
|
currentState = OPEN;
|
||
|
wasActivity = true;
|
||
|
retry = initialRetry;
|
||
|
es.readyState = OPEN;
|
||
|
var event = new ConnectionEvent('open', {
|
||
|
status: status,
|
||
|
statusText: statusText,
|
||
|
headers: headers
|
||
|
});
|
||
|
es.dispatchEvent(event);
|
||
|
fire(es, es.onopen, event);
|
||
|
} else {
|
||
|
var message = '';
|
||
|
|
||
|
if (status !== 200) {
|
||
|
if (statusText) {
|
||
|
statusText = statusText.replace(/\s+/g, ' ');
|
||
|
}
|
||
|
|
||
|
message = "EventSource's response has a status " + status + ' ' + statusText + ' that is not 200. Aborting the connection.';
|
||
|
} else {
|
||
|
message = "EventSource's response has a Content-Type specifying an unsupported type: " + (contentType == undefined ? '-' : contentType.replace(/\s+/g, ' ')) + '. Aborting the connection.';
|
||
|
}
|
||
|
|
||
|
throwError(new Error(message));
|
||
|
close();
|
||
|
var event = new ConnectionEvent('error', {
|
||
|
status: status,
|
||
|
statusText: statusText,
|
||
|
headers: headers
|
||
|
});
|
||
|
es.dispatchEvent(event);
|
||
|
fire(es, es.onerror, event);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var onProgress = function onProgress(textChunk) {
|
||
|
if (currentState === OPEN) {
|
||
|
var n = -1;
|
||
|
|
||
|
for (var i = 0; i < textChunk.length; i += 1) {
|
||
|
var c = textChunk.charCodeAt(i);
|
||
|
|
||
|
if (c === '\n'.charCodeAt(0) || c === '\r'.charCodeAt(0)) {
|
||
|
n = i;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var chunk = (n !== -1 ? textBuffer : '') + textChunk.slice(0, n + 1);
|
||
|
textBuffer = (n === -1 ? textBuffer : '') + textChunk.slice(n + 1);
|
||
|
|
||
|
if (chunk !== '') {
|
||
|
wasActivity = true;
|
||
|
}
|
||
|
|
||
|
for (var position = 0; position < chunk.length; position += 1) {
|
||
|
var c = chunk.charCodeAt(position);
|
||
|
|
||
|
if (state === AFTER_CR && c === '\n'.charCodeAt(0)) {
|
||
|
state = FIELD_START;
|
||
|
} else {
|
||
|
if (state === AFTER_CR) {
|
||
|
state = FIELD_START;
|
||
|
}
|
||
|
|
||
|
if (c === '\r'.charCodeAt(0) || c === '\n'.charCodeAt(0)) {
|
||
|
if (state !== FIELD_START) {
|
||
|
if (state === FIELD) {
|
||
|
valueStart = position + 1;
|
||
|
}
|
||
|
|
||
|
var field = chunk.slice(fieldStart, valueStart - 1);
|
||
|
var value = chunk.slice(valueStart + (valueStart < position && chunk.charCodeAt(valueStart) === ' '.charCodeAt(0) ? 1 : 0), position);
|
||
|
|
||
|
if (field === 'data') {
|
||
|
dataBuffer += '\n';
|
||
|
dataBuffer += value;
|
||
|
} else if (field === 'id') {
|
||
|
lastEventIdBuffer = value;
|
||
|
} else if (field === 'event') {
|
||
|
eventTypeBuffer = value;
|
||
|
} else if (field === 'retry') {
|
||
|
initialRetry = parseDuration(value, initialRetry);
|
||
|
retry = initialRetry;
|
||
|
} else if (field === 'heartbeatTimeout') {
|
||
|
heartbeatTimeout = parseDuration(value, heartbeatTimeout);
|
||
|
|
||
|
if (timeout !== 0) {
|
||
|
clearTimeout(timeout);
|
||
|
timeout = setTimeout(function () {
|
||
|
onTimeout();
|
||
|
}, heartbeatTimeout);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (state === FIELD_START) {
|
||
|
if (dataBuffer !== '') {
|
||
|
lastEventId = lastEventIdBuffer;
|
||
|
|
||
|
if (eventTypeBuffer === '') {
|
||
|
eventTypeBuffer = 'message';
|
||
|
}
|
||
|
|
||
|
var event = new MessageEvent(eventTypeBuffer, {
|
||
|
data: dataBuffer.slice(1),
|
||
|
lastEventId: lastEventIdBuffer
|
||
|
});
|
||
|
es.dispatchEvent(event);
|
||
|
|
||
|
if (eventTypeBuffer === 'message') {
|
||
|
fire(es, es.onmessage, event);
|
||
|
}
|
||
|
|
||
|
if (currentState === CLOSED) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dataBuffer = '';
|
||
|
eventTypeBuffer = '';
|
||
|
}
|
||
|
|
||
|
state = c === '\r'.charCodeAt(0) ? AFTER_CR : FIELD_START;
|
||
|
} else {
|
||
|
if (state === FIELD_START) {
|
||
|
fieldStart = position;
|
||
|
state = FIELD;
|
||
|
}
|
||
|
|
||
|
if (state === FIELD) {
|
||
|
if (c === ':'.charCodeAt(0)) {
|
||
|
valueStart = position + 1;
|
||
|
state = VALUE_START;
|
||
|
}
|
||
|
} else if (state === VALUE_START) {
|
||
|
state = VALUE;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var onFinish = function onFinish() {
|
||
|
if (currentState === OPEN || currentState === CONNECTING) {
|
||
|
currentState = WAITING;
|
||
|
|
||
|
if (timeout !== 0) {
|
||
|
clearTimeout(timeout);
|
||
|
timeout = 0;
|
||
|
}
|
||
|
|
||
|
timeout = setTimeout(function () {
|
||
|
onTimeout();
|
||
|
}, retry);
|
||
|
retry = clampDuration(Math.min(initialRetry * 16, retry * 2));
|
||
|
es.readyState = CONNECTING;
|
||
|
var event = new Event('error');
|
||
|
es.dispatchEvent(event);
|
||
|
fire(es, es.onerror, event);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var close = function close() {
|
||
|
currentState = CLOSED;
|
||
|
|
||
|
if (cancelFunction != undefined) {
|
||
|
cancelFunction();
|
||
|
cancelFunction = undefined;
|
||
|
}
|
||
|
|
||
|
if (timeout !== 0) {
|
||
|
clearTimeout(timeout);
|
||
|
timeout = 0;
|
||
|
}
|
||
|
|
||
|
es.readyState = CLOSED;
|
||
|
};
|
||
|
|
||
|
var onTimeout = function onTimeout() {
|
||
|
timeout = 0;
|
||
|
|
||
|
if (currentState !== WAITING) {
|
||
|
if (!wasActivity && cancelFunction != undefined) {
|
||
|
throwError(new Error('No activity within ' + heartbeatTimeout + ' milliseconds. Reconnecting.'));
|
||
|
cancelFunction();
|
||
|
cancelFunction = undefined;
|
||
|
} else {
|
||
|
wasActivity = false;
|
||
|
timeout = setTimeout(function () {
|
||
|
onTimeout();
|
||
|
}, heartbeatTimeout);
|
||
|
}
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
wasActivity = false;
|
||
|
timeout = setTimeout(function () {
|
||
|
onTimeout();
|
||
|
}, heartbeatTimeout);
|
||
|
currentState = CONNECTING;
|
||
|
dataBuffer = '';
|
||
|
eventTypeBuffer = '';
|
||
|
lastEventIdBuffer = lastEventId;
|
||
|
textBuffer = '';
|
||
|
fieldStart = 0;
|
||
|
valueStart = 0;
|
||
|
state = FIELD_START; // https://bugzilla.mozilla.org/show_bug.cgi?id=428916
|
||
|
// Request header field Last-Event-ID is not allowed by Access-Control-Allow-Headers.
|
||
|
|
||
|
var requestURL = url;
|
||
|
|
||
|
if (url.slice(0, 5) !== 'data:' && url.slice(0, 5) !== 'blob:') {
|
||
|
if (lastEventId !== '') {
|
||
|
requestURL += (url.indexOf('?') === -1 ? '?' : '&') + 'lastEventId=' + encodeURIComponent(lastEventId);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var requestHeaders = {};
|
||
|
requestHeaders['Accept'] = 'text/event-stream';
|
||
|
|
||
|
if (headers != undefined) {
|
||
|
for (var name in headers) {
|
||
|
if (Object.prototype.hasOwnProperty.call(headers, name)) {
|
||
|
requestHeaders[name] = headers[name];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
transport.open(xhr, onStart, onProgress, onFinish, requestURL, withCredentials, requestHeaders);
|
||
|
} catch (error) {
|
||
|
close();
|
||
|
throw error;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
es.url = url;
|
||
|
es.readyState = CONNECTING;
|
||
|
es.withCredentials = withCredentials;
|
||
|
es._close = close;
|
||
|
onTimeout();
|
||
|
}
|
||
|
|
||
|
EventSourcePolyfill.prototype = Object.create(EventTarget.prototype);
|
||
|
EventSourcePolyfill.prototype.CONNECTING = CONNECTING;
|
||
|
EventSourcePolyfill.prototype.OPEN = OPEN;
|
||
|
EventSourcePolyfill.prototype.CLOSED = CLOSED;
|
||
|
|
||
|
EventSourcePolyfill.prototype.close = function () {
|
||
|
this._close();
|
||
|
};
|
||
|
|
||
|
EventSourcePolyfill.CONNECTING = CONNECTING;
|
||
|
EventSourcePolyfill.OPEN = OPEN;
|
||
|
EventSourcePolyfill.CLOSED = CLOSED;
|
||
|
EventSourcePolyfill.prototype.withCredentials = undefined;
|
||
|
var _default = EventSourcePolyfill;
|
||
|
exports.default = _default;
|
||
|
|
||
|
var _c, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11;
|
||
|
|
||
|
$RefreshReg$(_c, "TextDecoderPolyfill");
|
||
|
$RefreshReg$(_c2, "XHRWrapper");
|
||
|
$RefreshReg$(_c3, "HeadersPolyfill");
|
||
|
$RefreshReg$(_c4, "XHRTransport");
|
||
|
$RefreshReg$(_c5, "HeadersWrapper");
|
||
|
$RefreshReg$(_c6, "FetchTransport");
|
||
|
$RefreshReg$(_c7, "EventTarget");
|
||
|
$RefreshReg$(_c8, "Event");
|
||
|
$RefreshReg$(_c9, "MessageEvent");
|
||
|
$RefreshReg$(_c10, "ConnectionEvent");
|
||
|
$RefreshReg$(_c11, "EventSourcePolyfill");
|
||
|
|
||
|
;
|
||
|
var _a, _b;
|
||
|
// Legacy CSS implementations will `eval` browser code in a Node.js context
|
||
|
// to extract CSS. For backwards compatibility, we need to check we're in a
|
||
|
// browser context before continuing.
|
||
|
if (typeof self !== 'undefined' &&
|
||
|
// AMP / No-JS mode does not inject these helpers:
|
||
|
'$RefreshHelpers$' in self) {
|
||
|
var currentExports = module.__proto__.exports;
|
||
|
var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;
|
||
|
// This cannot happen in MainTemplate because the exports mismatch between
|
||
|
// templating and execution.
|
||
|
self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);
|
||
|
// A module can be accepted automatically based on its exports, e.g. when
|
||
|
// it is a Refresh Boundary.
|
||
|
if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {
|
||
|
// Save the previous exports on update so we can compare the boundary
|
||
|
// signatures.
|
||
|
module.hot.dispose(function (data) {
|
||
|
data.prevExports = currentExports;
|
||
|
});
|
||
|
// Unconditionally accept an update to this module, we'll check if it's
|
||
|
// still a Refresh Boundary later.
|
||
|
module.hot.accept();
|
||
|
// This field is set when the previous version of this module was a
|
||
|
// Refresh Boundary, letting us know we need to check for invalidation or
|
||
|
// enqueue an update.
|
||
|
if (prevExports !== null) {
|
||
|
// A boundary can become ineligible if its exports are incompatible
|
||
|
// with the previous exports.
|
||
|
//
|
||
|
// For example, if you add/remove/change exports, we'll want to
|
||
|
// re-execute the importing modules, and force those components to
|
||
|
// re-render. Similarly, if you convert a class component to a
|
||
|
// function, we want to invalidate the boundary.
|
||
|
if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
else {
|
||
|
self.$RefreshHelpers$.scheduleUpdate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// Since we just executed the code for the module, it's possible that the
|
||
|
// new exports made it ineligible for being a boundary.
|
||
|
// We only care about the case when we were _previously_ a boundary,
|
||
|
// because we already accepted this update (accidental side effect).
|
||
|
var isNoLongerABoundary = prevExports !== null;
|
||
|
if (isNoLongerABoundary) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/dist/client/dev/fouc.js":
|
||
|
/*!***************************************************!*\
|
||
|
!*** ./node_modules/next/dist/client/dev/fouc.js ***!
|
||
|
\***************************************************/
|
||
|
/***/ (function(module, exports, __webpack_require__) {
|
||
|
|
||
|
"use strict";
|
||
|
/* module decorator */ module = __webpack_require__.nmd(module);
|
||
|
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.displayContent = displayContent; // This function is used to remove Next.js' no-FOUC styles workaround for using
|
||
|
// `style-loader` in development. It must be called before hydration, or else
|
||
|
// rendering won't have the correct computed values in effects.
|
||
|
|
||
|
function displayContent(callback) {
|
||
|
;
|
||
|
(window.requestAnimationFrame || setTimeout)(function () {
|
||
|
for (var x = document.querySelectorAll('[data-next-hide-fouc]'), i = x.length; i--;) {
|
||
|
x[i].parentNode.removeChild(x[i]);
|
||
|
}
|
||
|
|
||
|
if (callback) {
|
||
|
callback();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
;
|
||
|
var _a, _b;
|
||
|
// Legacy CSS implementations will `eval` browser code in a Node.js context
|
||
|
// to extract CSS. For backwards compatibility, we need to check we're in a
|
||
|
// browser context before continuing.
|
||
|
if (typeof self !== 'undefined' &&
|
||
|
// AMP / No-JS mode does not inject these helpers:
|
||
|
'$RefreshHelpers$' in self) {
|
||
|
var currentExports = module.__proto__.exports;
|
||
|
var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;
|
||
|
// This cannot happen in MainTemplate because the exports mismatch between
|
||
|
// templating and execution.
|
||
|
self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);
|
||
|
// A module can be accepted automatically based on its exports, e.g. when
|
||
|
// it is a Refresh Boundary.
|
||
|
if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {
|
||
|
// Save the previous exports on update so we can compare the boundary
|
||
|
// signatures.
|
||
|
module.hot.dispose(function (data) {
|
||
|
data.prevExports = currentExports;
|
||
|
});
|
||
|
// Unconditionally accept an update to this module, we'll check if it's
|
||
|
// still a Refresh Boundary later.
|
||
|
module.hot.accept();
|
||
|
// This field is set when the previous version of this module was a
|
||
|
// Refresh Boundary, letting us know we need to check for invalidation or
|
||
|
// enqueue an update.
|
||
|
if (prevExports !== null) {
|
||
|
// A boundary can become ineligible if its exports are incompatible
|
||
|
// with the previous exports.
|
||
|
//
|
||
|
// For example, if you add/remove/change exports, we'll want to
|
||
|
// re-execute the importing modules, and force those components to
|
||
|
// re-render. Similarly, if you convert a class component to a
|
||
|
// function, we want to invalidate the boundary.
|
||
|
if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
else {
|
||
|
self.$RefreshHelpers$.scheduleUpdate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// Since we just executed the code for the module, it's possible that the
|
||
|
// new exports made it ineligible for being a boundary.
|
||
|
// We only care about the case when we were _previously_ a boundary,
|
||
|
// because we already accepted this update (accidental side effect).
|
||
|
var isNoLongerABoundary = prevExports !== null;
|
||
|
if (isNoLongerABoundary) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/dist/client/dev/on-demand-entries-utils.js":
|
||
|
/*!**********************************************************************!*\
|
||
|
!*** ./node_modules/next/dist/client/dev/on-demand-entries-utils.js ***!
|
||
|
\**********************************************************************/
|
||
|
/***/ (function(module, exports, __webpack_require__) {
|
||
|
|
||
|
"use strict";
|
||
|
/* module decorator */ module = __webpack_require__.nmd(module);
|
||
|
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.closePing = closePing;
|
||
|
exports.setupPing = setupPing;
|
||
|
exports.currentPage = void 0;
|
||
|
|
||
|
var _eventsource = __webpack_require__(/*! ./error-overlay/eventsource */ "./node_modules/next/dist/client/dev/error-overlay/eventsource.js");
|
||
|
/* global location */
|
||
|
|
||
|
|
||
|
var evtSource;
|
||
|
var currentPage;
|
||
|
exports.currentPage = currentPage;
|
||
|
|
||
|
function closePing() {
|
||
|
if (evtSource) evtSource.close();
|
||
|
evtSource = null;
|
||
|
}
|
||
|
|
||
|
function setupPing(assetPrefix, pathnameFn, retry) {
|
||
|
var pathname = pathnameFn(); // Make sure to only create new EventSource request if page has changed
|
||
|
|
||
|
if (pathname === currentPage && !retry) return;
|
||
|
exports.currentPage = currentPage = pathname; // close current EventSource connection
|
||
|
|
||
|
closePing();
|
||
|
evtSource = (0, _eventsource.getEventSourceWrapper)({
|
||
|
path: "".concat(assetPrefix, "/_next/webpack-hmr?page=").concat(currentPage),
|
||
|
timeout: 5000
|
||
|
});
|
||
|
evtSource.addMessageListener(function (event) {
|
||
|
if (event.data.indexOf('{') === -1) return;
|
||
|
|
||
|
try {
|
||
|
var payload = JSON.parse(event.data);
|
||
|
|
||
|
if (payload.invalid) {
|
||
|
// Payload can be invalid even if the page does not exist.
|
||
|
// So, we need to make sure it exists before reloading.
|
||
|
fetch(location.href, {
|
||
|
credentials: 'same-origin'
|
||
|
}).then(function (pageRes) {
|
||
|
if (pageRes.status === 200) {
|
||
|
location.reload();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
} catch (err) {
|
||
|
console.error('on-demand-entries failed to parse response', err);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
;
|
||
|
var _a, _b;
|
||
|
// Legacy CSS implementations will `eval` browser code in a Node.js context
|
||
|
// to extract CSS. For backwards compatibility, we need to check we're in a
|
||
|
// browser context before continuing.
|
||
|
if (typeof self !== 'undefined' &&
|
||
|
// AMP / No-JS mode does not inject these helpers:
|
||
|
'$RefreshHelpers$' in self) {
|
||
|
var currentExports = module.__proto__.exports;
|
||
|
var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;
|
||
|
// This cannot happen in MainTemplate because the exports mismatch between
|
||
|
// templating and execution.
|
||
|
self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);
|
||
|
// A module can be accepted automatically based on its exports, e.g. when
|
||
|
// it is a Refresh Boundary.
|
||
|
if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {
|
||
|
// Save the previous exports on update so we can compare the boundary
|
||
|
// signatures.
|
||
|
module.hot.dispose(function (data) {
|
||
|
data.prevExports = currentExports;
|
||
|
});
|
||
|
// Unconditionally accept an update to this module, we'll check if it's
|
||
|
// still a Refresh Boundary later.
|
||
|
module.hot.accept();
|
||
|
// This field is set when the previous version of this module was a
|
||
|
// Refresh Boundary, letting us know we need to check for invalidation or
|
||
|
// enqueue an update.
|
||
|
if (prevExports !== null) {
|
||
|
// A boundary can become ineligible if its exports are incompatible
|
||
|
// with the previous exports.
|
||
|
//
|
||
|
// For example, if you add/remove/change exports, we'll want to
|
||
|
// re-execute the importing modules, and force those components to
|
||
|
// re-render. Similarly, if you convert a class component to a
|
||
|
// function, we want to invalidate the boundary.
|
||
|
if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
else {
|
||
|
self.$RefreshHelpers$.scheduleUpdate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// Since we just executed the code for the module, it's possible that the
|
||
|
// new exports made it ineligible for being a boundary.
|
||
|
// We only care about the case when we were _previously_ a boundary,
|
||
|
// because we already accepted this update (accidental side effect).
|
||
|
var isNoLongerABoundary = prevExports !== null;
|
||
|
if (isNoLongerABoundary) {
|
||
|
module.hot.invalidate();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/node_modules/@babel/runtime/helpers/asyncToGenerator.js":
|
||
|
/*!***********************************************************************************!*\
|
||
|
!*** ./node_modules/next/node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
|
||
|
\***********************************************************************************/
|
||
|
/***/ (function(module) {
|
||
|
|
||
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
||
|
try {
|
||
|
var info = gen[key](arg);
|
||
|
var value = info.value;
|
||
|
} catch (error) {
|
||
|
reject(error);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (info.done) {
|
||
|
resolve(value);
|
||
|
} else {
|
||
|
Promise.resolve(value).then(_next, _throw);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function _asyncToGenerator(fn) {
|
||
|
return function () {
|
||
|
var self = this,
|
||
|
args = arguments;
|
||
|
return new Promise(function (resolve, reject) {
|
||
|
var gen = fn.apply(self, args);
|
||
|
|
||
|
function _next(value) {
|
||
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
||
|
}
|
||
|
|
||
|
function _throw(err) {
|
||
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
||
|
}
|
||
|
|
||
|
_next(undefined);
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = _asyncToGenerator;
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/node_modules/@babel/runtime/helpers/interopRequireDefault.js":
|
||
|
/*!****************************************************************************************!*\
|
||
|
!*** ./node_modules/next/node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
|
||
|
\****************************************************************************************/
|
||
|
/***/ (function(module) {
|
||
|
|
||
|
function _interopRequireDefault(obj) {
|
||
|
return obj && obj.__esModule ? obj : {
|
||
|
"default": obj
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = _interopRequireDefault;
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/next/node_modules/@babel/runtime/regenerator/index.js":
|
||
|
/*!****************************************************************************!*\
|
||
|
!*** ./node_modules/next/node_modules/@babel/runtime/regenerator/index.js ***!
|
||
|
\****************************************************************************/
|
||
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
||
|
|
||
|
module.exports = __webpack_require__(/*! regenerator-runtime */ "./node_modules/regenerator-runtime/runtime.js");
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ "./node_modules/regenerator-runtime/runtime.js":
|
||
|
/*!*****************************************************!*\
|
||
|
!*** ./node_modules/regenerator-runtime/runtime.js ***!
|
||
|
\*****************************************************/
|
||
|
/***/ (function(module) {
|
||
|
|
||
|
/**
|
||
|
* Copyright (c) 2014-present, Facebook, Inc.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*/
|
||
|
|
||
|
var runtime = (function (exports) {
|
||
|
"use strict";
|
||
|
|
||
|
var Op = Object.prototype;
|
||
|
var hasOwn = Op.hasOwnProperty;
|
||
|
var undefined; // More compressible than void 0.
|
||
|
var $Symbol = typeof Symbol === "function" ? Symbol : {};
|
||
|
var iteratorSymbol = $Symbol.iterator || "@@iterator";
|
||
|
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
|
||
|
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
|
||
|
|
||
|
function define(obj, key, value) {
|
||
|
Object.defineProperty(obj, key, {
|
||
|
value: value,
|
||
|
enumerable: true,
|
||
|
configurable: true,
|
||
|
writable: true
|
||
|
});
|
||
|
return obj[key];
|
||
|
}
|
||
|
try {
|
||
|
// IE 8 has a broken Object.defineProperty that only works on DOM objects.
|
||
|
define({}, "");
|
||
|
} catch (err) {
|
||
|
define = function(obj, key, value) {
|
||
|
return obj[key] = value;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function wrap(innerFn, outerFn, self, tryLocsList) {
|
||
|
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
|
||
|
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
|
||
|
var generator = Object.create(protoGenerator.prototype);
|
||
|
var context = new Context(tryLocsList || []);
|
||
|
|
||
|
// The ._invoke method unifies the implementations of the .next,
|
||
|
// .throw, and .return methods.
|
||
|
generator._invoke = makeInvokeMethod(innerFn, self, context);
|
||
|
|
||
|
return generator;
|
||
|
}
|
||
|
exports.wrap = wrap;
|
||
|
|
||
|
// Try/catch helper to minimize deoptimizations. Returns a completion
|
||
|
// record like context.tryEntries[i].completion. This interface could
|
||
|
// have been (and was previously) designed to take a closure to be
|
||
|
// invoked without arguments, but in all the cases we care about we
|
||
|
// already have an existing method we want to call, so there's no need
|
||
|
// to create a new function object. We can even get away with assuming
|
||
|
// the method takes exactly one argument, since that happens to be true
|
||
|
// in every case, so we don't have to touch the arguments object. The
|
||
|
// only additional allocation required is the completion record, which
|
||
|
// has a stable shape and so hopefully should be cheap to allocate.
|
||
|
function tryCatch(fn, obj, arg) {
|
||
|
try {
|
||
|
return { type: "normal", arg: fn.call(obj, arg) };
|
||
|
} catch (err) {
|
||
|
return { type: "throw", arg: err };
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var GenStateSuspendedStart = "suspendedStart";
|
||
|
var GenStateSuspendedYield = "suspendedYield";
|
||
|
var GenStateExecuting = "executing";
|
||
|
var GenStateCompleted = "completed";
|
||
|
|
||
|
// Returning this object from the innerFn has the same effect as
|
||
|
// breaking out of the dispatch switch statement.
|
||
|
var ContinueSentinel = {};
|
||
|
|
||
|
// Dummy constructor functions that we use as the .constructor and
|
||
|
// .constructor.prototype properties for functions that return Generator
|
||
|
// objects. For full spec compliance, you may wish to configure your
|
||
|
// minifier not to mangle the names of these two functions.
|
||
|
function Generator() {}
|
||
|
function GeneratorFunction() {}
|
||
|
function GeneratorFunctionPrototype() {}
|
||
|
|
||
|
// This is a polyfill for %IteratorPrototype% for environments that
|
||
|
// don't natively support it.
|
||
|
var IteratorPrototype = {};
|
||
|
IteratorPrototype[iteratorSymbol] = function () {
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
var getProto = Object.getPrototypeOf;
|
||
|
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
|
||
|
if (NativeIteratorPrototype &&
|
||
|
NativeIteratorPrototype !== Op &&
|
||
|
hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
|
||
|
// This environment has a native %IteratorPrototype%; use it instead
|
||
|
// of the polyfill.
|
||
|
IteratorPrototype = NativeIteratorPrototype;
|
||
|
}
|
||
|
|
||
|
var Gp = GeneratorFunctionPrototype.prototype =
|
||
|
Generator.prototype = Object.create(IteratorPrototype);
|
||
|
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
|
||
|
GeneratorFunctionPrototype.constructor = GeneratorFunction;
|
||
|
GeneratorFunction.displayName = define(
|
||
|
GeneratorFunctionPrototype,
|
||
|
toStringTagSymbol,
|
||
|
"GeneratorFunction"
|
||
|
);
|
||
|
|
||
|
// Helper for defining the .next, .throw, and .return methods of the
|
||
|
// Iterator interface in terms of a single ._invoke method.
|
||
|
function defineIteratorMethods(prototype) {
|
||
|
["next", "throw", "return"].forEach(function(method) {
|
||
|
define(prototype, method, function(arg) {
|
||
|
return this._invoke(method, arg);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
exports.isGeneratorFunction = function(genFun) {
|
||
|
var ctor = typeof genFun === "function" && genFun.constructor;
|
||
|
return ctor
|
||
|
? ctor === GeneratorFunction ||
|
||
|
// For the native GeneratorFunction constructor, the best we can
|
||
|
// do is to check its .name property.
|
||
|
(ctor.displayName || ctor.name) === "GeneratorFunction"
|
||
|
: false;
|
||
|
};
|
||
|
|
||
|
exports.mark = function(genFun) {
|
||
|
if (Object.setPrototypeOf) {
|
||
|
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
|
||
|
} else {
|
||
|
genFun.__proto__ = GeneratorFunctionPrototype;
|
||
|
define(genFun, toStringTagSymbol, "GeneratorFunction");
|
||
|
}
|
||
|
genFun.prototype = Object.create(Gp);
|
||
|
return genFun;
|
||
|
};
|
||
|
|
||
|
// Within the body of any async function, `await x` is transformed to
|
||
|
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
|
||
|
// `hasOwn.call(value, "__await")` to determine if the yielded value is
|
||
|
// meant to be awaited.
|
||
|
exports.awrap = function(arg) {
|
||
|
return { __await: arg };
|
||
|
};
|
||
|
|
||
|
function AsyncIterator(generator, PromiseImpl) {
|
||
|
function invoke(method, arg, resolve, reject) {
|
||
|
var record = tryCatch(generator[method], generator, arg);
|
||
|
if (record.type === "throw") {
|
||
|
reject(record.arg);
|
||
|
} else {
|
||
|
var result = record.arg;
|
||
|
var value = result.value;
|
||
|
if (value &&
|
||
|
typeof value === "object" &&
|
||
|
hasOwn.call(value, "__await")) {
|
||
|
return PromiseImpl.resolve(value.__await).then(function(value) {
|
||
|
invoke("next", value, resolve, reject);
|
||
|
}, function(err) {
|
||
|
invoke("throw", err, resolve, reject);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return PromiseImpl.resolve(value).then(function(unwrapped) {
|
||
|
// When a yielded Promise is resolved, its final value becomes
|
||
|
// the .value of the Promise<{value,done}> result for the
|
||
|
// current iteration.
|
||
|
result.value = unwrapped;
|
||
|
resolve(result);
|
||
|
}, function(error) {
|
||
|
// If a rejected Promise was yielded, throw the rejection back
|
||
|
// into the async generator function so it can be handled there.
|
||
|
return invoke("throw", error, resolve, reject);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var previousPromise;
|
||
|
|
||
|
function enqueue(method, arg) {
|
||
|
function callInvokeWithMethodAndArg() {
|
||
|
return new PromiseImpl(function(resolve, reject) {
|
||
|
invoke(method, arg, resolve, reject);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return previousPromise =
|
||
|
// If enqueue has been called before, then we want to wait until
|
||
|
// all previous Promises have been resolved before calling invoke,
|
||
|
// so that results are always delivered in the correct order. If
|
||
|
// enqueue has not been called before, then it is important to
|
||
|
// call invoke immediately, without waiting on a callback to fire,
|
||
|
// so that the async generator function has the opportunity to do
|
||
|
// any necessary setup in a predictable way. This predictability
|
||
|
// is why the Promise constructor synchronously invokes its
|
||
|
// executor callback, and why async functions synchronously
|
||
|
// execute code before the first await. Since we implement simple
|
||
|
// async functions in terms of async generators, it is especially
|
||
|
// important to get this right, even though it requires care.
|
||
|
previousPromise ? previousPromise.then(
|
||
|
callInvokeWithMethodAndArg,
|
||
|
// Avoid propagating failures to Promises returned by later
|
||
|
// invocations of the iterator.
|
||
|
callInvokeWithMethodAndArg
|
||
|
) : callInvokeWithMethodAndArg();
|
||
|
}
|
||
|
|
||
|
// Define the unified helper method that is used to implement .next,
|
||
|
// .throw, and .return (see defineIteratorMethods).
|
||
|
this._invoke = enqueue;
|
||
|
}
|
||
|
|
||
|
defineIteratorMethods(AsyncIterator.prototype);
|
||
|
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
|
||
|
return this;
|
||
|
};
|
||
|
exports.AsyncIterator = AsyncIterator;
|
||
|
|
||
|
// Note that simple async functions are implemented on top of
|
||
|
// AsyncIterator objects; they just return a Promise for the value of
|
||
|
// the final result produced by the iterator.
|
||
|
exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
|
||
|
if (PromiseImpl === void 0) PromiseImpl = Promise;
|
||
|
|
||
|
var iter = new AsyncIterator(
|
||
|
wrap(innerFn, outerFn, self, tryLocsList),
|
||
|
PromiseImpl
|
||
|
);
|
||
|
|
||
|
return exports.isGeneratorFunction(outerFn)
|
||
|
? iter // If outerFn is a generator, return the full iterator.
|
||
|
: iter.next().then(function(result) {
|
||
|
return result.done ? result.value : iter.next();
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function makeInvokeMethod(innerFn, self, context) {
|
||
|
var state = GenStateSuspendedStart;
|
||
|
|
||
|
return function invoke(method, arg) {
|
||
|
if (state === GenStateExecuting) {
|
||
|
throw new Error("Generator is already running");
|
||
|
}
|
||
|
|
||
|
if (state === GenStateCompleted) {
|
||
|
if (method === "throw") {
|
||
|
throw arg;
|
||
|
}
|
||
|
|
||
|
// Be forgiving, per 25.3.3.3.3 of the spec:
|
||
|
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
|
||
|
return doneResult();
|
||
|
}
|
||
|
|
||
|
context.method = method;
|
||
|
context.arg = arg;
|
||
|
|
||
|
while (true) {
|
||
|
var delegate = context.delegate;
|
||
|
if (delegate) {
|
||
|
var delegateResult = maybeInvokeDelegate(delegate, context);
|
||
|
if (delegateResult) {
|
||
|
if (delegateResult === ContinueSentinel) continue;
|
||
|
return delegateResult;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (context.method === "next") {
|
||
|
// Setting context._sent for legacy support of Babel's
|
||
|
// function.sent implementation.
|
||
|
context.sent = context._sent = context.arg;
|
||
|
|
||
|
} else if (context.method === "throw") {
|
||
|
if (state === GenStateSuspendedStart) {
|
||
|
state = GenStateCompleted;
|
||
|
throw context.arg;
|
||
|
}
|
||
|
|
||
|
context.dispatchException(context.arg);
|
||
|
|
||
|
} else if (context.method === "return") {
|
||
|
context.abrupt("return", context.arg);
|
||
|
}
|
||
|
|
||
|
state = GenStateExecuting;
|
||
|
|
||
|
var record = tryCatch(innerFn, self, context);
|
||
|
if (record.type === "normal") {
|
||
|
// If an exception is thrown from innerFn, we leave state ===
|
||
|
// GenStateExecuting and loop back for another invocation.
|
||
|
state = context.done
|
||
|
? GenStateCompleted
|
||
|
: GenStateSuspendedYield;
|
||
|
|
||
|
if (record.arg === ContinueSentinel) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
value: record.arg,
|
||
|
done: context.done
|
||
|
};
|
||
|
|
||
|
} else if (record.type === "throw") {
|
||
|
state = GenStateCompleted;
|
||
|
// Dispatch the exception by looping back around to the
|
||
|
// context.dispatchException(context.arg) call above.
|
||
|
context.method = "throw";
|
||
|
context.arg = record.arg;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// Call delegate.iterator[context.method](context.arg) and handle the
|
||
|
// result, either by returning a { value, done } result from the
|
||
|
// delegate iterator, or by modifying context.method and context.arg,
|
||
|
// setting context.delegate to null, and returning the ContinueSentinel.
|
||
|
function maybeInvokeDelegate(delegate, context) {
|
||
|
var method = delegate.iterator[context.method];
|
||
|
if (method === undefined) {
|
||
|
// A .throw or .return when the delegate iterator has no .throw
|
||
|
// method always terminates the yield* loop.
|
||
|
context.delegate = null;
|
||
|
|
||
|
if (context.method === "throw") {
|
||
|
// Note: ["return"] must be used for ES3 parsing compatibility.
|
||
|
if (delegate.iterator["return"]) {
|
||
|
// If the delegate iterator has a return method, give it a
|
||
|
// chance to clean up.
|
||
|
context.method = "return";
|
||
|
context.arg = undefined;
|
||
|
maybeInvokeDelegate(delegate, context);
|
||
|
|
||
|
if (context.method === "throw") {
|
||
|
// If maybeInvokeDelegate(context) changed context.method from
|
||
|
// "return" to "throw", let that override the TypeError below.
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
context.method = "throw";
|
||
|
context.arg = new TypeError(
|
||
|
"The iterator does not provide a 'throw' method");
|
||
|
}
|
||
|
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
|
||
|
var record = tryCatch(method, delegate.iterator, context.arg);
|
||
|
|
||
|
if (record.type === "throw") {
|
||
|
context.method = "throw";
|
||
|
context.arg = record.arg;
|
||
|
context.delegate = null;
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
|
||
|
var info = record.arg;
|
||
|
|
||
|
if (! info) {
|
||
|
context.method = "throw";
|
||
|
context.arg = new TypeError("iterator result is not an object");
|
||
|
context.delegate = null;
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
|
||
|
if (info.done) {
|
||
|
// Assign the result of the finished delegate to the temporary
|
||
|
// variable specified by delegate.resultName (see delegateYield).
|
||
|
context[delegate.resultName] = info.value;
|
||
|
|
||
|
// Resume execution at the desired location (see delegateYield).
|
||
|
context.next = delegate.nextLoc;
|
||
|
|
||
|
// If context.method was "throw" but the delegate handled the
|
||
|
// exception, let the outer generator proceed normally. If
|
||
|
// context.method was "next", forget context.arg since it has been
|
||
|
// "consumed" by the delegate iterator. If context.method was
|
||
|
// "return", allow the original .return call to continue in the
|
||
|
// outer generator.
|
||
|
if (context.method !== "return") {
|
||
|
context.method = "next";
|
||
|
context.arg = undefined;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
// Re-yield the result returned by the delegate method.
|
||
|
return info;
|
||
|
}
|
||
|
|
||
|
// The delegate iterator is finished, so forget it and continue with
|
||
|
// the outer generator.
|
||
|
context.delegate = null;
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
|
||
|
// Define Generator.prototype.{next,throw,return} in terms of the
|
||
|
// unified ._invoke helper method.
|
||
|
defineIteratorMethods(Gp);
|
||
|
|
||
|
define(Gp, toStringTagSymbol, "Generator");
|
||
|
|
||
|
// A Generator should always return itself as the iterator object when the
|
||
|
// @@iterator function is called on it. Some browsers' implementations of the
|
||
|
// iterator prototype chain incorrectly implement this, causing the Generator
|
||
|
// object to not be returned from this call. This ensures that doesn't happen.
|
||
|
// See https://github.com/facebook/regenerator/issues/274 for more details.
|
||
|
Gp[iteratorSymbol] = function() {
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
Gp.toString = function() {
|
||
|
return "[object Generator]";
|
||
|
};
|
||
|
|
||
|
function pushTryEntry(locs) {
|
||
|
var entry = { tryLoc: locs[0] };
|
||
|
|
||
|
if (1 in locs) {
|
||
|
entry.catchLoc = locs[1];
|
||
|
}
|
||
|
|
||
|
if (2 in locs) {
|
||
|
entry.finallyLoc = locs[2];
|
||
|
entry.afterLoc = locs[3];
|
||
|
}
|
||
|
|
||
|
this.tryEntries.push(entry);
|
||
|
}
|
||
|
|
||
|
function resetTryEntry(entry) {
|
||
|
var record = entry.completion || {};
|
||
|
record.type = "normal";
|
||
|
delete record.arg;
|
||
|
entry.completion = record;
|
||
|
}
|
||
|
|
||
|
function Context(tryLocsList) {
|
||
|
// The root entry object (effectively a try statement without a catch
|
||
|
// or a finally block) gives us a place to store values thrown from
|
||
|
// locations where there is no enclosing try statement.
|
||
|
this.tryEntries = [{ tryLoc: "root" }];
|
||
|
tryLocsList.forEach(pushTryEntry, this);
|
||
|
this.reset(true);
|
||
|
}
|
||
|
|
||
|
exports.keys = function(object) {
|
||
|
var keys = [];
|
||
|
for (var key in object) {
|
||
|
keys.push(key);
|
||
|
}
|
||
|
keys.reverse();
|
||
|
|
||
|
// Rather than returning an object with a next method, we keep
|
||
|
// things simple and return the next function itself.
|
||
|
return function next() {
|
||
|
while (keys.length) {
|
||
|
var key = keys.pop();
|
||
|
if (key in object) {
|
||
|
next.value = key;
|
||
|
next.done = false;
|
||
|
return next;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// To avoid creating an additional object, we just hang the .value
|
||
|
// and .done properties off the next function object itself. This
|
||
|
// also ensures that the minifier will not anonymize the function.
|
||
|
next.done = true;
|
||
|
return next;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
function values(iterable) {
|
||
|
if (iterable) {
|
||
|
var iteratorMethod = iterable[iteratorSymbol];
|
||
|
if (iteratorMethod) {
|
||
|
return iteratorMethod.call(iterable);
|
||
|
}
|
||
|
|
||
|
if (typeof iterable.next === "function") {
|
||
|
return iterable;
|
||
|
}
|
||
|
|
||
|
if (!isNaN(iterable.length)) {
|
||
|
var i = -1, next = function next() {
|
||
|
while (++i < iterable.length) {
|
||
|
if (hasOwn.call(iterable, i)) {
|
||
|
next.value = iterable[i];
|
||
|
next.done = false;
|
||
|
return next;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
next.value = undefined;
|
||
|
next.done = true;
|
||
|
|
||
|
return next;
|
||
|
};
|
||
|
|
||
|
return next.next = next;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Return an iterator with no values.
|
||
|
return { next: doneResult };
|
||
|
}
|
||
|
exports.values = values;
|
||
|
|
||
|
function doneResult() {
|
||
|
return { value: undefined, done: true };
|
||
|
}
|
||
|
|
||
|
Context.prototype = {
|
||
|
constructor: Context,
|
||
|
|
||
|
reset: function(skipTempReset) {
|
||
|
this.prev = 0;
|
||
|
this.next = 0;
|
||
|
// Resetting context._sent for legacy support of Babel's
|
||
|
// function.sent implementation.
|
||
|
this.sent = this._sent = undefined;
|
||
|
this.done = false;
|
||
|
this.delegate = null;
|
||
|
|
||
|
this.method = "next";
|
||
|
this.arg = undefined;
|
||
|
|
||
|
this.tryEntries.forEach(resetTryEntry);
|
||
|
|
||
|
if (!skipTempReset) {
|
||
|
for (var name in this) {
|
||
|
// Not sure about the optimal order of these conditions:
|
||
|
if (name.charAt(0) === "t" &&
|
||
|
hasOwn.call(this, name) &&
|
||
|
!isNaN(+name.slice(1))) {
|
||
|
this[name] = undefined;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
stop: function() {
|
||
|
this.done = true;
|
||
|
|
||
|
var rootEntry = this.tryEntries[0];
|
||
|
var rootRecord = rootEntry.completion;
|
||
|
if (rootRecord.type === "throw") {
|
||
|
throw rootRecord.arg;
|
||
|
}
|
||
|
|
||
|
return this.rval;
|
||
|
},
|
||
|
|
||
|
dispatchException: function(exception) {
|
||
|
if (this.done) {
|
||
|
throw exception;
|
||
|
}
|
||
|
|
||
|
var context = this;
|
||
|
function handle(loc, caught) {
|
||
|
record.type = "throw";
|
||
|
record.arg = exception;
|
||
|
context.next = loc;
|
||
|
|
||
|
if (caught) {
|
||
|
// If the dispatched exception was caught by a catch block,
|
||
|
// then let that catch block handle the exception normally.
|
||
|
context.method = "next";
|
||
|
context.arg = undefined;
|
||
|
}
|
||
|
|
||
|
return !! caught;
|
||
|
}
|
||
|
|
||
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||
|
var entry = this.tryEntries[i];
|
||
|
var record = entry.completion;
|
||
|
|
||
|
if (entry.tryLoc === "root") {
|
||
|
// Exception thrown outside of any try block that could handle
|
||
|
// it, so set the completion value of the entire function to
|
||
|
// throw the exception.
|
||
|
return handle("end");
|
||
|
}
|
||
|
|
||
|
if (entry.tryLoc <= this.prev) {
|
||
|
var hasCatch = hasOwn.call(entry, "catchLoc");
|
||
|
var hasFinally = hasOwn.call(entry, "finallyLoc");
|
||
|
|
||
|
if (hasCatch && hasFinally) {
|
||
|
if (this.prev < entry.catchLoc) {
|
||
|
return handle(entry.catchLoc, true);
|
||
|
} else if (this.prev < entry.finallyLoc) {
|
||
|
return handle(entry.finallyLoc);
|
||
|
}
|
||
|
|
||
|
} else if (hasCatch) {
|
||
|
if (this.prev < entry.catchLoc) {
|
||
|
return handle(entry.catchLoc, true);
|
||
|
}
|
||
|
|
||
|
} else if (hasFinally) {
|
||
|
if (this.prev < entry.finallyLoc) {
|
||
|
return handle(entry.finallyLoc);
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
throw new Error("try statement without catch or finally");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
abrupt: function(type, arg) {
|
||
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||
|
var entry = this.tryEntries[i];
|
||
|
if (entry.tryLoc <= this.prev &&
|
||
|
hasOwn.call(entry, "finallyLoc") &&
|
||
|
this.prev < entry.finallyLoc) {
|
||
|
var finallyEntry = entry;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (finallyEntry &&
|
||
|
(type === "break" ||
|
||
|
type === "continue") &&
|
||
|
finallyEntry.tryLoc <= arg &&
|
||
|
arg <= finallyEntry.finallyLoc) {
|
||
|
// Ignore the finally entry if control is not jumping to a
|
||
|
// location outside the try/catch block.
|
||
|
finallyEntry = null;
|
||
|
}
|
||
|
|
||
|
var record = finallyEntry ? finallyEntry.completion : {};
|
||
|
record.type = type;
|
||
|
record.arg = arg;
|
||
|
|
||
|
if (finallyEntry) {
|
||
|
this.method = "next";
|
||
|
this.next = finallyEntry.finallyLoc;
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
|
||
|
return this.complete(record);
|
||
|
},
|
||
|
|
||
|
complete: function(record, afterLoc) {
|
||
|
if (record.type === "throw") {
|
||
|
throw record.arg;
|
||
|
}
|
||
|
|
||
|
if (record.type === "break" ||
|
||
|
record.type === "continue") {
|
||
|
this.next = record.arg;
|
||
|
} else if (record.type === "return") {
|
||
|
this.rval = this.arg = record.arg;
|
||
|
this.method = "return";
|
||
|
this.next = "end";
|
||
|
} else if (record.type === "normal" && afterLoc) {
|
||
|
this.next = afterLoc;
|
||
|
}
|
||
|
|
||
|
return ContinueSentinel;
|
||
|
},
|
||
|
|
||
|
finish: function(finallyLoc) {
|
||
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||
|
var entry = this.tryEntries[i];
|
||
|
if (entry.finallyLoc === finallyLoc) {
|
||
|
this.complete(entry.completion, entry.afterLoc);
|
||
|
resetTryEntry(entry);
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
"catch": function(tryLoc) {
|
||
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||
|
var entry = this.tryEntries[i];
|
||
|
if (entry.tryLoc === tryLoc) {
|
||
|
var record = entry.completion;
|
||
|
if (record.type === "throw") {
|
||
|
var thrown = record.arg;
|
||
|
resetTryEntry(entry);
|
||
|
}
|
||
|
return thrown;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// The context.catch method must only be called with a location
|
||
|
// argument that corresponds to a known catch block.
|
||
|
throw new Error("illegal catch attempt");
|
||
|
},
|
||
|
|
||
|
delegateYield: function(iterable, resultName, nextLoc) {
|
||
|
this.delegate = {
|
||
|
iterator: values(iterable),
|
||
|
resultName: resultName,
|
||
|
nextLoc: nextLoc
|
||
|
};
|
||
|
|
||
|
if (this.method === "next") {
|
||
|
// Deliberately forget the last sent value so that we don't
|
||
|
// accidentally pass it on to the delegate.
|
||
|
this.arg = undefined;
|
||
|
}
|
||
|
|
||
|
return ContinueSentinel;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// Regardless of whether this script is executing as a CommonJS module
|
||
|
// or not, return the runtime object so that we can declare the variable
|
||
|
// regeneratorRuntime in the outer scope, which allows this module to be
|
||
|
// injected easily by `bin/regenerator --include-runtime script.js`.
|
||
|
return exports;
|
||
|
|
||
|
}(
|
||
|
// If this script is executing as a CommonJS module, use module.exports
|
||
|
// as the regeneratorRuntime namespace. Otherwise create a new empty
|
||
|
// object. Either way, the resulting object will be used to initialize
|
||
|
// the regeneratorRuntime variable at the top of this file.
|
||
|
true ? module.exports : 0
|
||
|
));
|
||
|
|
||
|
try {
|
||
|
regeneratorRuntime = runtime;
|
||
|
} catch (accidentalStrictMode) {
|
||
|
// This module should not be running in strict mode, so the above
|
||
|
// assignment should always work unless something is misconfigured. Just
|
||
|
// in case runtime.js accidentally runs in strict mode, we can escape
|
||
|
// strict mode using a global Function call. This could conceivably fail
|
||
|
// if a Content Security Policy forbids using Function, but in that case
|
||
|
// the proper solution is to fix the accidental strict mode problem. If
|
||
|
// you've misconfigured your bundler to force strict mode and applied a
|
||
|
// CSP to forbid Function, and you're not willing to fix either of those
|
||
|
// problems, please detail your unique predicament in a GitHub issue.
|
||
|
Function("r", "regeneratorRuntime = r")(runtime);
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ })
|
||
|
|
||
|
},
|
||
|
/******/ function(__webpack_require__) { // webpackRuntimeModules
|
||
|
/******/ // runtime can't be in strict mode because a global variable is assign and maybe created.
|
||
|
/******/
|
||
|
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
||
|
/******/ var __webpack_exports__ = (__webpack_exec__("./node_modules/next/dist/client/dev/amp-dev.js"));
|
||
|
/******/ _N_E = __webpack_exports__;
|
||
|
/******/ }
|
||
|
]);
|
||
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2FtcC1kZXYuanMiLCJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9lcnJvci1vdmVybGF5L2V2ZW50c291cmNlLmpzIiwid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXZlbnQtc291cmNlLXBvbHlmaWxsLmpzIiwid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZm91Yy5qcyIsIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLXV0aWxzLmpzIiwid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiLCJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ldmVudFNvdXJjZVBvbHlmaWxsIiwiX2V2ZW50c291cmNlIiwiX29uRGVtYW5kRW50cmllc1V0aWxzIiwiX2ZvdWMiLCJ3aW5kb3ciLCJFdmVudFNvdXJjZSIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidGV4dENvbnRlbnQiLCJhc3NldFByZWZpeCIsInBhZ2UiLCJtb3N0UmVjZW50SGFzaCIsImN1ckhhc2giLCJfX3dlYnBhY2tfaGFzaF9fIiwiaG90VXBkYXRlUGF0aCIsImVuZHNXaXRoIiwiaXNVcGRhdGVBdmFpbGFibGUiLCJjYW5BcHBseVVwZGF0ZXMiLCJtb2R1bGUiLCJzdGF0dXMiLCJ0cnlBcHBseVVwZGF0ZXMiLCJmZXRjaCIsInJlcyIsImpzb24iLCJqc29uRGF0YSIsImN1clBhZ2UiLCJwYWdlVXBkYXRlZCIsIkFycmF5IiwiaXNBcnJheSIsImMiLCJPYmplY3QiLCJrZXlzIiwic29tZSIsIm1vZCIsImluZGV4T2YiLCJzdWJzdHIiLCJyZXBsYWNlIiwibG9jYXRpb24iLCJyZWxvYWQiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJldmVudCIsIm1lc3NhZ2UiLCJhY3Rpb24iLCJoYXNoIiwiZXgiLCJ3YXJuIiwic2V0dXBQaW5nIiwiZGlzcGxheUNvbnRlbnQiLCJleHBvcnRzIiwiZ2V0RXZlbnRTb3VyY2VXcmFwcGVyIiwiZXZlbnRDYWxsYmFja3MiLCJFdmVudFNvdXJjZVdyYXBwZXIiLCJvcHRpb25zIiwic291cmNlIiwibGFzdEFjdGl2aXR5IiwiRGF0ZSIsImxpc3RlbmVycyIsInRpbWVvdXQiLCJpbml0IiwidGltZXIiLCJzZXRJbnRlcnZhbCIsImhhbmRsZURpc2Nvbm5lY3QiLCJwYXRoIiwib25vcGVuIiwiaGFuZGxlT25saW5lIiwib25lcnJvciIsIm9ubWVzc2FnZSIsImhhbmRsZU1lc3NhZ2UiLCJsb2ciLCJpIiwibGVuZ3RoIiwiZm9yRWFjaCIsImNiIiwidW5maWx0ZXJlZCIsImNsZWFySW50ZXJ2YWwiLCJjbG9zZSIsInNldFRpbWVvdXQiLCJmbiIsInB1c2giLCJSZXNwb25zZSIsIlRleHREZWNvZGVyIiwiVGV4dEVuY29kZXIiLCJBYm9ydENvbnRyb2xsZXIiLCJ1bmRlZmluZWQiLCJzaWduYWwiLCJhYm9ydCIsIlRleHREZWNvZGVyUG9seWZpbGwiLCJiaXRzTmVlZGVkIiwiY29kZVBvaW50IiwicHJvdG90eXBlIiwiZGVjb2RlIiwib2N0ZXRzIiwidmFsaWQiLCJzaGlmdCIsIm9jdGV0c0NvdW50IiwiRXJyb3IiLCJSRVBMQUNFUiIsInN0cmluZyIsIm9jdGV0IiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwic3VwcG9ydHNTdHJlYW1PcHRpb24iLCJlbmNvZGUiLCJzdHJlYW0iLCJrIiwiWEhSV3JhcHBlciIsInhociIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInJlYWR5U3RhdGUiLCJzdGF0dXNUZXh0IiwicmVzcG9uc2VUZXh0Iiwib25wcm9ncmVzcyIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIl9jb250ZW50VHlwZSIsIl94aHIiLCJfc2VuZFRpbWVvdXQiLCJfYWJvcnQiLCJvcGVuIiwibWV0aG9kIiwidXJsIiwidGhhdCIsInN0YXRlIiwic2lsZW50IiwiY2xlYXJUaW1lb3V0Iiwib25sb2FkIiwib25hYm9ydCIsIm9uU3RhcnQiLCJjb250ZW50VHlwZSIsImdldFJlc3BvbnNlSGVhZGVyIiwib25Qcm9ncmVzcyIsIm9uRmluaXNoIiwib25SZWFkeVN0YXRlQ2hhbmdlIiwib25UaW1lb3V0IiwiWE1MSHR0cFJlcXVlc3QiLCJuYW1lIiwic2V0UmVxdWVzdEhlYWRlciIsInZhbHVlIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2VuZCIsImVycm9yMSIsInRvTG93ZXJDYXNlIiwiY2hhckNvZGVBdCIsIkhlYWRlcnNQb2x5ZmlsbCIsImFsbCIsIm1hcCIsImNyZWF0ZSIsImFycmF5Iiwic3BsaXQiLCJsaW5lIiwicGFydHMiLCJqb2luIiwiX21hcCIsImdldCIsIlhIUlRyYW5zcG9ydCIsIm9uU3RhcnRDYWxsYmFjayIsIm9uUHJvZ3Jlc3NDYWxsYmFjayIsIm9uRmluaXNoQ2FsbGJhY2siLCJoZWFkZXJzIiwib2Zmc2V0IiwiY2h1bmsiLCJzbGljZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIkhlYWRlcnNXcmFwcGVyIiwiX2hlYWRlcnMiLCJGZXRjaFRyYW5zcG9ydCIsImNvbnRyb2xsZXIiLCJ0ZXh0RGVjb2RlciIsImNyZWRlbnRpYWxzIiwiY2FjaGUiLCJ0aGVuIiwicmVzcG9uc2UiLCJyZWFkZXIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiY2FuY2VsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkTmV4dENodW5rIiwicmVhZCIsInJlc3VsdCIsImRvbmUiLCJFdmVudFRhcmdldCIsIl9saXN0ZW5lcnMiLCJ0aHJvd0Vycm9yIiwiZSIsImRpc3BhdGNoRXZlbnQiLCJ0YXJnZXQiLCJ0eXBlTGlzdGVuZXJzIiwidHlwZSIsImxpc3R
|