@lskjs/uapp
Version:
LSK universal react app wrapper
99 lines (98 loc) • 3.77 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
exports.fetch = fetch;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _env = require("@lskjs/env");
var _isAbsoluteExternalUrl = _interopRequireDefault(require("@lskjs/utils/isAbsoluteExternalUrl"));
/* eslint-disable no-param-reassign */
function fetch() {
return _fetch.apply(this, arguments);
}
function _fetch() {
_fetch = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var axios,
authToken,
_len,
args,
_key,
rawUrl,
_args$,
options,
port,
url,
_options$body,
body,
_options$method,
method,
_options$qs,
qs,
req,
serverApp,
webserver,
_args = arguments;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
// eslint-disable-next-line @typescript-eslint/no-this-alias
axios = this.client;
authToken = axios.authToken;
for (_len = _args.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = _args[_key];
}
rawUrl = args[0], _args$ = args[1], options = _args$ === void 0 ? {} : _args$;
if (!((0, _isAbsoluteExternalUrl["default"])(rawUrl) || _env.isClient)) {
_context.next = 6;
break;
}
return _context.abrupt("return", this.request.apply(this, args));
case 6:
// TODO: get port from backend
// if (isClient) return axios.remoteFetch(...args);
// TODO: сделать как-нибудь по нормальному и проверенно
port = 8080; // this.app.app.httpInstance.address().port
url = "http://localhost:".concat(port).concat(rawUrl);
_options$body = options.body, body = _options$body === void 0 ? {} : _options$body, _options$method = options.method, method = _options$method === void 0 ? 'GET' : _options$method, _options$qs = options.qs, qs = _options$qs === void 0 ? {} : _options$qs;
console.log('FETCH FETCH ', this.client.baseURL, this.client.defaults.baseURL, this.client);
req = {
url: url,
path: [this.client && this.client.baseURL, rawUrl].filter(Boolean).join('/'),
method: method,
body: method === 'POST' ? body : qs,
headers: authToken ? {
authorization: "Bearer ".concat(authToken)
} : {},
token: authToken
};
if (this.debug) this.log.debug('[fetch]', method, url);
// const serverApp = this.app;
serverApp = this.app.app; // if (serverApp.name !== 'ReactAppServer') throw
console.log('req', req);
_context.next = 16;
return serverApp.module('webserver');
case 16:
webserver = _context.sent;
_context.t0 = req;
_context.next = 20;
return webserver.expressResolve(req);
case 20:
_context.t1 = _context.sent;
return _context.abrupt("return", {
req: _context.t0,
data: _context.t1
});
case 22:
case "end":
return _context.stop();
}
}, _callee, this);
}));
return _fetch.apply(this, arguments);
}
var _default = fetch;
exports["default"] = _default;
//# sourceMappingURL=fetch.js.map