UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 6.02 kB
"use strict";var _AltostraProjectsManager_endpoint,__awaiter=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(o,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function n(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,n)}c((i=i.apply(e,t||[])).next())}))},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,r,i,o){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?o.call(e,r):o?o.value=r:t.set(e,r),r},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AltostraProjectsManager=exports.ERR_SYSTEM_ERROR=exports.ERR_NO_PROJECT=void 0;const EntityId_1=require("../../../common/CustomTypes/EntityId"),NonEmptyString_1=require("../../../common/CustomTypes/NonEmptyString"),Errors_1=require("../../../common/Errors"),Utils_1=require("../../../common/Utils"),Object_1=require("../../../common/Utils/Object"),Url_1=require("../../../common/Utils/Url"),primitives_1=require("@altostra/type-validations/lib/primitives"),ItemSelection_1=require("../ItemSelection"),ServiceClientBase_1=require("../ServiceClientBase"),Types_1=require("./Types");exports.ERR_NO_PROJECT="project-not-exist",exports.ERR_SYSTEM_ERROR="get-project-from-server";class AltostraProjectsManager extends ServiceClientBase_1.ServiceClientBase{constructor({axios:e,endpoint:t,getToken:r,logger:i,errorMapping:o={}}){super({axios:e,getToken:r,logger:i,serviceName:"Projects-manager",errorMapping:o}),_AltostraProjectsManager_endpoint.set(this,void 0),__classPrivateFieldSet(this,_AltostraProjectsManager_endpoint,t,"f")}exists(e){return __awaiter(this,void 0,void 0,(function*(){try{return yield this.getProject(e),!0}catch(e){if(!(e instanceof Errors_1.UserFacingError)||e.type!==exports.ERR_NO_PROJECT)throw e;return!1}}))}getProject(e){var t,r;return __awaiter(this,void 0,void 0,(function*(){const i=yield this._withLogging("Getting project",()=>__awaiter(this,void 0,void 0,(function*(){return yield this._request({request:t=>__awaiter(this,void 0,void 0,(function*(){return(0,NonEmptyString_1.isNonEmptyString)(e)&&(e={id:(0,EntityId_1.entityId)(e)}),yield t.get((0,ItemSelection_1.appendUrlQuery)(getProjectUrl(__classPrivateFieldGet(this,_AltostraProjectsManager_endpoint,"f"),(0,ItemSelection_1.selectionValue)(e)),(0,ItemSelection_1.selectionQueryParam)(e)),{headers:yield this._getHeaders()})})),dataValidation:Types_1.isGetSingleProjectResponse,errorWrapping:{category:e=>(s(e),"user-fault"),serializedGetter:Utils_1.axiosSerializedError,type:e=>s(e)?exports.ERR_NO_PROJECT:exports.ERR_SYSTEM_ERROR,message:e=>s(e)?"The project is not registered with Altostra.":"An error occurred while getting project information.\nThis might be a temporary error, please try again or contact support."}})}))),[o]=i.projects;if(!o)throw(null!==(r=null===(t=i.errors)||void 0===t?void 0:t.length)&&void 0!==r?r:0)>0?Errors_1.UserFacingError.wrapError(Errors_1.AltoError.create("Getting project metadata returned errors",{data:{errors:i.errors,projectId:e}}),{message:"The request for project information returned some errors.\nPlease try again or contact support.",category:"server-fault",type:exports.ERR_SYSTEM_ERROR,data:{projectId:e}}):Errors_1.UserFacingError.create("The project is not registered with Altostra.",{category:"user-fault",type:exports.ERR_NO_PROJECT,data:{projectId:e}});return o;function s(e){var t,r;return isAxiosError(e)&&(null!==(r=null===(t=e.response)||void 0===t?void 0:t.status)&&void 0!==r?r:500)<500}}))}listProjects(){return this._request({request:e=>__awaiter(this,void 0,void 0,(function*(){return yield e.get(getProjectUrl(__classPrivateFieldGet(this,_AltostraProjectsManager_endpoint,"f")),{headers:yield this._getHeaders()})})),dataValidation:Types_1.isGetProjectsResponse,errorWrapping:{}})}deleteProject(e){return this._request({request:t=>__awaiter(this,void 0,void 0,(function*(){return yield t.delete((0,ItemSelection_1.appendUrlQuery)(getProjectUrl(__classPrivateFieldGet(this,_AltostraProjectsManager_endpoint,"f"),(0,ItemSelection_1.selectionValue)(e)),(0,ItemSelection_1.selectionQueryParam)(e)),{headers:yield this._getHeaders()})})),dataValidation:primitives_1.any,errorWrapping:{message:"Project deletion has failed.\nPlease contact support.",data:{project:e}}})}updateProject(e,t){return this._request({request:r=>__awaiter(this,void 0,void 0,(function*(){return yield r.put((0,ItemSelection_1.appendUrlQuery)(getProjectUrl(__classPrivateFieldGet(this,_AltostraProjectsManager_endpoint,"f"),(0,ItemSelection_1.selectionValue)(e)),(0,ItemSelection_1.selectionQueryParam)(e)),t,{headers:yield this._getHeaders()})})),dataValidation:primitives_1.any,errorWrapping:{message:"Project update has failed.\nPlease contact support.",data:{project:e,update:t}}})}applyTemplate(e,t){const r=getProjectUrl(__classPrivateFieldGet(this,_AltostraProjectsManager_endpoint,"f"),e)+"/apply-template",i={template:t};return this._request({request:e=>__awaiter(this,void 0,void 0,(function*(){return yield e.post(r,i,{headers:yield this._getHeaders()})})),dataValidation:Types_1.isApplyTemplateResponse,errorWrapping:{}})}}function getProjectUrl(e,t){const r=e+"/projects";return t?r+Url_1.asUrl`/${t}`:r}function isAxiosError(e){return(0,Object_1.isObject)(e)&&!!e.isAxiosError}exports.AltostraProjectsManager=AltostraProjectsManager,_AltostraProjectsManager_endpoint=new WeakMap;