UNPKG

dc-management-sdk-js

Version:
179 lines 11.5 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HalResource = void 0; var HttpRequest_1 = require("../../http/HttpRequest"); /** * Base class for all Resources */ var HalResource = /** @class */ (function () { /** * Creates a new instance of the resource. * If data is provided it will be parsed as if it had * come from the remote api. * @param data */ function HalResource(data) { if (data) { this.parse(data); } } /** * Parses the data returned by the API into the model class * @hidden */ HalResource.prototype.parse = function (data) { Object.assign(this, data); }; /** * Returns a copy of this resource's attributes excluding links and client references */ HalResource.prototype.toJSON = function () { var result = Object.assign({}, this); delete result.client; delete result._links; delete result.related; return result; }; /** * Returns a copy of this resource's attributes excluding links and client references * @deprecated */ HalResource.prototype.toJson = function () { return this.toJSON(); }; /** * Set automatically by the HalClient when the resource is created. * If this is not set the resource will be unable to resolve related * resources and actions. * * @hidden */ HalResource.prototype.setClient = function (client) { this.client = client; }; /** * Converts an _embedded collection into an Array of * Resource instances. * @hidden */ HalResource.prototype.parseEmbedded = function (name, resourceConstructor) { var _this = this; if (this._embedded[name]) { return this._embedded[name].map(function (x) { return _this.client.parse(x, resourceConstructor); }); } else { return []; } }; /** * GET a linked resource * @hidden */ HalResource.prototype.fetchLinkedResource = function (name, params, resourceConstructor) { return this.withHalLink(name).then(function (_a) { var link = _a[0], client = _a[1]; return client.fetchLinkedResource(link, params, resourceConstructor); }); }; /** * POST / CREATE a new resource * @hidden */ HalResource.prototype.createLinkedResource = function (name, params, resource, resourceConstructor) { return this.withHalLink(name).then(function (_a) { var link = _a[0], client = _a[1]; return client.createLinkedResource(link, params, resource, resourceConstructor); }); }; /** * POST to an action endpoint and get a resource response * @hidden */ HalResource.prototype.performActionThatReturnsResource = function (name, params, data, resourceConstructor, method) { if (method === void 0) { method = HttpRequest_1.HttpMethod.POST; } return this.withHalLink(name).then(function (_a) { var link = _a[0], client = _a[1]; return client.performActionThatReturnsResource(link, params, data, resourceConstructor, method); }); }; /** * POST to an action endpoint with no resource response returned. */ HalResource.prototype.performActionWithoutResourceResponse = function (name, params, data, method) { if (method === void 0) { method = HttpRequest_1.HttpMethod.POST; } return this.withHalLink(name).then(function (_a) { var link = _a[0], client = _a[1]; return client.performActionWithoutResourceResponse(link, params, data, method); }); }; /** * DELETE the current resource * @hidden */ HalResource.prototype.deleteResource = function () { return this.deleteLinkedResource('delete', {}); }; /** * DELETE a linked resource * @hidden */ HalResource.prototype.deleteLinkedResource = function (name, params) { return this.withHalLink(name).then(function (_a) { var link = _a[0], client = _a[1]; return client.deleteLinkedResource(link, params); }); }; /** * PATCH the current resource * @hidden */ HalResource.prototype.updateResource = function (resource, resourceConstructor, params) { return this.updateLinkedResource('update', __assign({}, params), resource, resourceConstructor); }; /** * PATCH a linked resource * @hidden */ HalResource.prototype.updateLinkedResource = function (name, params, resource, resourceConstructor) { return this.withHalLink(name).then(function (_a) { var link = _a[0], client = _a[1]; return client.updateLinkedResource(link, params, resource, resourceConstructor); }); }; HalResource.prototype.withHalLink = function (name) { if (!this.client) { return Promise.reject(new Error('HalResource has no client')); } var link = this._links[name]; if (!link) { return Promise.reject("The ".concat(name, " action is not available, ensure you have permission to perform this action.")); } if (name === 'list-slots' && link.templated) { // Work around an API bug where pagination params are not included for list-slots. var toReplace = '{?includedSlots}'; var toReplaceWith = '{?includedSlots,page,size,sort}'; if (link.href.endsWith(toReplace)) { link.href = link.href.substr(0, link.href.length - toReplace.length) + toReplaceWith; } } return Promise.resolve([link, this.client]); }; return HalResource; }()); exports.HalResource = HalResource; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFsUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2hhbC9tb2RlbHMvSGFsUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0Q7QUFXcEQ7O0dBRUc7QUFDSDtJQWNFOzs7OztPQUtHO0lBQ0gscUJBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLDJCQUFLLEdBQVosVUFBYSxJQUFTO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLDRCQUFNLEdBQWI7UUFDRSxJQUFNLE1BQU0sR0FBUSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDckIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksNEJBQU0sR0FBYjtRQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwrQkFBUyxHQUFoQixVQUFpQixNQUFpQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1DQUFhLEdBQXZCLFVBQ0UsSUFBWSxFQUNaLG1CQUE4QztRQUZoRCxpQkFXQztRQVBDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pC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