@altostra/core
Version:
Core library for shared types and logic
1 lines • 2.61 kB
JavaScript
;var __awaiter=this&&this.__awaiter||function(t,e,i,r){return new(i||(i=Promise))((function(o,s){function a(t){try{u(r.next(t))}catch(t){s(t)}}function n(t){try{u(r.throw(t))}catch(t){s(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(a,n)}u((r=r.apply(t,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GithubTemplatesProvider=void 0;const ISODate_1=require("../../../common/CustomTypes/ISODate"),AltoError_1=require("../../../common/Errors/AltoError"),Name_1=require("../../../common/Models/Name"),GitHubGitHost_1=require("../../../git-host/GitHubGitHost"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),filter_1=require("@reactivex/ix-es2015-cjs/iterable/operators/filter"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),AltoEnvVars_1=require("../../AltoEnvVars"),Types_1=require("../../GitHubAppInstallation/Types"),TemplatesProvider_1=require("../TemplatesProvider"),Common_1=require("./Common"),GithubTemplate_1=require("./GithubTemplate"),SOME_FAKE_ID=123;class GithubTemplatesProvider extends TemplatesProvider_1.TemplatesProviderBase{constructor(t){super(Common_1.GITHUB_TEMPLATE_TYPE);const e=t instanceof GitHubGitHost_1.GitHubGitHost?t:null==t?void 0:t.github;let i=AltoEnvVars_1.environmentDefaults.templatesGithubAccount;t instanceof GitHubGitHost_1.GitHubGitHost||!(null==t?void 0:t.accountName)?(0,Name_1.isName)(AltoEnvVars_1.templatesGithubAccount)&&(i=AltoEnvVars_1.templatesGithubAccount):i=t.accountName,this._github=null!=e?e:new GitHubGitHost_1.GitHubGitHost({accountType:"organization",accountName:i,createdAt:(0,ISODate_1.isoDate)(),id:(0,Types_1.ghInstallationId)(123)})}list(){return __awaiter(this,void 0,void 0,(function*(){const t=[...(0,from_1.from)(yield this._github.listRepositories()).pipe((0,filter_1.filter)(t=>t.startsWith(Common_1.TEMPLATE_REPO_PREFIX)&&t.length>Common_1.TEMPLATE_REPO_PREFIX.length),(0,map_1.map)(t=>t.substring(Common_1.TEMPLATE_REPO_PREFIX.length)))];return this._templates=new Set(t),t}))}get(t){return __awaiter(this,void 0,void 0,(function*(){return yield this._validateTemplateExistence(t),new GithubTemplate_1.GithubTemplate(t,this,()=>this._github)}))}_validateTemplateExistence(t){return __awaiter(this,void 0,void 0,(function*(){if(this._templates||(yield this.list()),!this._templates.has(t))throw AltoError_1.AltoError.create({message:`Could not find template repository for [${t}]`,data:{missingTemplate:t,existingTemplates:[...this._templates]}})}))}}exports.GithubTemplatesProvider=GithubTemplatesProvider;