@altostra/core
Version:
Core library for shared types and logic
1 lines • 9.65 kB
JavaScript
"use strict";var _CodeCommitGitHost_instances,_CodeCommitGitHost_baseURL,_CodeCommitGitHost_logger,_CodeCommitGitHost_axios,_CodeCommitGitHost_utilsInit,_CodeCommitGitHost_route,_CodeCommitGitHost_request,__awaiter=this&&this.__awaiter||function(t,e,i,o){return new(i||(i=Promise))((function(s,r){function a(t){try{_(o.next(t))}catch(t){r(t)}}function n(t){try{_(o.throw(t))}catch(t){r(t)}}function _(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(a,n)}_((o=o.apply(t,e||[])).next())}))},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(t,e,i,o,s){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?s.call(t,i):s?s.value=i:e.set(t,i),i},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(t,e,i,o){if("a"===i&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?o:"a"===i?o.call(t):o?o.value:e.get(t)},__rest=this&&this.__rest||function(t,e){var i={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(i[o]=t[o]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(o=Object.getOwnPropertySymbols(t);s<o.length;s++)e.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(t,o[s])&&(i[o[s]]=t[o[s]])}return i},__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CodeCommitGitHost=void 0;const Errors_1=require("../../common/Errors"),Logging_1=require("../../common/Logging"),Utils_1=require("../../common/Utils"),Object_1=require("../../common/Utils/Object"),Url_1=require("../../common/Utils/Url"),type_validations_1=require("@altostra/type-validations"),primitives_1=require("@altostra/type-validations/lib/primitives"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),axios_1=__importDefault(require("axios")),CodeCommit_1=require("../git-utils/CodeCommit"),Types_1=require("../Types"),common_1=require("./common");class CodeCommitGitHost extends CodeCommit_1.CodeCommitGitUtils{constructor({endpoint:t,serviceAuth:[e,i],organizationId:o,teamName:s,region:r,awsAccountId:a,logger:n=(0,Logging_1.nullLogger)(),axios:_=axios_1.default.create()}){var m;const d={organizationId:o,teamName:s,region:r};super(d),_CodeCommitGitHost_instances.add(this),_CodeCommitGitHost_baseURL.set(this,void 0),_CodeCommitGitHost_logger.set(this,void 0),_CodeCommitGitHost_axios.set(this,void 0),_CodeCommitGitHost_utilsInit.set(this,void 0),__classPrivateFieldSet(this,_CodeCommitGitHost_baseURL,baseUrl(t,o,a,r),"f"),__classPrivateFieldSet(this,_CodeCommitGitHost_utilsInit,d,"f"),__classPrivateFieldSet(this,_CodeCommitGitHost_axios,_,"f"),__classPrivateFieldSet(this,_CodeCommitGitHost_logger,n.appendSource("CodeCommitGitHost"),"f"),__classPrivateFieldGet(this,_CodeCommitGitHost_logger,"f").appendMetadata({organizationId:o,awsAccountId:a}),__classPrivateFieldGet(this,_CodeCommitGitHost_axios,"f").defaults.headers=Object.assign(null!==(m=__classPrivateFieldGet(this,_CodeCommitGitHost_axios,"f").defaults.headers)&&void 0!==m?m:{},{[e]:i})}getHeadSha(t,e){return __awaiter(this,void 0,void 0,(function*(){const i=e?__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`head-sha/${t}?${common_1.QUERY_PARAM_BRANCH}=${e}`:__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`head-sha/${t}`,{sha:o}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isHeadSHAResponse,request:t=>t.get(i)});return o}))}createRepository(t){return __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:Types_1.isCreateRepoResult,request:e=>e.post(__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`create-repository`,t)})}commitFiles(t){var{filesToCommit:e}=t,i=__rest(t,["filesToCommit"]);return __awaiter(this,void 0,void 0,(function*(){if(0===Object.keys(e).length)throw Errors_1.UserFacingError.create("UserFacingError: Commit must include some files.\nCodeCommit does not support empty commits.",{category:"user-fault",type:"empty-commit"});const t=Object.assign(Object.assign({},i),{filesToCommit:(0,Object_1.fromEntries)((0,from_1.from)(Object.entries(e)).pipe((0,map_1.map)(([t,e])=>[t,null==e?void 0:e.toString("base64")])))}),{sha:o}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isCommitFilesResponse,request:e=>e.post(__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`commit-files`,t)});return o}))}listRepositories(t){return __awaiter(this,void 0,void 0,(function*(){const e=t?__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`list-repositories?filter=${t}`:__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`list-repositories`,{repositories:i}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isListRepositoriesResponse,request:t=>t.get(e)});return i}))}downloadFile(t,e){return __awaiter(this,void 0,void 0,(function*(){const i=e.replace(/[^\w\d/-]/g,t=>encodeURIComponent(t)),{content:o}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isDownloadFileResponse,request:e=>e.get(__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`download-file/${t}/${(0,Url_1.urlLiteral)(i)}`)});return Buffer.from(o,"base64")}))}downloadRepo(t){return __awaiter(this,void 0,void 0,(function*(){throw Errors_1.AltoError.create("Not implemented")}))}createBranch(t,e){return __awaiter(this,void 0,void 0,(function*(){const i={repository:t,branch:e};if(!(0,common_1.isCreateBranchRequest)(i))throw Errors_1.UserFacingError.create("Repository and branch must be non empty strings",{category:"user-fault",type:"invalid-create-branch-params",data:i});yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:primitives_1.any,request:t=>t.post(__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`create-branch`,i)})}))}createPullRequest(t){return __awaiter(this,void 0,void 0,(function*(){const{url:e}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isCreatePullRequestResponse,request:e=>e.post(__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`create-pull-request`,t)});return e}))}getDefaultBranch(t){return __awaiter(this,void 0,void 0,(function*(){const{branch:e}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isGetDefaultBranchResponse,request:e=>e.get(__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`default-branch/${t}`)});return e}))}listFiles(t,{extFilter:e,path:i}={}){return __awaiter(this,void 0,void 0,(function*(){const o=function(){if(!e||0===e.length)return;return(Array.isArray(e)?e:[e]).join(",")}();let s=__classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_route).bind(this)`list-files/${t}`;if(o||i){const t=new URLSearchParams;o&&t.append(common_1.QUERY_PARAM_FILTER,o),i&&t.append(common_1.QUERY_PARAM_PATH,i),s+="?"+t.toString()}const{files:r}=yield __classPrivateFieldGet(this,_CodeCommitGitHost_instances,"m",_CodeCommitGitHost_request).call(this,{validation:common_1.isListFilesResponse,request:t=>t.get(s)});return r}))}getGitUtilsInitialization(){return Object.assign({type:"code-commit"},__classPrivateFieldGet(this,_CodeCommitGitHost_utilsInit,"f"))}validateAuthentication(){return __awaiter(this,void 0,void 0,(function*(){}))}}function baseUrl(t,e,i,o){return new URL(Url_1.asUrl`/${e}/${i}/${o}/`,t)}exports.CodeCommitGitHost=CodeCommitGitHost,_CodeCommitGitHost_baseURL=new WeakMap,_CodeCommitGitHost_logger=new WeakMap,_CodeCommitGitHost_axios=new WeakMap,_CodeCommitGitHost_utilsInit=new WeakMap,_CodeCommitGitHost_instances=new WeakSet,_CodeCommitGitHost_route=function(...t){return new URL((0,Url_1.asUrl)(...t),__classPrivateFieldGet(this,_CodeCommitGitHost_baseURL,"f")).toString()},_CodeCommitGitHost_request=function({request:t,validation:e}){return __awaiter(this,void 0,void 0,(function*(){try{const{data:i}=yield t(__classPrivateFieldGet(this,_CodeCommitGitHost_axios,"f")),o=(0,type_validations_1.createRejectionsCollector)();if(!e(i,o))throw Errors_1.UserFacingError.create("Invalid response from CodeCommit access service",{category:"server-fault",type:"invalid-response",data:{invalidData:i,rejections:o}});return i}catch(t){throw Errors_1.UserFacingError.wrapError(t,{category:"server-fault",type:"request-error",message:"Performing CodeCommit action failed. Please contact support",serializedGetter:Utils_1.axiosSerializedError})}}))};