@querc/squidex-client
Version:
NodeJS client for the [Squidex](https://squidex.io/) CMS
85 lines (65 loc) • 9.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NodeFetchClient = void 0;
var _nodeFetch = _interopRequireWildcard(require("node-fetch"));
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/**
* Basically just wrapper around node-fetch, with some Squidex specific things & error handling
*/
class NodeFetchClient {
constructor(config) {
this.config = config;
}
async send(params) {
if (params.contentType === 'application/x-www-form-urlencoded') {
params.data = new URLSearchParams(params.data).toString();
} else {
params.data = JSON.stringify(params.data);
}
const headers = {};
if (params.contentType === undefined) {
params.contentType = 'application/json';
}
headers['Content-Type'] = params.contentType;
if (params.token !== undefined) {
headers['Authorization'] = `Bearer ${params.token}`;
if (this.config.languages !== undefined) {
headers['X-Languages'] = this.config.languages.join(',');
}
if (this.config.flatten) {
headers['X-Flatten'] = 'true';
}
if (params.draft) {
headers['X-Unpublished'] = 'true';
}
}
const request = {
method: params.method,
body: params.data,
headers
};
try {
const response = await (0, _nodeFetch.default)(this.config.url + params.path, request); // Catch error responses & throw an error
if (!response.ok) {
const body = await response.text();
throw new Error(`[HttpClient] HTTP error ${response.status}: ${response.statusText} - ${body}`);
}
if (response.status === 204) {
return;
} else {
const responseData = await response.json();
return responseData;
}
} catch (e) {
if (e instanceof _nodeFetch.FetchError) {
throw new Error(`[HttpClient] Fetch error (${e.type}): ${e.message}`);
}
throw e;
}
}
}
exports.NodeFetchClient = NodeFetchClient;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwL25vZGUtZmV0Y2guY2xpZW50LnRzIl0sIm5hbWVzIjpbIk5vZGVGZXRjaENsaWVudCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwic2VuZCIsInBhcmFtcyIsImNvbnRlbnRUeXBlIiwiZGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsInRvU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImhlYWRlcnMiLCJ1bmRlZmluZWQiLCJ0b2tlbiIsImxhbmd1YWdlcyIsImpvaW4iLCJmbGF0dGVuIiwiZHJhZnQiLCJyZXF1ZXN0IiwibWV0aG9kIiwiYm9keSIsInJlc3BvbnNlIiwidXJsIiwicGF0aCIsIm9rIiwidGV4dCIsIkVycm9yIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInJlc3BvbnNlRGF0YSIsImpzb24iLCJlIiwiRmV0Y2hFcnJvciIsInR5cGUiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7OztBQUtBOzs7QUFHTyxNQUFNQSxlQUFOLENBQTRDO0FBQy9DQyxFQUFBQSxXQUFXLENBQWtCQyxNQUFsQixFQUFzRDtBQUFBLFNBQXBDQSxNQUFvQyxHQUFwQ0EsTUFBb0M7QUFBRTs7QUFFbkUsUUFBYUMsSUFBYixDQUEyQ0MsTUFBM0MsRUFBa0Y7QUFDOUUsUUFBSUEsTUFBTSxDQUFDQyxXQUFQLEtBQXVCLG1DQUEzQixFQUFnRTtBQUM1REQsTUFBQUEsTUFBTSxDQUFDRSxJQUFQLEdBQWMsSUFBSUMsZUFBSixDQUFvQkgsTUFBTSxDQUFDRSxJQUEzQixFQUFpQ0UsUUFBakMsRUFBZDtBQUNILEtBRkQsTUFFTztBQUNISixNQUFBQSxNQUFNLENBQUNFLElBQVAsR0FBY0csSUFBSSxDQUFDQyxTQUFMLENBQWVOLE1BQU0sQ0FBQ0UsSUFBdEIsQ0FBZDtBQUNIOztBQUVELFVBQU1LLE9BQWtDLEdBQUcsRUFBM0M7O0FBRUEsUUFBSVAsTUFBTSxDQUFDQyxXQUFQLEtBQXVCTyxTQUEzQixFQUFzQztBQUNsQ1IsTUFBQUEsTUFBTSxDQUFDQyxXQUFQLEdBQXFCLGtCQUFyQjtBQUNIOztBQUNETSxJQUFBQSxPQUFPLENBQUMsY0FBRCxDQUFQLEdBQTBCUCxNQUFNLENBQUNDLFdBQWpDOztBQUVBLFFBQUlELE1BQU0sQ0FBQ1MsS0FBUCxLQUFpQkQsU0FBckIsRUFBZ0M7QUFDNUJELE1BQUFBLE9BQU8sQ0FBQyxlQUFELENBQVAsR0FBNEIsVUFBU1AsTUFBTSxDQUFDUyxLQUFNLEVBQWxEOztBQUVBLFVBQUksS0FBS1gsTUFBTCxDQUFZWSxTQUFaLEtBQTBCRixTQUE5QixFQUF5QztBQUNyQ0QsUUFBQUEsT0FBTyxDQUFDLGFBQUQsQ0FBUCxHQUF5QixLQUFLVCxNQUFMLENBQVlZLFNBQVosQ0FBc0JDLElBQXRCLENBQTJCLEdBQTNCLENBQXpCO0FBQ0g7O0FBRUQsVUFBSSxLQUFLYixNQUFMLENBQVljLE9BQWhCLEVBQXlCO0FBQ3JCTCxRQUFBQSxPQUFPLENBQUMsV0FBRCxDQUFQLEdBQXVCLE1BQXZCO0FBQ0g7O0FBRUQsVUFBSVAsTUFBTSxDQUFDYSxLQUFYLEVBQWtCO0FBQ2ROLFFBQUFBLE9BQU8sQ0FBQyxlQUFELENBQVAsR0FBMkIsTUFBM0I7QUFDSDtBQUNKOztBQUVELFVBQU1PLE9BQU8sR0FBRztBQUNaQyxNQUFBQSxNQUFNLEVBQUVmLE1BQU0sQ0FBQ2UsTUFESDtBQUVaQyxNQUFBQSxJQUFJLEVBQUVoQixNQUFNLENBQUNFLElBRkQ7QUFHWkssTUFBQUE7QUFIWSxLQUFoQjs7QUFNQSxRQUFJO0FBQ0EsWUFBTVUsUUFBUSxHQUFHLE1BQU0sd0JBQU0sS0FBS25CLE1BQUwsQ0FBWW9CLEdBQVosR0FBa0JsQixNQUFNLENBQUNtQixJQUEvQixFQUFxQ0wsT0FBckMsQ0FBdkIsQ0FEQSxDQUdBOztBQUNBLFVBQUksQ0FBQ0csUUFBUSxDQUFDRyxFQUFkLEVBQWtCO0FBQ2QsY0FBTUosSUFBSSxHQUFHLE1BQU1DLFFBQVEsQ0FBQ0ksSUFBVCxFQUFuQjtBQUNBLGNBQU0sSUFBSUMsS0FBSixDQUFXLDJCQUEwQkwsUUFBUSxDQUFDTSxNQUFPLEtBQUlOLFFBQVEsQ0FBQ08sVUFBVyxNQUFLUixJQUFLLEVBQXZGLENBQU47QUFDSDs7QUFFRCxVQUFJQyxRQUFRLENBQUNNLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekI7QUFDSCxPQUZELE1BRU87QUFDSCxjQUFNRSxZQUFZLEdBQUcsTUFBTVIsUUFBUSxDQUFDUyxJQUFULEVBQTNCO0FBQ0EsZUFBT0QsWUFBUDtBQUNIO0FBQ0osS0FmRCxDQWVFLE9BQU9FLENBQVAsRUFBVTtBQUNSLFVBQUlBLENBQUMsWUFBWUMscUJBQWpCLEVBQTZCO0FBQ3pCLGNBQU0sSUFBSU4sS0FBSixDQUFXLDZCQUE0QkssQ0FBQyxDQUFDRSxJQUFLLE1BQUtGLENBQUMsQ0FBQ0csT0FBUSxFQUE3RCxDQUFOO0FBQ0g7O0FBRUQsWUFBTUgsQ0FBTjtBQUNIO0FBQ0o7O0FBN0Q4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmZXRjaCwgeyBGZXRjaEVycm9yIH0gZnJvbSAnbm9kZS1mZXRjaCc7XG5cbmltcG9ydCB7IFNxdWlkZXhDbGllbnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwU2VuZFBhcmFtcyB9IGZyb20gJy4vaHR0cC1jbGllbnQnO1xuXG4vKipcbiAqIEJhc2ljYWxseSBqdXN0IHdyYXBwZXIgYXJvdW5kIG5vZGUtZmV0Y2gsIHdpdGggc29tZSBTcXVpZGV4IHNwZWNpZmljIHRoaW5ncyAmIGVycm9yIGhhbmRsaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlRmV0Y2hDbGllbnQgaW1wbGVtZW50cyBIdHRwQ2xpZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogU3F1aWRleENsaWVudENvbmZpZ3VyYXRpb24pIHt9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VuZDxUUmVxID0gYW55LCBUUmVzID0gVFJlcT4ocGFyYW1zOiBIdHRwU2VuZFBhcmFtcyk6IFByb21pc2U8VFJlcz4ge1xuICAgICAgICBpZiAocGFyYW1zLmNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykge1xuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcy5kYXRhKS50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSBKU09OLnN0cmluZ2lmeShwYXJhbXMuZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICAgICAgaWYgKHBhcmFtcy5jb250ZW50VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJhbXMuY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBwYXJhbXMuY29udGVudFR5cGU7XG5cbiAgICAgICAgaWYgKHBhcmFtcy50b2tlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7cGFyYW1zLnRva2VufWA7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5sYW5ndWFnZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbJ1gtTGFuZ3VhZ2VzJ10gPSB0aGlzLmNvbmZpZy5sYW5ndWFnZXMuam9pbignLCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZmxhdHRlbikge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbJ1gtRmxhdHRlbiddID0gJ3RydWUnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFyYW1zLmRyYWZ0KSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1snWC1VbnB1Ymxpc2hlZCddID0gJ3RydWUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgIG1ldGhvZDogcGFyYW1zLm1ldGhvZCxcbiAgICAgICAgICAgIGJvZHk6IHBhcmFtcy5kYXRhLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmNvbmZpZy51cmwgKyBwYXJhbXMucGF0aCwgcmVxdWVzdCk7XG5cbiAgICAgICAgICAgIC8vIENhdGNoIGVycm9yIHJlc3BvbnNlcyAmIHRocm93IGFuIGVycm9yXG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtIdHRwQ2xpZW50XSBIVFRQIGVycm9yICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fSAtICR7Ym9keX1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSBhcyBUUmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEZldGNoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtIdHRwQ2xpZW50XSBGZXRjaCBlcnJvciAoJHtlLnR5cGV9KTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=