UNPKG

@contentstack/management

Version:

The Content Management API is used to manage the content of your Contentstack account

133 lines (131 loc) 5.68 kB
"use strict"; var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault")); Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray2 = require("@babel/runtime/helpers/slicedToArray"); var _slicedToArray3 = (0, _interopRequireDefault2["default"])(_slicedToArray2); var _defineProperty2 = require("@babel/runtime/helpers/defineProperty"); var _defineProperty3 = (0, _interopRequireDefault2["default"])(_defineProperty2); exports["default"] = contentstackHttpClient; var _axios = require("axios"); var _axios2 = (0, _interopRequireDefault2["default"])(_axios); var _cloneDeep = require("lodash/cloneDeep"); var _cloneDeep2 = (0, _interopRequireDefault2["default"])(_cloneDeep); var _qs = require("qs"); var _qs2 = (0, _interopRequireDefault2["default"])(_qs); var _concurrencyQueue = require("./concurrency-queue"); var _Util = require("./Util"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty3["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function contentstackHttpClient(options) { var _uiHostName, _developerHubBaseUrl; var defaultConfig = { insecure: false, retryOnError: true, logHandler: function logHandler(level, data) { if (level === 'error' && data) { var title = [data.name, data.message].filter(function (a) { return a; }).join(' - '); console.error("[error] ".concat(title)); return; } console.log("[".concat(level, "] ").concat(data)); }, retryCondition: function retryCondition(error) { if (error.response && error.response.status === 429) { return true; } return false; }, headers: {}, basePath: '', proxy: false, httpAgent: false, httpsAgent: false, adapter: false, timeout: 30000 }; var config = _objectSpread(_objectSpread({}, defaultConfig), (0, _cloneDeep2["default"])(options)); if (config.apiKey) { config.headers['apiKey'] = config.apiKey; } if (config.accessToken) { config.headers['accessToken'] = config.accessToken; } if (config.early_access) { config.headers['x-header-ea'] = config.early_access; } var protocol = config.insecure ? 'http' : 'https'; var hostname = config.defaultHostName; var port = config.port || 443; var version = config.version || 'v3'; if (config.region) { config.host = config.defaultHostName; // set region on priority } if ((0, _Util.isHost)(config.host)) { var parsed = config.host.split(':'); if (parsed.length === 2) { var _parsed = (0, _slicedToArray3["default"])(parsed, 2); hostname = _parsed[0]; port = _parsed[1]; } else { hostname = parsed[0]; } } if (config.basePath) { config.basePath = "/".concat(config.basePath.split('/').filter(Boolean).join('/')); } var baseURL = config.endpoint || "".concat(protocol, "://").concat(hostname, ":").concat(port).concat(config.basePath, "/{api-version}"); var uiHostName = hostname; var developerHubBaseUrl = hostname; if ((_uiHostName = uiHostName) !== null && _uiHostName !== void 0 && _uiHostName.endsWith('io')) { uiHostName = uiHostName.replace('io', 'com'); } if (uiHostName) { uiHostName = uiHostName.replace('api', 'app'); } var uiBaseUrl = config.endpoint || "".concat(protocol, "://").concat(uiHostName); developerHubBaseUrl = (_developerHubBaseUrl = developerHubBaseUrl) === null || _developerHubBaseUrl === void 0 ? void 0 : _developerHubBaseUrl.replace('api', 'developerhub-api').replace(/^dev\d+/, 'dev') // Replaces any 'dev1', 'dev2', etc. with 'dev' .replace('io', 'com').replace(/^http/, '') // Removing `http` if already present .replace(/^/, 'https://'); // Adds 'https://' at the start if not already there // set ui host name var axiosOptions = _objectSpread(_objectSpread({ // Axios baseURL: baseURL, uiBaseUrl: uiBaseUrl, developerHubBaseUrl: developerHubBaseUrl }, config), {}, { paramsSerializer: function paramsSerializer(params) { var query = params.query; delete params.query; var qs = _qs2["default"].stringify(params, { arrayFormat: 'brackets' }); if (query) { qs = qs + "&query=".concat(encodeURIComponent(JSON.stringify(query))); } params.query = query; return qs; }, versioningStrategy: 'path' }); var instance = _axios2["default"].create(axiosOptions); instance.httpClientParams = options; instance.concurrencyQueue = new _concurrencyQueue.ConcurrencyQueue({ axios: instance, config: config }); instance.interceptors.request.use(function (request) { if (request.versioningStrategy && request.versioningStrategy === 'path') { request.baseURL = request.baseURL.replace('{api-version}', version); } else { request.baseURL = request.baseURL.replace('/{api-version}', ''); } return request; }); return instance; } module.exports = exports.default;