next-auth
Version:
Authentication for Next.js
128 lines (105 loc) • 4.73 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchData = fetchData;
exports.apiBaseUrl = apiBaseUrl;
exports.now = now;
exports.BroadcastChannel = BroadcastChannel;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function fetchData(_x, _x2, _x3) {
return _fetchData.apply(this, arguments);
}
function _fetchData() {
_fetchData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(path, __NEXTAUTH, logger) {
var _ref,
ctx,
_ref$req,
req,
options,
res,
data,
_args = arguments;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_ref = _args.length > 3 && _args[3] !== undefined ? _args[3] : {}, ctx = _ref.ctx, _ref$req = _ref.req, req = _ref$req === void 0 ? ctx === null || ctx === void 0 ? void 0 : ctx.req : _ref$req;
_context.prev = 1;
options = req !== null && req !== void 0 && req.headers.cookie ? {
headers: {
cookie: req.headers.cookie
}
} : {};
_context.next = 5;
return fetch("".concat(apiBaseUrl(__NEXTAUTH), "/").concat(path), options);
case 5:
res = _context.sent;
_context.next = 8;
return res.json();
case 8:
data = _context.sent;
if (res.ok) {
_context.next = 11;
break;
}
throw data;
case 11:
return _context.abrupt("return", Object.keys(data).length > 0 ? data : null);
case 14:
_context.prev = 14;
_context.t0 = _context["catch"](1);
logger.error("CLIENT_FETCH_ERROR", _objectSpread({
error: _context.t0,
path: path
}, req ? {
header: req.headers
} : {}));
return _context.abrupt("return", null);
case 18:
case "end":
return _context.stop();
}
}
}, _callee, null, [[1, 14]]);
}));
return _fetchData.apply(this, arguments);
}
function apiBaseUrl(__NEXTAUTH) {
if (typeof window === "undefined") {
return "".concat(__NEXTAUTH.baseUrlServer).concat(__NEXTAUTH.basePathServer);
}
return __NEXTAUTH.basePath;
}
function now() {
return Math.floor(Date.now() / 1000);
}
function BroadcastChannel() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "nextauth.message";
return {
receive: function receive(onReceive) {
var handler = function handler(event) {
var _event$newValue;
if (event.key !== name) return;
var message = JSON.parse((_event$newValue = event.newValue) !== null && _event$newValue !== void 0 ? _event$newValue : "{}");
if ((message === null || message === void 0 ? void 0 : message.event) !== "session" || !(message !== null && message !== void 0 && message.data)) return;
onReceive(message);
};
window.addEventListener("storage", handler);
return function () {
return window.removeEventListener("storage", handler);
};
},
post: function post(message) {
if (typeof window === "undefined") return;
localStorage.setItem(name, JSON.stringify(_objectSpread(_objectSpread({}, message), {}, {
timestamp: now()
})));
}
};
}
;