@catladder/cli
Version:
Panter cli tool for cloud CI/CD and DevOps
1 lines โข 1.09 MB
JavaScript
(()=>{var __webpack_modules__={6057:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});const n=a(1);const r=a(5110);const i=a(5614);const s=a(8832);const o=a(241);t["default"]=async e=>{var t;const a=await(0,n.getProjectConfig)();if(!a){return}const p=(0,o.createCatenvContext)(a);await Promise.all([(0,o.generatePipelineFiles)(p,(t=a.pipelineType)!==null&&t!==void 0?t:"gitlab"),(0,i.writeDotEnvFiles)(p,e),(0,s.writeDTsFiles)(p,e),(0,r.printVariables)(p,e)])}},5110:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.printVariables=void 0;const n=a(1);const r=a(1909);const getAllVariablesToPrint=async(e,t)=>{var a;const{env:i,currentComponent:s}=await(0,r.getCurrentComponentAndEnvFromChoice)(e,t);if(s){if((a=e.components[s].dotEnv)!==null&&a!==void 0?a:true){return{}}return await(0,n.getEnvVarsResolved)(null,i,s)}else{return await Object.keys(e.components).reduce((async(t,a)=>{var s;if((s=e.components[a].dotEnv)!==null&&s!==void 0?s:true){return await t}const o=await(0,n.getEnvVarsResolved)(null,i,a);delete o["_ALL_ENV_VAR_KEYS"];return{...await t,...o,...Object.fromEntries(Object.entries(o).map((([e,t])=>[`${(0,r.sanitizeEnvVarName)(a.toUpperCase())}_${e}`,t])))}}),Promise.resolve({}))}};const printVariables=async(e,t)=>{const a=await getAllVariablesToPrint(e.config,t);console.log(makeExportKeyValuestring(a))};t.printVariables=printVariables;const makeExportKeyValuestring=e=>(0,r.makeKeyValueString)(e,{keyPrefix:"export ",escapeOptions:{quoteMode:"always"}})},1909:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.sanitizeEnvVarName=t.makeKeyValueString=t.getCurrentComponentAndEnvFromChoice=t.getComponentFullPath=void 0;const n=a(6928);const r=a(7414);const i=a(241);const getComponentFullPath=(e,t,a)=>(0,n.join)(e,t.components[a].dir);t.getComponentFullPath=getComponentFullPath;const getCurrentComponentName=async e=>{const a=await(0,r.getGitRoot)();const n=process.cwd();return Object.keys(e.components).find((r=>n.startsWith((0,t.getComponentFullPath)(a,e,r))))};const getCurrentComponentAndEnvFromChoice=async(e,t)=>{var a,n;const r=(a=t===null||t===void 0?void 0:t.env)!==null&&a!==void 0?a:"local";const i=(n=t===null||t===void 0?void 0:t.componentName)!==null&&n!==void 0?n:await getCurrentComponentName(e);return{currentComponent:i,env:r}};t.getCurrentComponentAndEnvFromChoice=getCurrentComponentAndEnvFromChoice;const makeKeyValueString=(e,{keyPrefix:t,escapeOptions:a}={keyPrefix:""})=>Object.entries(e).map((([e,n])=>`${t}${e}=${(0,i.escapeForDotEnv)(n,a)}`)).join("\n");t.makeKeyValueString=makeKeyValueString;const sanitizeEnvVarName=e=>e.replace(/[\s\-.]+/g,"_");t.sanitizeEnvVarName=sanitizeEnvVarName},5614:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.writeDotEnvFiles=void 0;const n=a(6928);const r=a(1);const i=a(7414);const s=a(1909);const writeDotEnvFiles=async(e,t)=>{const{env:a,currentComponent:o}=await(0,s.getCurrentComponentAndEnvFromChoice)(e.config,t);const p=Object.entries(e.config.components).filter((([,e])=>{var t;return(t=e===null||e===void 0?void 0:e.dotEnv)!==null&&t!==void 0?t:true})).map((([e])=>e));const d=o?p.includes(o)?[o]:[]:p;const l=await(0,i.getGitRoot)();for(const t of d){const i=await(0,r.getEnvVarsResolved)(null,a,t);delete i["_ALL_ENV_VAR_KEYS"];const o=(0,s.getComponentFullPath)(l,e.config,t);const p=(0,n.join)(o,".env");await e.fileWriter.writeGeneratedFile(p,(0,s.makeKeyValueString)(i),{commentChar:"#"})}};t.writeDotEnvFiles=writeDotEnvFiles},8832:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.writeDTsFiles=void 0;const n=a(6928);const r=a(1);const i=a(7414);const s=a(1909);const writeDTsFiles=async(e,t)=>{const{env:a,currentComponent:r}=await(0,s.getCurrentComponentAndEnvFromChoice)(e.config,t);const o=Object.entries(e.config.components).filter((([,e])=>{var t;return(t=e===null||e===void 0?void 0:e.envDTs)!==null&&t!==void 0?t:true})).map((([e])=>e));const p=r?o.includes(r)?[r]:[]:o;const d=await(0,i.getGitRoot)();for(const t of p){const r=await getEnvsForDTs(a,t);const i=createEnvDTsContent(r);const o=(0,s.getComponentFullPath)(d,e.config,t);const p=(0,n.join)(o,"env.d.ts");await e.fileWriter.writeGeneratedFile(p,i,{commentChar:"//"})}};t.writeDTsFiles=writeDTsFiles;async function getEnvsForDTs(e,t){const a=await(0,r.getEnvironment)(e,t);const n=Object.keys(a.envVars);const i=new Set(a.secretEnvVarKeys.filter((e=>e.hidden)).map((e=>e.key)).concat(["_ALL_ENV_VAR_KEYS"]));const s=n.filter((e=>!i.has(e)));return s}function createEnvDTsContent(e){return`/* tslint:disable prettier/prettier */\n/* eslint-disable prettier/prettier */\n/* prettier-ignore */\n\nexport {}\n\ndeclare global {\n namespace NodeJS {\n interface ProcessEnv {\n${e.map((e=>` ${e}: string`)).join("\n")}\n }\n }\n}\n`}},2994:function(e,t,a){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});const r=n(a(6057));const i=a(4272);const s=process.argv.slice(2);const o=["--help","-h","help"];if(s.some((e=>o.includes(e)))){const e="https://git.panter.ch/catladder/catladder/-/blob/main/docs/1_VARS.md";console.log(`\nUsage: catenv [env|env:component]\n\nEnv variable and catenv documentation:\n${e}`);process.exit(0)}(0,r.default)(s[0]?(0,i.parseChoice)(s[0]):null).then((()=>{process.exit()}))},1:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.getJobOnlyEnvVarsResolved=t.getEnvVarsResolved=t.getGitlabVar=t.getEnvironment=t.getAllPipelineContexts=t.getAllComponentsWithAllEnvsHierarchical=t.getAllComponentsWithAllEnvsFlat=t.getPipelineContextByChoice=t.getProjectComponents=t.getProjectConfig=t.parseChoice=void 0;const n=a(241);const r=a(4508);const i=a(7414);const s=a(9896);var o=a(4272);Object.defineProperty(t,"parseChoice",{enumerable:true,get:function(){return o.parseChoice}});let p=null;const reloadConfigAndObserve=async()=>{const e=await(0,i.getGitRoot)();if(!e){return}const t=await(0,n.readConfig)(e);if(!t){return}const{config:a,path:r}=t;const o=(0,s.watch)(r,(()=>{o.close();reloadConfigAndObserve()}));p=a};const getProjectConfig=async()=>{if(!p){await reloadConfigAndObserve()}return p};t.getProjectConfig=getProjectConfig;const getProjectComponents=async()=>{const e=await(0,t.getProjectConfig)();if(!e)return[];return Object.keys(e.components)};t.getProjectComponents=getProjectComponents;const getPipelineContextByChoice=async(e,a)=>{const r=await(0,t.getProjectConfig)();return await(0,n.createComponentContext)({config:r,componentName:a,env:e})};t.getPipelineContextByChoice=getPipelineContextByChoice;const getAllComponentsWithAllEnvsFlat=async()=>{const e=await(0,t.getProjectConfig)();if(!e){return[]}return getAllComponentsWithAllEnvsFlatFromConfig(e)};t.getAllComponentsWithAllEnvsFlat=getAllComponentsWithAllEnvsFlat;const getAllComponentsWithAllEnvsHierarchical=async()=>{const e=await(0,t.getProjectConfig)();if(!e){return{}}return Object.fromEntries(Object.keys(e.components).map((t=>[t,(0,n.getAllEnvs)(e,t)])))};t.getAllComponentsWithAllEnvsHierarchical=getAllComponentsWithAllEnvsHierarchical;const getAllPipelineContexts=async e=>{const a=e?Array.isArray(e)?e:[e]:null;return Promise.all((await(0,t.getAllComponentsWithAllEnvsFlat)()).filter((e=>e.env!=="local")).filter((e=>!a||a.includes(e.componentName))).map((({env:e,componentName:a})=>(0,t.getPipelineContextByChoice)(e,a))))};t.getAllPipelineContexts=getAllPipelineContexts;const getEnvironment=async(e,a)=>{const r=await(0,t.getProjectConfig)();return(0,n.getEnvironment)({config:r,componentName:a,env:e})};t.getEnvironment=getEnvironment;const getGitlabVar=async(e,t,a,i)=>{const s=(0,n.getSecretVarName)(t,a,i);return await(0,r.getVariableValueByRawName)(e,s)};t.getGitlabVar=getGitlabVar;const resolveSecrets=async(e,t)=>{const a=await(0,r.getAllVariables)(e);return Object.fromEntries(t.flatMap((({envVars:e,secretEnvVarKeys:t})=>Object.entries(e).filter((([e,a])=>{var n;return a!==undefined&&a!==null&&!((n=t.find((t=>t.key===e)))===null||n===void 0?void 0:n.hidden)})).map((([e,t])=>[e,a.reduce(((e,t)=>e.replace(new RegExp("\\$"+t.key,"g"),t.value)),`${t}`)])))))};const getEnvVarsResolved=async(e,a,n)=>{if(!n){return{}}const r=await(0,t.getEnvironment)(a,n);return resolveSecrets(e,[{envVars:r.envVars,secretEnvVarKeys:r.secretEnvVarKeys}])};t.getEnvVarsResolved=getEnvVarsResolved;const getJobOnlyEnvVarsResolved=async(e,a,n)=>{const r=await(0,t.getEnvironment)(a,n);return resolveSecrets(e,[r.jobOnlyVars.build,r.jobOnlyVars.deploy])};t.getJobOnlyEnvVarsResolved=getJobOnlyEnvVarsResolved;function getAllComponentsWithAllEnvsFlatFromConfig(e){return Object.keys(e.components).flatMap((t=>(0,n.getAllEnvs)(e,t).map((e=>({env:e,componentName:t})))))}},4272:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.parseChoice=void 0;const parseChoice=e=>{const[t,a]=e.split(":").map((e=>e||null));return{env:t,componentName:a}};t.parseChoice=parseChoice},6636:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.gitConfigSet=t.gitConfigGet=void 0;const n=a(1748);const argsJoin=e=>e.filter(Boolean).join(" ");async function gitConfigGet(e,{location:t}={}){const{stdout:a}=await(0,n.exec)(`git config --get ${argsJoin([t?`--${t}`:undefined])} ${e}`);return a.trim()}t.gitConfigGet=gitConfigGet;const gitConfigSet=(e,t,{location:a,comment:r}={})=>(0,n.exec)(`git config --set ${argsJoin([a?`--${a}`:undefined,r?`--comment=${r}`:undefined])} ${e} ${t}`);t.gitConfigSet=gitConfigSet},1111:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.gitProjectInformation=t.getGitRemoteHostAndPath=t.getProjectRootPath=void 0;const n=a(6636);const r=a(1748);const getProjectRootPath=async()=>{const{stdout:e}=await(0,r.exec)(`git rev-parse --show-toplevel`);return e.trim()};t.getProjectRootPath=getProjectRootPath;const getGitRemoteHostAndPath=async()=>{var e;const t=await(0,n.gitConfigGet)("remote.origin.url");const a=/(https:\/\/|git@)([^:/]+)[:/]([^.]*)(\.git)?/;const r=(e=t.match(a))!==null&&e!==void 0?e:[];const[,,i,s]=r;if(!(i===null||i===void 0?void 0:i.length)||!(s===null||s===void 0?void 0:s.length)){throw new Error(`Failed to parse git remote hostname and path from git configs remote.origin.url! ${t}`)}return{gitRemoteHost:i,gitRemotePath:s}};t.getGitRemoteHostAndPath=getGitRemoteHostAndPath;const gitProjectInformation=async()=>{const[{gitRemoteHost:e,gitRemotePath:a},n]=await Promise.all([(0,t.getGitRemoteHostAndPath)(),(0,t.getProjectRootPath)()]);return{gitRemoteHost:e,gitRemotePath:a,projectRootPath:n}};t.gitProjectInformation=gitProjectInformation},6172:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.readFileOrError=void 0;const n=a(6954);const readFile=e=>(0,n.readFile)(e,{encoding:"utf-8"});const readFileOrError=async e=>{try{const t=await readFile(e);return[null,t]}catch(e){return[e]}};t.readFileOrError=readFileOrError},4508:function(e,t,a){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.upsertAllVariables=t.clearBackups=t.getVariableValueByRawName=t.getAllVariables=t.getProjectInfo=t.doGitlabRequest=t.getGitlabToken=t.setupGitlabToken=t.hasGitlabToken=void 0;const r=a(241);const i=a(9250);const s=n(a(7009));const o=n(a(1479));const p=n(a(5186));const d=a(6261);const l=a(1111);const c="gitlab-personal-access-token";const hasGitlabToken=async()=>await(0,d.hasPreference)(c);t.hasGitlabToken=hasGitlabToken;const setupGitlabToken=async e=>{e.log("");e.log("โ in order to access the api, we need a personal access token");e.log("Its best to create one specifically for catladder");e.log("Scopes needed: api");e.log("");e.log("โ we open up the settings page for you!");e.log("");const[{shouldContinue:t},{gitRemoteHost:a}]=await Promise.all([e.prompt({default:true,message:"Ok",name:"shouldContinue",type:"prompt"}),(0,l.getGitRemoteHostAndPath)()]);(0,p.default)(`https://${a}/-/user_settings/personal_access_tokens`);e.log("Please type in gitlab's personal access token");const{personalToken:n}=await e.prompt({type:"string",name:"personalToken",default:"",message:"Your personal access token "});if(n){await(0,d.setPreference)(c,n)}};t.setupGitlabToken=setupGitlabToken;const getGitlabToken=async e=>{if(!await(0,t.hasGitlabToken)()){if(!e){console.error("โ ๏ธ gitlab token missing, please run catladder to set it up");process.exit(1)}await(0,t.setupGitlabToken)(e)}return(0,d.getPreference)(c)};t.getGitlabToken=getGitlabToken;const doGitlabRequest=async(e,a,n=undefined,r="GET")=>{const[i,{gitRemoteHost:s}]=await Promise.all([(0,t.getGitlabToken)(e),(0,l.getGitRemoteHostAndPath)()]);const p=await(0,o.default)(`https://${s}/api/v4/${a}`,{method:r,headers:{"Content-Type":"application/json","Private-Token":i},body:n?JSON.stringify(n):undefined});if(p.status>=200&&p.status<400){if(p.headers.get("content-type")==="application/json"){return p.json()}return null}if(p.status===404){throw new Error("not found")}throw new Error(`Could not send request to gitlab api ${a}: ${p.status} "${p.statusText}".\nResponse: ${JSON.stringify(await p.json(),null,2)}`)};t.doGitlabRequest=doGitlabRequest;const getProjectInfo=async e=>{const{gitRemotePath:a}=await(0,l.getGitRemoteHostAndPath)();const n=await(0,t.doGitlabRequest)(e,`projects/${encodeURIComponent(a)}`);return n};t.getProjectInfo=getProjectInfo;t.getAllVariables=(0,s.default)((async(e,a=5)=>{const{id:n}=await(0,t.getProjectInfo)(e);let r=[];let i=[];let s=1;do{const o=Array.from({length:a},((a,r)=>(0,t.doGitlabRequest)(e,`projects/${n}/variables?per_page=100&page=${s+r}`)));i=await Promise.all(o);s+=a;r=[...r,...i.flat()]}while(i.length>0&&i[i.length-1].length>0);return r}),{promise:true});const getVariableValueByRawName=async(e,a)=>{var n;const r=await(0,t.getAllVariables)(e);return(n=r.find((e=>e.key===a)))===null||n===void 0?void 0:n.value};t.getVariableValueByRawName=getVariableValueByRawName;const u=new RegExp("^[a-zA-Z0-9_+=/@:.~-]{8,}$");const isMaskable=e=>u.test(e);const createVariable=async(e,a,n,r,i=true,s="*")=>await(0,t.doGitlabRequest)(e,`projects/${a}/variables`,{key:n,value:r,masked:i&&isMaskable(r),environment_scope:s},"POST");const updateVariable=async(e,a,n,r,i=true)=>await(0,t.doGitlabRequest)(e,`projects/${a}/variables/${n}`,{value:r,masked:i&&isMaskable(r)},"PUT");const deleteVariable=async(e,a,n)=>await(0,t.doGitlabRequest)(e,`projects/${a}/variables/${n}`,undefined,"DELETE");const getAllCatladderEnvVarsInGitlab=async e=>{const a=await(0,t.getAllVariables)(e).then((e=>e.reduce(((e,t)=>{var a,n,r,i;const{key:s}=t;if(s.startsWith("CL_")){const o=s.match(/(CL_.*)_backup_([0-9]+)/);if(o){const t=o[1];const i=Number(o[2]);const s=[...(n=(a=e[t])===null||a===void 0?void 0:a.backups)!==null&&n!==void 0?n:[],i];return{...e,[t]:{...(r=e[t])!==null&&r!==void 0?r:{},backups:s}}}return{...e,[s]:{backups:[],...(i=e[s])!==null&&i!==void 0?i:{},value:t.value}}}return e}),{})));return a};const getBackupKey=(e,t)=>`${e}_backup_${t}`;const clearBackups=async(e,a)=>{const n=await getAllCatladderEnvVarsInGitlab(e);const{id:r}=await(0,t.getProjectInfo)(e);for(const[t,{backups:i}]of Object.entries(n)){const n=i.sort(((e,t)=>t-e));const s=n.slice(a);for(const a of s){await deleteVariable(e,r,getBackupKey(t,a))}}};t.clearBackups=clearBackups;const upsertAllVariables=async(e,a,n,s,o=true,p=true)=>{var d;const{id:l}=await(0,t.getProjectInfo)(e);const c=await getAllCatladderEnvVarsInGitlab(e);for(const[t,u]of Object.entries(a!==null&&a!==void 0?a:{})){const a=(0,r.getSecretVarName)(n,s,t);const f=(0,i.isObject)(u)?JSON.stringify(u):`${u}`;const m=(0,i.has)(c,a);const h=(d=c[a])===null||d===void 0?void 0:d.value;const v=h!==f;if(v){if(m){e.log(`changed: ${t}`);await updateVariable(e,l,a,f,p);if(o){await createVariable(e,l,getBackupKey(a,(new Date).getTime()),h,p,"_backup")}}else{e.log(`new : ${t}`);await createVariable(e,l,a,f,p)}}else{e.log(`skip : ${t}`)}}t.getAllVariables.clear()};t.upsertAllVariables=upsertAllVariables},6261:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.setPreference=t.getPreference=t.hasPreference=t.getPreferences=void 0;const n=a(1943);const r=a(9896);const i=a(6928);const s=a(857);const o=a(6637);const p=(0,i.join)((0,s.homedir)(),".catladder/preferences.yml");const d=(0,i.join)((0,s.homedir)(),".config/catladder/preferences.yml");const ensurePreferencesFile=async()=>{if((0,r.existsSync)(d)){return}await(0,n.mkdir)((0,i.dirname)(d),{recursive:true,mode:448});if(!(0,r.existsSync)(p)){return(0,n.writeFile)(d,"---\n{}",{encoding:"utf-8",mode:384})}await(0,n.cp)(p,d);await(0,n.chmod)(d,384);await(0,n.cp)(d,(0,i.join)((0,i.dirname)(d),"old_preferences_backup.yml"))};const loadPreferences=async()=>{await ensurePreferencesFile();return(0,n.readFile)(d,{encoding:"utf-8"})};const getPreferences=async()=>{var e;const t=await loadPreferences();return(e=(0,o.parse)(t))!==null&&e!==void 0?e:{}};t.getPreferences=getPreferences;const hasPreference=async e=>{const a=await(0,t.getPreferences)();return e in a};t.hasPreference=hasPreference;const getPreference=async e=>{const a=await(0,t.getPreferences)();return a[e]};t.getPreference=getPreference;const setPreference=async(e,a)=>{const r=await(0,t.getPreferences)();const i={...r,[e]:a};await(0,n.writeFile)(d,(0,o.stringify)(i),{encoding:"utf-8",mode:384})};t.setPreference=setPreference},7414:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.getProjectNamespace=t.hasGitlabCiFile=t.readRootGitlabCiFile=t.getRootGitlabCiFile=t.getGitRoot=void 0;const n=a(6928);const r=a(1);const i=a(6172);const s=a(1748);const getGitRoot=async()=>{try{return(await(0,s.exec)(`git rev-parse --show-toplevel`)).stdout.trim()}catch(e){return null}};t.getGitRoot=getGitRoot;const getRootGitlabCiFile=async()=>{const e=await(0,t.getGitRoot)();return(0,n.join)(e,".gitlab-ci.yml")};t.getRootGitlabCiFile=getRootGitlabCiFile;const readRootGitlabCiFile=async()=>(0,i.readFileOrError)(await(0,t.getRootGitlabCiFile)());t.readRootGitlabCiFile=readRootGitlabCiFile;const hasGitlabCiFile=async()=>{const[e,a]=await(0,t.readRootGitlabCiFile)();if(e){return false}return true};t.hasGitlabCiFile=hasGitlabCiFile;const getProjectNamespace=async e=>{const{env:t}=(0,r.parseChoice)(e);const a=await(0,r.getProjectConfig)();return`${a.customerName}-${a.appName}-${t}`};t.getProjectNamespace=getProjectNamespace},5354:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.joinBashExpressions=t.getBashVariable=t.BashExpression=void 0;class BashExpression{constructor(e){this.value=e}toJSON(){return this.toString()}toString(){return this.value.toString()}replace(e,t){return new BashExpression(this.value.toString().replace(e,t))}toLowerCase(){return this.transformWithCommand("awk '{print tolower($0)}'")}concat(...e){return new BashExpression(this.toString().concat(...e.map((e=>e.toString()))))}transformWithCommand(e){return new BashExpression(`$(printf %s "${this.toString()}" | ${e})`)}}t.BashExpression=BashExpression;const getBashVariable=e=>new BashExpression(`$${e}`);t.getBashVariable=getBashVariable;const joinBashExpressions=(e,t="")=>{const a=e.some((e=>e instanceof BashExpression));if(a){return new BashExpression(e.map((e=>e instanceof BashExpression?e.toString():e)).join(t))}else{return e.join(t)}};t.joinBashExpressions=joinBashExpressions},8127:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.escapeForDotEnv=t.escapeNewlines=t.escapeBackTicks=t.escapeSingleQuotes=t.escapeDoubleQuotes=t.escapeBashExpression=t.escapeString=t.bashEscape=void 0;const n=a(3891);const r=a(4396);const i=a(5354);const bashEscape=(e,a={quotes:"double"})=>{if(e instanceof i.BashExpression){return(0,t.escapeBashExpression)(e,a)}if(e instanceof r.VariableValueContainingReferences){return e.toString(a)}return(0,t.escapeString)(e,a)};t.bashEscape=bashEscape;const escapeString=(e,{quotes:a}={quotes:"double"})=>{const n=a?a==="single"?(0,t.escapeSingleQuotes)(e):(0,t.escapeDoubleQuotes)(e):e;return n};t.escapeString=escapeString;const escapeBashExpression=(e,t)=>e;t.escapeBashExpression=escapeBashExpression;const escapeDoubleQuotes=e=>e===null||e===void 0?void 0:e.toString().replace(/"/g,'\\"');t.escapeDoubleQuotes=escapeDoubleQuotes;const escapeSingleQuotes=e=>e===null||e===void 0?void 0:e.toString().replace(/'/g,"\\'");t.escapeSingleQuotes=escapeSingleQuotes;const escapeBackTicks=e=>e===null||e===void 0?void 0:e.toString().replace(/`/g,"\\`");t.escapeBackTicks=escapeBackTicks;const escapeNewlines=e=>e===null||e===void 0?void 0:e.toString().replace(/\n/g,"\\n");t.escapeNewlines=escapeNewlines;const escapeForDotEnv=(e,a={quoteMode:"auto"})=>{if(e===undefined||e===null){return""}if(typeof e==="string"){if(a.quoteMode==="always"||e.includes("\n")){const t=e.replace(/\n/g,"\\n");const a=e.includes(`"`)?e.includes(`'`)?e.includes("`")?'"':"`":"'":'"';return`${a}${t}${a}`}else{return e}}else if(e instanceof i.BashExpression){return escapeBashExpressionForDotEnv(e)}else if(e instanceof r.VariableValueContainingReferences){const a=e.parts.some((e=>e instanceof i.BashExpression));if(!a){return(0,t.escapeForDotEnv)(e.toString({quotes:"double"}))}else{const t=escapeBashExpressionForDotEnv(new i.BashExpression(e.toString({quotes:"double"})));return t}}else{return e}};t.escapeForDotEnv=escapeForDotEnv;const s=(0,n.registerGlobalScriptFunction)("escapeForDotEnv",`\n input="\${1:-$(cat)}"\n input="\${input//$'\\n'/\\\\n}"\n if [[ "$input" == *\\\\n* ]]; then\n if [[ "$input" == *\\"* && "$input" == *\\'* && "$input" == *\\\`* ]]; then\n printf "\\"%s\\"\\n" "$input" ${""}\n elif [[ "$input" == *\\"* && "$input" == *\\'* ]]; then\n printf "\`%s\`\\n" "$input"\n elif [[ "$input" == *\\"* ]]; then\n printf "'%s'\\n" "$input"\n else\n printf "\\"%s\\"\\n" "$input"\n fi\n else\n printf "%s\\n" "$input"\n fi\n `);const escapeBashExpressionForDotEnv=e=>e.transformWithCommand(s.name).toString()},1945:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.getBashExpressionPerPipelineType=void 0;const getBashExpressionPerPipelineType=(e,t)=>{if(!t)return e.default;return e[t]||e.default};t.getBashExpressionPerPipelineType=getBashExpressionPerPipelineType},5103:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.writeBashYamlToFileScript=t.yamlBashString=void 0;const n=a(6637);const r=a(5354);const i=a(4396);const s={tag:"",resolve:e=>new r.BashExpression(e),stringify(e,t){return"|-\n"+t.indent+indentNewlinesInBashExpression(e.value,t.indent)},identify:e=>e instanceof r.BashExpression};const indentNewlinesInBashExpression=(e,t)=>e.transformWithCommand(`sed '1!s/^/${t}/'`);const o={tag:"",resolve:e=>new i.VariableValueContainingReferences(e),stringify(e,t){const a=e.value;const n=a.parts.map((e=>e instanceof r.BashExpression?indentNewlinesInBashExpression(e,t.indent):e.toString().replace(/\n/g,`\n${t.indent}`))).join("");return"|-\n"+t.indent+n},identify:e=>e instanceof i.VariableValueContainingReferences};const yamlBashString=e=>(0,n.stringify)(e,{defaultStringType:"BLOCK_LITERAL",defaultKeyType:"PLAIN",customTags:[s,o],aliasDuplicateObjects:false,lineWidth:0});t.yamlBashString=yamlBashString;const writeBashYamlToFileScript=(e,a)=>[`cat > ${a} <<EOF\n${(0,t.yamlBashString)(e)}\nEOF\n`];t.writeBashYamlToFileScript=writeBashYamlToFileScript},436:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.getInjectVarsScript=void 0;const n=a(9250);const r=a(8127);const getInjectVarsScript=e=>{if(!e)return[];return Object.entries(e).filter((([,e])=>!(0,n.isNil)(e))).map((([e,t])=>`export ${e}="${t?(0,r.bashEscape)(t,{quotes:"double"}):""}"`))};t.getInjectVarsScript=getInjectVarsScript},8016:function(e,t,a){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){if(n===undefined)n=a;var r=Object.getOwnPropertyDescriptor(t,a);if(!r||("get"in r?!t.__esModule:r.writable||r.configurable)){r={enumerable:true,get:function(){return t[a]}}}Object.defineProperty(e,n,r)}:function(e,t,a,n){if(n===undefined)n=a;e[n]=t[a]});var r=this&&this.__exportStar||function(e,t){for(var a in e)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(t,a))n(t,e,a)};Object.defineProperty(t,"__esModule",{value:true});r(a(8127),t);r(a(5354),t)},7677:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createBuildJobArtifacts=void 0;const n=a(6928);const r=a(5063);const i=a(9250);const s=a(7652);const createBuildJobArtifacts=e=>{var t,a;const s=e.type==="workspace"?e.components.flatMap((e=>getArtifactsPathForComponent(e))):getArtifactsPathForComponent(e,["__build_info.json"]);const o=e.type==="workspace"?e.components.flatMap((e=>getAllArtifactExcludePathsForComponent(e))):getAllArtifactExcludePathsForComponent(e);return{paths:(0,i.uniq)(s).sort(((e,t)=>e.localeCompare(t))),...o.length>0?{exclude:o}:{},expire_in:"1 day",when:"always",reports:e.type==="component"&&(0,r.componentContextIsStandaloneBuild)(e)?{junit:(a=(t=e.build.config.artifactsReports)===null||t===void 0?void 0:t.junit)===null||a===void 0?void 0:a.map((t=>(0,n.join)(e.build.dir,t)))}:{}}};t.createBuildJobArtifacts=createBuildJobArtifacts;const _getArtifactPathsForComponent=(e,t,a)=>{var r,i;return(i=[...e.build.type!=="disabled"?(r=e.build.config[t])!==null&&r!==void 0?r:[]:[],...a!==null&&a!==void 0?a:[]])===null||i===void 0?void 0:i.flatMap((t=>e.build.getComponentDirs("all").flatMap((e=>(0,n.join)(e,t)))))};const getArtifactsPathForComponent=(e,t)=>_getArtifactPathsForComponent(e,"artifactsPaths",t);const getAllArtifactExcludePathsForComponent=e=>[...getDotEnvPathsForComponent(e),...getArtifactExcludePathsForComponent(e)];const getArtifactExcludePathsForComponent=(e,t)=>_getArtifactPathsForComponent(e,"artifactsExcludePaths",t);const getDotEnvPathsForComponent=e=>{if((0,s.componentContextNeedsBuildTimeDotEnv)(e)){return[(0,n.join)(e.build.dir,".env")]}return[]}},2727:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.RUNNER_BUILD_RESOURCE_VARIABLES=t.APP_BUILD_JOB_NAME=void 0;t.APP_BUILD_JOB_NAME="๐จ app";t.RUNNER_BUILD_RESOURCE_VARIABLES={KUBERNETES_CPU_REQUEST:"0.45",KUBERNETES_MEMORY_REQUEST:"1Gi",KUBERNETES_MEMORY_LIMIT:"4Gi"}},1950:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createAppBuildJob=void 0;const n=a(9250);const r=a(241);const i=a(595);const s=a(7677);const o=a(5644);const p=a(8897);const d=a(2727);const l=a(2877);const c=a(7652);const createAppBuildJob=(e,{script:t,variables:a,runnerVariables:u,cache:f,...m})=>{var h;return(0,n.merge)({name:d.APP_BUILD_JOB_NAME,envMode:"jobPerEnv",stage:"build",image:(0,r.getRunnerImage)("jobs-default"),needs:[],cache:f?(0,o.createJobCacheFromCacheConfigs)(e,f):undefined,variables:{...a!==null&&a!==void 0?a:{},...e.type==="component"?{...e.environment.envVars,...e.environment.jobOnlyVars.build.envVars}:{}},runnerVariables:{...d.RUNNER_BUILD_RESOURCE_VARIABLES,...u!==null&&u!==void 0?u:{},...(h=e.build.config.runnerVariables)!==null&&h!==void 0?h:{}},script:[...e.type==="component"?(0,c.componentContextNeedsBuildTimeDotEnv)(e)?(0,c.writeDotEnv)(e):[]:e.type==="workspace"?e.components.filter((e=>(0,c.componentContextNeedsBuildTimeDotEnv)(e))).flatMap((e=>(0,c.writeDotEnv)(e))):[],...e.type==="component"?(0,l.writeBuildInfo)(e):[],...(0,p.ensureNodeVersion)(e),`cd ${e.build.dir}`,...(0,i.ensureArray)(t)],artifacts:(0,s.createBuildJobArtifacts)(e)},m)};t.createAppBuildJob=createAppBuildJob},3983:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createArtifactsConfig=void 0;const n=a(6928);const createArtifactsConfig=(e,t,a)=>{var r,i,s,o;return t||a?{artifacts:{paths:[],...a,reports:{...a===null||a===void 0?void 0:a.reports,junit:[t===null||t===void 0?void 0:t.junit,Array.isArray((r=a===null||a===void 0?void 0:a.reports)===null||r===void 0?void 0:r.junit)&&((i=a===null||a===void 0?void 0:a.reports)===null||i===void 0?void 0:i.junit),typeof((s=a===null||a===void 0?void 0:a.reports)===null||s===void 0?void 0:s.junit)==="string"&&[(o=a===null||a===void 0?void 0:a.reports)===null||o===void 0?void 0:o.junit]].filter(Array.isArray).reduce(((t,a)=>[...t,...a.map((t=>(0,n.join)(e,t)))]),[])}}}:undefined};t.createArtifactsConfig=createArtifactsConfig},6254:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createBuildJobDefinition=void 0;const n=a(2348);const r=a(595);const i=a(1255);const s=a(5497);const createBuildJobDefinition=(e,t,a={})=>{var o,p,d,l;if(t.buildCommand===null)return undefined;const c=(0,n.getRunnerImage)("jobs-default");return{image:(o=t.jobImage)!==null&&o!==void 0?o:c,runnerVariables:s.NODE_RUNNER_BUILD_VARIABLES,cache:[...(p=a.cache)!==null&&p!==void 0?p:[],...(0,i.getAllCacheConfigsFromConfig)(e,t)],services:"jobServices"in t?t.jobServices:undefined,script:[...(d=a.prescript)!==null&&d!==void 0?d:[],...(0,r.ensureArray)(t.buildCommand),...(l=a.postscript)!==null&&l!==void 0?l:[]],jobTags:t.jobTags}};t.createBuildJobDefinition=createBuildJobDefinition},8121:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createWorkspaceBuildJobs=t.createComponentBuildJobs=void 0;const n=a(9256);const r=a(3660);const i=a(2764);const s=a(4713);const o=a(2727);const p=a(1950);const createComponentBuildJobs=(e,t)=>{var a;return[...t.appBuild&&(0,r.componentContextIsStandaloneBuild)(e)?[(0,p.createAppBuildJob)(e,t.appBuild)]:[],...(0,i.requiresDockerBuild)(e)?[(0,i.createDockerBuildJobBase)(e,{...t.dockerBuild,needs:[...(a=t.dockerBuild.needs)!==null&&a!==void 0?a:[],...t.appBuild&&(0,r.componentContextIsStandaloneBuild)(e)?[o.APP_BUILD_JOB_NAME]:(0,r.componentContextHasWorkspaceBuild)(e)?[{job:o.APP_BUILD_JOB_NAME,artifacts:true,workspaceName:e.build.workspaceName}]:[]]})]:[],...(0,n.sbomDeactivated)(e)?[]:[(0,s.createSbomBuildJob)(e)]]};t.createComponentBuildJobs=createComponentBuildJobs;const createWorkspaceBuildJobs=(e,t)=>t.appBuild?[(0,p.createAppBuildJob)(e,t.appBuild)]:[];t.createWorkspaceBuildJobs=createWorkspaceBuildJobs},2877:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.writeBuildInfo=void 0;const writeBuildInfo=e=>[`echo '{"id":"${e.environment.envVars.BUILD_INFO_BUILD_ID}","time":"${e.environment.envVars.BUILD_INFO_BUILD_TIME}"}' > ${e.build.dir}/__build_info.json`];t.writeBuildInfo=writeBuildInfo},7652:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.componentContextNeedsBuildTimeDotEnv=t.writeDotEnv=void 0;const n=a(9250);const r=a(8127);const i=a(52);const s=a(3468);const writeDotEnv=e=>{const t=e.environment.envVars;const a=Object.entries(t).filter((([,e])=>!(0,n.isNil)(e))).filter((([e])=>!i.ALL_BUILD_VARIABLES.includes(e))).map((([e,t])=>`${e}=${(0,r.escapeForDotEnv)(t)}`)).join("\n");return(0,s.collapseableSection)("write-dotenv-"+e.name,"write dot env for "+e.name)([`cat <<EOF > ${e.build.dir}/.env\n${a}\nEOF`])};t.writeDotEnv=writeDotEnv;const componentContextNeedsBuildTimeDotEnv=e=>{var t;return((t=e.componentConfig.dotEnv)!==null&&t!==void 0?t:true)===true};t.componentContextNeedsBuildTimeDotEnv=componentContextNeedsBuildTimeDotEnv},5644:function(e,t,a){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.createJobCacheFromConfig=t.createJobCacheFromCacheConfigs=void 0;const r=a(6928);const i=a(1255);const s=n(a(4206));const createJobCacheFromCacheConfigs=(e,t)=>{if(t.length===0)return undefined;const a=t.filter((e=>!("key"in e)));const n=t.filter((e=>"key"in e));const i=a.length>0?[{key:e.name+"-default",policy:"pull-push",paths:a.flatMap((t=>t.paths.map((a=>{var n;const i=t.pathMode==="absolute"?"":(n=t.baseDir)!==null&&n!==void 0?n:e.build.dir;return(0,r.join)(i,a)}))))}]:[];const o=n.map((({key:t,paths:a,policy:n,scope:i,pathMode:o,buildDir:p,...d})=>{var l;const c=o==="absolute"?"":p!==null&&p!==void 0?p:e.build.dir;const u=i==="global"?t:typeof t==="string"?(i==="buildDir"?(0,s.default)(c):e.name)+"-"+t:{...t,files:(l=t.files)===null||l===void 0?void 0:l.map((e=>o==="absolute"?e:(0,r.join)(c,e)))};return{key:u,policy:n!==null&&n!==void 0?n:"pull-push",paths:o==="absolute"?a:a===null||a===void 0?void 0:a.map((e=>(0,r.join)(c,e))),...d}}));return[...o,...i]};t.createJobCacheFromCacheConfigs=createJobCacheFromCacheConfigs;const createJobCacheFromConfig=(e,a)=>(0,t.createJobCacheFromCacheConfigs)(e,(0,i.getAllCacheConfigsFromConfig)(e,a));t.createJobCacheFromConfig=createJobCacheFromConfig},1255:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.getAllCacheConfigsFromConfig=void 0;const n=a(595);const r=a(3507);const getAllCacheConfigsFromConfig=(e,t)=>[..."jobCache"in t?(0,r.transformLegacyJobCache)(t.jobCache):[],...(0,n.ensureArray)(t.cache),...e.type==="workspace"?e.components.flatMap((e=>{var t;return e.build.type!=="disabled"?(t=(0,n.ensureArray)(e.build.config.cache).map((t=>({...t,baseDir:e.build.dir}))))!==null&&t!==void 0?t:[]:[]})):[]];t.getAllCacheConfigsFromConfig=getAllCacheConfigsFromConfig},3507:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.transformLegacyJobCache=void 0;const n=a(595);function transformLegacyJobCache(e){return(0,n.ensureArray)(e).map((e=>{var t,a;return{pathMode:"absolute",...e,key:(t=e.key)!==null&&t!==void 0?t:"default",paths:(a=e.paths)!==null&&a!==void 0?a:[]}}))}t.transformLegacyJobCache=transformLegacyJobCache},985:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createCustomBuildJobs=void 0;const n=a(2764);const r=a(9851);const i=a(8121);const s=a(6254);const createCustomBuildJobs=e=>{const t=e.build.config;if(!(0,r.isOfBuildType)(t,"custom")){throw new Error("deploy config is not custom")}return(0,i.createComponentBuildJobs)(e,{appBuild:t.buildCommand!==null?(0,s.createBuildJobDefinition)(e,t):undefined,dockerBuild:{script:(0,n.getDockerBuildScriptWithBuiltInDockerFile)(e),variables:{}}})};t.createCustomBuildJobs=createCustomBuildJobs},2924:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createCustomJobs=void 0;const n=a(985);const r=a(7039);const createCustomJobs=e=>[...(0,r.createCustomTestJobs)(e),...(0,n.createCustomBuildJobs)(e)];t.createCustomJobs=createCustomJobs},7039:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createCustomTestJobs=void 0;const n=a(595);const r=a(3983);const i=a(5644);const s=a(9851);const o={KUBERNETES_CPU_REQUEST:"0.45",KUBERNETES_MEMORY_REQUEST:"1Gi",KUBERNETES_MEMORY_LIMIT:"4Gi"};const createCustomTestJobs=e=>{var t,a,p,d,l,c,u,f,m,h,v,g,y,b,w,_,S,N,C,A,O;if(e.trigger==="taggedRelease"){return[]}const I=e.build.config;if(!(0,s.isOfBuildType)(I,"custom")){throw new Error("deploy config is not custom")}const D={variables:{APP_PATH:e.build.dir,...e.environment.jobOnlyVars.build.envVars},services:I.jobServices,cache:(0,i.createJobCacheFromConfig)(e,I),stage:"test",needs:[]};const k=I.audit?{name:"๐ก audit",...D,runnerVariables:{...o,...(a=(t=I.audit)===null||t===void 0?void 0:t.runnerVariables)!==null&&a!==void 0?a:{}},image:(d=(p=I.audit)===null||p===void 0?void 0:p.jobImage)!==null&&d!==void 0?d:I.jobImage,cache:undefined,script:[...(0,n.ensureArray)((l=I.audit)===null||l===void 0?void 0:l.command)],allow_failure:true,...(0,r.createArtifactsConfig)(e.build.dir,(c=I.audit)===null||c===void 0?void 0:c.artifactsReports,(u=I.audit)===null||u===void 0?void 0:u.artifacts)}:null;const T=I.lint?{name:"๐ฎ lint",...D,runnerVariables:{...o,...(m=(f=I.lint)===null||f===void 0?void 0:f.runnerVariables)!==null&&m!==void 0?m:{}},image:(v=(h=I.lint)===null||h===void 0?void 0:h.jobImage)!==null&&v!==void 0?v:I.jobImage,script:[...(0,n.ensureArray)((g=I.lint)===null||g===void 0?void 0:g.command)],...(0,r.createArtifactsConfig)(e.build.dir,(y=I.lint)===null||y===void 0?void 0:y.artifactsReports,(b=I.lint)===null||b===void 0?void 0:b.artifacts)}:null;const P=I.test?{name:"๐งช test",...D,runnerVariables:{...o,...(_=(w=I.test)===null||w===void 0?void 0:w.runnerVariables)!==null&&_!==void 0?_:{}},image:(N=(S=I.test)===null||S===void 0?void 0:S.jobImage)!==null&&N!==void 0?N:I.jobImage,script:[...(0,n.ensureArray)((C=I.test)===null||C===void 0?void 0:C.command)],...(0,r.createArtifactsConfig)(e.build.dir,(A=I.test)===null||A===void 0?void 0:A.artifactsReports,(O=I.test)===null||O===void 0?void 0:O.artifacts)}:null;return[k,T,P].filter(n.notNil)};t.createCustomTestJobs=createCustomTestJobs},2764:function(e,t,a){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.hasDockerfile=t.getDockerBuildDefaultScript=t.getDockerBuildScriptWithBuiltInDockerFile=t.gitlabDockerLogin=t.createDockerBuildJobBase=t.getDockerJobBaseProps=t.DOCKER_BUILD_JOB_NAME=t.getDockerBuildVariables=t.requiresDockerBuild=t.getDockerImageVariables=void 0;const r=a(9896);const i=a(9250);const s=n(a(6928));const o=a(8025);const p=a(4316);const d=a(1201);const l=a(2348);const c=a(3468);const u=a(5644);const f={KUBERNETES_CPU_REQUEST:"0.45",KUBERNETES_MEMORY_REQUEST:"1Gi",KUBERNETES_MEMORY_LIMIT:"2Gi"};const getDockerImageVariables=e=>{var t;const a=(t=e.deploy)===null||t===void 0?void 0:t.config;return{...(0,o.isOfDeployType)(a,"google-cloudrun")?{DOCKER_REGISTRY:(0,p.getArtifactsRegistryHost)(e),DOCKER_IMAGE:(0,p.getArtifactsRegistryImageName)(e),DOCKER_CACHE_IMAGE:(0,p.getArtifactsRegistryBuildCacheImage)(e)}:{DOCKER_REGISTRY:"$CI_REGISTRY",DOCKER_CACHE_IMAGE:"$CI_REGISTRY_IMAGE/caches/"+e.name,DOCKER_IMAGE_NAME:e.env+"/"+e.name,DOCKER_IMAGE:"$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"},DOCKER_IMAGE_TAG:"$CI_COMMIT_SHA"}};t.getDockerImageVariables=getDockerImageVariables;const requiresDockerBuild=e=>{var t;const a=(t=e.deploy)===null||t===void 0?void 0:t.config;return(0,o.isOfDeployType)(a,"kubernetes","google-cloudrun","dockerTag")||(0,o.isOfDeployType)(a,"custom")&&a.requiresDocker};t.requiresDockerBuild=requiresDockerBuild;const getDockerBuildRunnerVariables=()=>({DOCKER_HOST:"tcp://docker:2375",DOCKER_TLS_CERTDIR:"",DOCKER_DRIVER:"overlay2",DOCKER_BUILDKIT:"1"});const getDockerAdditions=e=>{var t,a;if(!("docker"in e))return{};if(!e.docker)return{};return{DOCKERFILE_ADDITIONS:"additionsBegin"in e.docker?(t=e.docker.additionsBegin)===null||t===void 0?void 0:t.join("\n"):undefined,DOCKERFILE_ADDITIONS_END:"additionsEnd"in e.docker?(a=e.docker.additionsEnd)===null||a===void 0?void 0:a.join("\n"):undefined}};const getDockerBuildVariables=e=>{var a;return{...getDockerAdditions(e.build.config),APP_DIR:e.build.dir,DOCKER_BUILD_CONTEXT:"docker"in e.build.config&&e.build.config.docker&&"buildContextLocation"in e.build.config.docker&&((a=e.build.config.docker)===null||a===void 0?void 0:a.buildContextLocation)==="component"?e.build.dir:".",...(0,t.getDockerImageVariables)(e)}};t.getDockerBuildVariables=getDockerBuildVariables;t.DOCKER_BUILD_JOB_NAME="๐จ docker";const getDockerJobBaseProps=()=>({image:(0,l.getRunnerImage)("docker-build"),services:[{name:"docker:24.0.6-dind",command:["--tls=false","--registry-mirror=https://mirror.gcr.io"]}],variables:{},runnerVariables:getDockerBuildRunnerVariables()});t.getDockerJobBaseProps=getDockerJobBaseProps;const createDockerBuildJobBase=(e,{script:a,cache:n,...r})=>(0,i.merge)({name:t.DOCKER_BUILD_JOB_NAME,envMode:"jobPerEnv",stage:"build",cache:n?(0,u.createJobCacheFromCacheConfigs)(e,n):undefined,...(0,t.getDockerJobBaseProps)(),script:a||[]},{variables:(0,t.getDockerBuildVariables)(e),runnerVariables:{...f,...getDockerBuildRunnerVariables()}},r);t.createDockerBuildJobBase=createDockerBuildJobBase;const gitlabDockerLogin=e=>e.deploy&&(0,o.isOfDeployType)(e.deploy.config,"google-cloudrun")?[...(0,d.gcloudServiceAccountLoginCommands)(e),`gcloud auth configure-docker ${(0,p.getArtifactsRegistryHost)(e)}`]:["docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY"];t.gitlabDockerLogin=gitlabDockerLogin;const m={meteor:"ensureMeteorDockerfile",node:"ensureNodeDockerfile",nginx:"ensureNginxDockerfile",custom:null};const getEnsureDockerFileScript=(e,t)=>{var a,n,r,i,s,o;if("docker"in e.build.config&&e.build.config.docker&&"type"in e.build.config.docker){if(((a=e.build.config.docker)===null||a===void 0?void 0:a.type)==="custom"){if((n=e.build.config.docker)===null||n===void 0?void 0:n.dockerfileContent){return`\necho "Creating Dockerfile"\ncat >$APP_DIR/Dockerfile <<EOF\n${(i=(r=e.build.config.docker)===null||r===void 0?void 0:r.dockerfileContent)===null||i===void 0?void 0:i.join("\n")}\nEOF`}}const p=(o=(s=e.build.config.docker)===null||s===void 0?void 0:s.type)!==null&&o!==void 0?o:t;return p?m[p]:null}return t?m[t]:null};const getDockerBuildScriptWithBuiltInDockerFile=(e,a)=>(0,t.getDockerBuildDefaultScript)(e,getEnsureDockerFileScript(e,a));t.getDockerBuildScriptWithBuiltInDockerFile=getDockerBuildScriptWithBuiltInDockerFile;const getDockerBuildDefaultScript=(e,a)=>[a!==null&&a!==void 0?a:undefined,...(0,c.collapseableSection)("docker-login","Docker Login")((0,t.gitlabDockerLogin)(e)),...(0,c.collapseableSection)("docker-build","Docker build")(["docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1"]),...(0,c.collapseableSection)("docker-push","Docker push and tag")(["docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG","docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE","docker push $DOCKER_CACHE_IMAGE"])].filter(Boolean);t.getDockerBuildDefaultScript=getDockerBuildDefaultScript;const hasDockerfile=e=>(0,r.existsSync)(s.default.join(e.build.dir,"Dockerfile"));t.hasDockerfile=hasDockerfile},1398:function(e,t,a){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){if(n===undefined)n=a;var r=Object.getOwnPropertyDescriptor(t,a);if(!r||("get"in r?!t.__esModule:r.writable||r.configurable)){r={enumerable:true,get:function(){return t[a]}}}Object.defineProperty(e,n,r)}:function(e,t,a,n){if(n===undefined)n=a;e[n]=t[a]});var r=this&&this.__exportStar||function(e,t){for(var a in e)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(t,a))n(t,e,a)};Object.defineProperty(t,"__esModule",{value:true});t.WORKSPACE_BUILD_TYPES=t.BUILD_TYPES=void 0;const i=a(2924);const s=a(7667);const o=a(3260);r(a(7667),t);r(a(9851),t);t.BUILD_TYPES={node:{jobs:s.createNodeJobs,defaults:()=>({buildCommand:"yarn build",startCommand:"yarn start",artifactsPaths:["dist",".next"],artifactsExcludePaths:[".next/cache/**/*"]})},"node-static":{jobs:s.createNodeJobs,defaults:()=>({buildCommand:"yarn build",artifactsPaths:["dist"]})},storybook:{jobs:s.createStorybookJobs,defaults:()=>({buildCommand:["yarn build-storybook --quiet -o ./dist"],artifactsPaths:["dist"]})},meteor:{jobs:s.createMeteorJobs,defaults:()=>({startCommand:"node main.js",artifactsPaths:["dist"]})},custom:{jobs:i.createCustomJobs,defaults:()=>({artifactsPaths:["dist"]})},rails:{jobs:o.createRailsJobs,defaults:()=>({cnbBuilder:{image:"heroku/builder:24",packVersion:"0.36.4"}})}};t.WORKSPACE_BUILD_TYPES={node:{jobs:s.createNodeJobs,defaults:()=>({buildCommand:"yarn build",lint:{command:"yarn lint"},test:{command:"yarn test"}})}}},5464:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createNodeDockerJobDefinition=t.createNodeBuildJobDefinition=t.createNodeBuildJobs=void 0;const n=a(3660);const r=a(8121);const i=a(6254);const s=a(2764);const o=a(4189);const p=a(8897);const createNodeBuildJobs=e=>{if(e.type==="workspace"){return(0,r.createWorkspaceBuildJobs)(e,{appBuild:(0,t.createNodeBuildJobDefinition)(e)})}return(0,r.createComponentBuildJobs)(e,{appBuild:(0,n.componentContextIsStandaloneBuild)(e)?(0,t.createNodeBuildJobDefinition)(e):undefined,dockerBuild:(0,t.createNodeDockerJobDefinition)(e)})};t.createNodeBuildJobs=createNodeBuildJobs;const createNodeBuildJobDefinition=e=>{const t=e.build.config;const a=(0,p.getYarnInstall)(e);return(0,i.createBuildJobDefinition)(e,t,{prescript:a,cache:(0,o.getNodeCache)(e)})};t.createNodeBuildJobDefinition=createNodeBuildJobDefinition;const createNodeDockerJobDefinition=e=>{var t,a;const n=e.build.buildType==="node-static"||e.build.buildType==="storybook"?"nginx":"node";return{script:(0,s.getDockerBuildScriptWithBuiltInDockerFile)(e,n),cache:[...(0,o.getYarnCache)(e,"pull")],variables:{DOCKER_COPY_AND_INSTALL_APP:(0,p.getDockerAppCopyAndBuildScript)(e),DOCKER_COPY_WORKSPACE_FILES:(a=(t=e.packageManagerInfo)===null||t===void 0?void 0:t.pathsToCopyInDocker.map((e=>`COPY --chown=node:node ${e} /app/${e}`)))===null||a===void 0?void 0:a.join("\n")}}};t.createNodeDockerJobDefinition=createNodeDockerJobDefinition},4189:function(e,t,a){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.getNodeCache=t.getNodeModulesCache=t.getYarnCache=void 0;const r=a(9250);const i=a(6928);const s=n(a(4206));const getYarnCache=(e,t="pull-push")=>{const a=e.type==="component"&&e.packageManagerInfo.componentIsInWorkspace;return[{scope:a?"global":"buildDir",pathMode:a?"absolute":"relative",key:"yarn",policy:t,paths:[".yarn"]}]};t.getYarnCache=getYarnCache;const getNodeModulesCache=(e,t="pull-push")=>{var a;const n=e.type==="component"&&e.packageManagerInfo.componentIsInWorkspace;return[{scope:"global",pathMode:"absolute",key:n?"node-modules-workspace":(0,s.default)(e.build.dir)+"-node-modules",policy:t,paths:[...n?(0,r.uniq)(["node_modules",...(a=e.packageManagerInfo.workspaces.map((e=>(0,i.join)(e.location,"node_modules"))))!==null&&a!==void 0?a:[]]):[(0,i.join)(e.build.dir,"node_modules")]]}]};t.getNodeModulesCache=getNodeModulesCache;const getNodeCache=(e,a="pull-push")=>[...(0,t.getYarnCache)(e,a),...(0,t.getNodeModulesCache)(e,a)];t.getNodeCache=getNodeCache},5497:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.NODE_RUNNER_BUILD_VARIABLES=void 0;t.NODE_RUNNER_BUILD_VARIABLES={KUBERNETES_CPU_REQUEST:"0.45",KUBERNETES_MEMORY_REQUEST:"1Gi",KUBERNETES_MEMORY_LIMIT:"4Gi"}},7667:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createMeteorJobs=t.createStorybookJobs=t.createNodeJobs=void 0;const n=a(5464);const r=a(6055);const i=a(9884);const createNodeJobs=e=>[...(0,i.createNodeTestJobs)(e),...(0,n.createNodeBuildJobs)(e)];t.createNodeJobs=createNodeJobs;const createStorybookJobs=e=>[...(0,n.createNodeBuildJobs)(e)];t.createStorybookJobs=createStorybookJobs;const createMeteorJobs=e=>[...(0,i.createNodeTestJobs)(e),...(0,r.createMeteorBuildJobs)(e)];t.createMeteorJobs=createMeteorJobs},6055:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createMeteorBuildJobs=void 0;const n=a(2348);const r=a(8121);const i=a(2764);const s=a(9851);const o=a(4189);const p=a(8897);const getMeteorCache=e=>[{key:"meteor-build-cache",policy:"pull-push",paths:[".meteor/local/resolver-result-cache.json",".meteor/local/plugin-cache",".meteor/local/isopacks",".meteor/local/bundler-cache/scanner"]}];const createMeteorBuildJobs=e=>{const t=e.build.config;if(!(0,s.isOfBuildType)(t,"meteor")){throw new Error("deploy config is not meteor")}const a=(0,p.getYarnInstall)(e);return(0,r.createComponentBuildJobs)(e,{appBuild:t.buildCommand!==null?{cache:[...(0,o.getNodeCache)(e),...getMeteorCache(e)],image:(0,n.getRunnerImage)("jobs-meteor"),variables:{METEOR_DISABLE_OPTIMISTIC_CACHING:"1"},script:[...a,'echo "add healthcheck package"',"meteor add panter:healthroute --allow-superuser","meteor add qualia:prod-shell --allow-superuser",'TOOL_NODE_FLAGS="--max_old_space_size=3584 --min_semi_space_size=8 --max_semi_space_size=256 --optimize_for_size" meteor build ./dist --architecture os.linux.x86_64 --allow-superuser --server-only --directory',"cp ./__build_info.json ./dist/bundle/programs/server"]}:undefined,dockerBuild:{script:(0,i.getDockerBuildScriptWithBuiltInDockerFile)(e,"meteor"),variables:{METEOR_INSTALL_SCRIPTS:t.installScripts?"true":""}}})};t.createMeteorBuildJobs=createMeteorBuildJobs},9884:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.createNodeTestJobs=void 0;const n=a(2348);const r=a(3660);const i=a(595);const s=a(3983);const o=a(4189);const p=a(5497);const d=a(8897);const l=a(5644);const createNodeTestJobs=e=>{var t,a,c,u,f,m,h,v,g,y,b,w,_,S,N,C,A,O,I,D,k,T,P,R;if(e.trigger==="taggedRelease"){return[]}if(e.type==="component"&&!(0,r.componentContextIsStandaloneBuild)(e)){return[]}const L=(0,n.getRunnerImage)("jobs-default");const x={variables:{APP_PATH:e.build.dir,...e.type==="component"?{...e.environment.jobOnlyVars.build.envVars}:{}},stage:"test",needs:[]};const j=e.build.config;const B=(0,d.getYarnInstall)(e);const M=j.audit!==false?{name:"๐ก audit",...x,runnerVariables:{...p.NODE_RUNNER_BUILD_VARIABLES,...(a=(t=j.audit)===null||t===void 0?void 0:t.runnerVariables)!==null&&a!==void 0?a:{}},image:(u=(c=j.audit)===null||c===void 0?void 0:c.jobImage)!==null&&u!==void 0?u:L,cache:undefined,script:[`cd ${e.build.dir}`,...(m=(0,i.ensureArrayOrNull)((f=j.audit)===null||f===void 0?void 0:f.command))!==null&&m!==void 0?m:[e.packageManagerInfo.isClassic?"yarn audit":"yarn npm audit --environment production"]],allow_failure:true,...(0,s.createArtifactsConfig)(e.build.dir,(h=j.audit)===null||h===void 0?void 0:h.artifactsReports,(v=j.audit)===null||v===void 0?void 0:v.artifacts)}:null;const V=j.lint!==false?{name:"๐ฎ lint",...x,runnerVariables:{...p.NODE_RUNNER_BUILD_VARIABLES,...(y=(g=j.lint)===null||g===void 0?void 0:g.runnerVariables)!==null&&y!==void 0?y:{}},image:(w=(b=j.lint)===null||b===void 0?void 0:b.jobImage)!==null&&w!==void 0?w:L,cache:(0,l.createJobCacheFromCacheConfigs)(e,(0,o.getNodeCache)(e)),script:[...(0,d.ensureNodeVersion)(e),`cd ${e.build.dir}`,...B,...(S=(0,i.ensureArrayOrNull)((_=