@lskjs/uapp
Version:
LSK universal react app wrapper
204 lines (202 loc) • 8.78 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.ApiModule = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _env = require("@lskjs/env");
var _module = _interopRequireDefault(require("@lskjs/module"));
var _axios = _interopRequireDefault(require("axios"));
var _omit = _interopRequireDefault(require("lodash/omit"));
var _adapter = require("./adapter");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
// import { fetch } from './fetch';
var setToken = function setToken(client, token) {
if (!token) {
// eslint-disable-next-line no-param-reassign
delete client.defaults.headers.common.Authorization;
} else {
// eslint-disable-next-line no-param-reassign
client.defaults.headers.common.Authorization = "Bearer ".concat(token);
}
};
var ApiModule = /*#__PURE__*/function (_Module) {
(0, _inherits2["default"])(ApiModule, _Module);
var _super = _createSuper(ApiModule);
function ApiModule() {
var _this;
(0, _classCallCheck2["default"])(this, ApiModule);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.client = _axios["default"];
return _this;
} // debug = 1;
(0, _createClass2["default"])(ApiModule, [{
key: "init",
value: function () {
var _init = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(ApiModule.prototype), "init", this).call(this);
case 2:
this.client = this.createClient(this.getConfig());
case 3:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function init() {
return _init.apply(this, arguments);
}
return init;
}()
}, {
key: "getConfig",
value: function getConfig() {
return (0, _omit["default"])(this.config, ['log', 'debug']);
}
}, {
key: "createClient",
value: function createClient() {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (this.debug) this.log.trace('createClient');
var log = props.log && props.log.trace ? props.log : this.log;
var axiosProps = _objectSpread(_objectSpread(_objectSpread({
__parent: this,
app: this.app
}, this.getConfig()), props), {}, {
log: log
}, _env.isServer ? {
adapter: _adapter.adapter
} : {});
var client = _axios["default"].create(axiosProps);
client.interceptors.request.use(function (config) {
log.trace('[api]', config.baseURL, config.url, config.data);
return config;
}, function (err) {
log.error('[api]', err);
return Promise.reject(err);
});
// client.fetch = (...args) => this.fetch(...args); // TODO: подумать в будущем как правильно пропатчить аксиос
setToken(client, this.authToken);
this.app.on('api.setToken', function () {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
token = _ref.token;
setToken(client, token);
});
return client;
}
}, {
key: "setToken",
value: function setToken(token) {
if (this.debug) this.log.trace('setToken', token);
if (!token) {
delete this.authToken;
delete this.client.defaults.headers.common.Authorization;
} else {
this.authToken = token;
this.client.defaults.headers.common.Authorization = "Bearer ".concat(token);
}
this.app.emit('api.setToken', {
token: token
});
}
}, {
key: "setAuthToken",
value: function setAuthToken(token) {
this.setToken(token);
}
// fetch = fetch;
// fetch(...args) {
// return this.client(...args);
// }
}, {
key: "fetch",
value: function fetch() {
var _this$client;
return (_this$client = this.client).request.apply(_this$client, arguments);
}
}, {
key: "request",
value: function request() {
var _this$client2;
return (_this$client2 = this.client).request.apply(_this$client2, arguments);
}
}, {
key: "get",
value: function get() {
var _this$client3;
return (_this$client3 = this.client).get.apply(_this$client3, arguments);
}
}, {
key: "delete",
value: function _delete() {
var _this$client4;
return (_this$client4 = this.client)["delete"].apply(_this$client4, arguments);
}
}, {
key: "head",
value: function head() {
var _this$client5;
return (_this$client5 = this.client).head.apply(_this$client5, arguments);
}
}, {
key: "options",
value: function options() {
var _this$client6;
return (_this$client6 = this.client).options.apply(_this$client6, arguments);
}
}, {
key: "post",
value: function post() {
var _this$client7;
return (_this$client7 = this.client).post.apply(_this$client7, arguments);
}
}, {
key: "put",
value: function put() {
var _this$client8;
return (_this$client8 = this.client).put.apply(_this$client8, arguments);
}
}, {
key: "patch",
value: function patch() {
var _this$client9;
return (_this$client9 = this.client).patch.apply(_this$client9, arguments);
}
}, {
key: "all",
value: function all() {
var _this$client10;
return (_this$client10 = this.client).all.apply(_this$client10, arguments);
}
}, {
key: "spread",
value: function spread() {
var _this$client11;
return (_this$client11 = this.client).spread.apply(_this$client11, arguments);
}
}]);
return ApiModule;
}(_module["default"]);
exports.ApiModule = ApiModule;
var _default = ApiModule;
exports["default"] = _default;
//# sourceMappingURL=ApiModule.js.map