@umbraco/headless-client
Version:
Node.js client library for the Umbraco Headless APIs
131 lines • 14.3 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiRequest = void 0;
var Endpoint_1 = require("./Endpoint");
var APIRequestError_1 = require("./APIRequestError");
var axios_1 = __importDefault(require("axios"));
var form_data_1 = __importDefault(require("form-data"));
/** @internal */
var ApiRequest = /** @class */ (function () {
function ApiRequest(options, endpoint, data) {
var _this = this;
this.options = options;
this.endpoint = endpoint;
this.data = data;
this.promise = function () { return __awaiter(_this, void 0, void 0, function () {
var headers, path, url, requestInit, method, token, response, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
headers = {
'Content-Type': 'application/json',
Accept: 'application/json+hal',
'api-version': '2.2'
};
if ('projectAlias' in this.options) {
headers['umb-project-alias'] = this.options.projectAlias;
}
if (this.endpoint.source === Endpoint_1.EndpointSource.CDN && this.options.language) {
headers['Accept-Language'] = this.options.language;
}
if ('apiKey' in this.options && this.options.apiKey) {
headers['api-key'] = this.options.apiKey;
}
path = this.endpoint.getPath();
url = 'https://cdn.umbraco.io';
if (this.endpoint.source === Endpoint_1.EndpointSource.ContentManagement) {
url = 'apiProxyUrl' in this.options
? this.options.apiProxyUrl
: 'https://api.umbraco.io';
}
else if ('cdnProxyUrl' in this.options) {
url = this.options.cdnProxyUrl;
}
else if (this.options.preview) {
url = 'https://preview.umbraco.io';
}
url = url.endsWith('/') ? "" + url + path.substr(1) : "" + url + path;
requestInit = {
url: url,
method: this.endpoint.method,
headers: {}
};
method = this.endpoint.method.toLowerCase();
if ((method === 'post' || method === 'put') && !!this.data) {
if (this.data instanceof form_data_1.default) {
headers['Content-Type'] = "multipart/form-data; boundary=" + this.data.getBoundary();
requestInit.data = this.data;
}
else if (this.data instanceof URLSearchParams) {
headers['Content-Type'] = 'application/x-www-form-urlencoded';
requestInit.data = this.data;
}
else {
requestInit.data = JSON.stringify(this.data);
}
}
requestInit.headers = headers;
if ('accessTokenResolver' in this.options) {
token = this.options.accessTokenResolver(requestInit);
if (token) {
requestInit.headers.Authorization = "Bearer " + token;
}
}
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, axios_1.default(requestInit)];
case 2:
response = _a.sent();
return [2 /*return*/, response.data];
case 3:
err_1 = _a.sent();
throw new APIRequestError_1.APIRequestError(err_1.message, err_1.response);
case 4: return [2 /*return*/];
}
});
}); };
}
return ApiRequest;
}());
exports.ApiRequest = ApiRequest;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpUmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9BcGlSZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUFxRDtBQUVyRCxxREFBbUQ7QUFDbkQsZ0RBQWlEO0FBQ2pELHdEQUFnQztBQUVoQyxnQkFBZ0I7QUFDaEI7SUFDRSxvQkFDbUIsT0FBcUMsRUFDL0MsUUFBa0IsRUFDbEIsSUFBVTtRQUhuQixpQkFJSTtRQUhlLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUdaLFlBQU8sR0FBRzs7Ozs7d0JBQ1QsT0FBTyxHQUFROzRCQUNuQixjQUFjLEVBQUUsa0JBQWtCOzRCQUNsQyxNQUFNLEVBQUUsc0JBQXNCOzRCQUM5QixhQUFhLEVBQUUsS0FBSzt5QkFDckIsQ0FBQTt3QkFFRCxJQUFJLGNBQWMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFOzRCQUNsQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQTt5QkFDekQ7d0JBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyx5QkFBYyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTs0QkFDeEUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUE7eUJBQ25EO3dCQUVELElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7NEJBQ25ELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTt5QkFDekM7d0JBRUssSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUE7d0JBQ2hDLEdBQUcsR0FBRyx3QkFBd0IsQ0FBQTt3QkFFbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyx5QkFBYyxDQUFDLGlCQUFpQixFQUFFOzRCQUM3RCxHQUFHLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPO2dDQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dDQUMxQixDQUFDLENBQUMsd0JBQXdCLENBQUE7eUJBQzdCOzZCQUFNLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ3hDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQTt5QkFDL0I7NkJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTs0QkFDL0IsR0FBRyxHQUFHLDRCQUE0QixDQUFBO3lCQUNuQzt3QkFFRCxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUcsQ0FBQyxDQUFDLENBQUMsS0FBRyxHQUFHLEdBQUcsSUFBTSxDQUFBO3dCQUUvRCxXQUFXLEdBQXVCOzRCQUN0QyxHQUFHLEVBQUUsR0FBRzs0QkFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNOzRCQUM1QixPQUFPLEVBQUUsRUFBRTt5QkFDWixDQUFBO3dCQUVLLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQTt3QkFDakQsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFOzRCQUMxRCxJQUFJLElBQUksQ0FBQyxJQUFJLFlBQVksbUJBQVEsRUFBRTtnQ0FDakMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1DQUFpQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBSSxDQUFBO2dDQUNwRixXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7NkJBQzdCO2lDQUFNLElBQUksSUFBSSxDQUFDLElBQUksWUFBWSxlQUFlLEVBQUU7Z0NBQy9DLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxtQ0FBbUMsQ0FBQTtnQ0FDN0QsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBOzZCQUM3QjtpQ0FBTTtnQ0FDTCxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBOzZCQUM3Qzt5QkFDRjt3QkFDRCxXQUFXLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTt3QkFFN0IsSUFBSSxxQkFBcUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFOzRCQUVuQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTs0QkFDM0QsSUFBSSxLQUFLLEVBQUU7Z0NBQ1QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsWUFBVSxLQUFPLENBQUE7NkJBQ3REO3lCQUNGOzs7O3dCQUdrQixxQkFBTSxlQUFLLENBQUMsV0FBVyxDQUFDLEVBQUE7O3dCQUFuQyxRQUFRLEdBQUcsU0FBd0I7d0JBQ3pDLHNCQUFPLFFBQVEsQ0FBQyxJQUFTLEVBQUE7Ozt3QkFFekIsTUFBTSxJQUFJLGlDQUFlLENBQUMsS0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7Ozs7YUFFdkQsQ0FBQTtJQXRFRSxDQUFDO0lBdUVOLGlCQUFDO0FBQUQsQ0FBQyxBQTVFRCxJQTRFQztBQTVFWSxnQ0FBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuZHBvaW50LCBFbmRwb2ludFNvdXJjZSB9IGZyb20gJy4vRW5kcG9pbnQnXG5pbXBvcnQgeyBDbGllbnRPcHRpb25zLCBQcm94eU9wdGlvbnMgfSBmcm9tICcuL0NsaWVudCdcbmltcG9ydCB7IEFQSVJlcXVlc3RFcnJvciB9IGZyb20gJy4vQVBJUmVxdWVzdEVycm9yJ1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJ1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSdcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNsYXNzIEFwaVJlcXVlc3Q8UiA9IGFueT4ge1xuICBjb25zdHJ1Y3RvciAoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDbGllbnRPcHRpb25zIHwgUHJveHlPcHRpb25zLFxuICAgIHB1YmxpYyBlbmRwb2ludDogRW5kcG9pbnQsXG4gICAgcHVibGljIGRhdGE/OiBhbnlcbiAgKSB7fVxuXG4gIHB1YmxpYyBwcm9taXNlID0gYXN5bmMgKCk6IFByb21pc2U8Uj4gPT4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IGFueSA9IHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uK2hhbCcsXG4gICAgICAnYXBpLXZlcnNpb24nOiAnMi4yJ1xuICAgIH1cblxuICAgIGlmICgncHJvamVjdEFsaWFzJyBpbiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgIGhlYWRlcnNbJ3VtYi1wcm9qZWN0LWFsaWFzJ10gPSB0aGlzLm9wdGlvbnMucHJvamVjdEFsaWFzXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5kcG9pbnQuc291cmNlID09PSBFbmRwb2ludFNvdXJjZS5DRE4gJiYgdGhpcy5vcHRpb25zLmxhbmd1YWdlKSB7XG4gICAgICBoZWFkZXJzWydBY2NlcHQtTGFuZ3VhZ2UnXSA9IHRoaXMub3B0aW9ucy5sYW5ndWFnZVxuICAgIH1cblxuICAgIGlmICgnYXBpS2V5JyBpbiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmFwaUtleSkge1xuICAgICAgaGVhZGVyc1snYXBpLWtleSddID0gdGhpcy5vcHRpb25zLmFwaUtleVxuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmVuZHBvaW50LmdldFBhdGgoKVxuICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9jZG4udW1icmFjby5pbydcblxuICAgIGlmICh0aGlzLmVuZHBvaW50LnNvdXJjZSA9PT0gRW5kcG9pbnRTb3VyY2UuQ29udGVudE1hbmFnZW1lbnQpIHtcbiAgICAgIHVybCA9ICdhcGlQcm94eVVybCcgaW4gdGhpcy5vcHRpb25zXG4gICAgICAgID8gdGhpcy5vcHRpb25zLmFwaVByb3h5VXJsXG4gICAgICAgIDogJ2h0dHBzOi8vYXBpLnVtYnJhY28uaW8nXG4gICAgfSBlbHNlIGlmICgnY2RuUHJveHlVcmwnIGluIHRoaXMub3B0aW9ucykge1xuICAgICAgdXJsID0gdGhpcy5vcHRpb25zLmNkblByb3h5VXJsXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMucHJldmlldykge1xuICAgICAgdXJsID0gJ2h0dHBzOi8vcHJldmlldy51bWJyYWNvLmlvJ1xuICAgIH1cblxuICAgIHVybCA9IHVybC5lbmRzV2l0aCgnLycpID8gYCR7dXJsfSR7cGF0aC5zdWJzdHIoMSl9YCA6IGAke3VybH0ke3BhdGh9YFxuXG4gICAgY29uc3QgcmVxdWVzdEluaXQ6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIHVybDogdXJsLFxuICAgICAgbWV0aG9kOiB0aGlzLmVuZHBvaW50Lm1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHt9XG4gICAgfVxuXG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5lbmRwb2ludC5tZXRob2QudG9Mb3dlckNhc2UoKVxuICAgIGlmICgobWV0aG9kID09PSAncG9zdCcgfHwgbWV0aG9kID09PSAncHV0JykgJiYgISF0aGlzLmRhdGEpIHtcbiAgICAgIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke3RoaXMuZGF0YS5nZXRCb3VuZGFyeSgpfWBcbiAgICAgICAgcmVxdWVzdEluaXQuZGF0YSA9IHRoaXMuZGF0YVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuICAgICAgICByZXF1ZXN0SW5pdC5kYXRhID0gdGhpcy5kYXRhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0SW5pdC5kYXRhID0gSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICByZXF1ZXN0SW5pdC5oZWFkZXJzID0gaGVhZGVyc1xuXG4gICAgaWYgKCdhY2Nlc3NUb2tlblJlc29sdmVyJyBpbiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5vcHRpb25zLmFjY2Vzc1Rva2VuUmVzb2x2ZXIocmVxdWVzdEluaXQpXG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgcmVxdWVzdEluaXQuaGVhZGVycy5BdXRob3JpemF0aW9uID0gYEJlYXJlciAke3Rva2VufWBcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcyhyZXF1ZXN0SW5pdClcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhIGFzIFJcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBBUElSZXF1ZXN0RXJyb3IoZXJyLm1lc3NhZ2UsIGVyci5yZXNwb25zZSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==