dt-app
Version:
The Dynatrace App Toolkit is a tool you can use from your command line to create, develop, and deploy apps on your Dynatrace environment.
40 lines (29 loc) • 12.6 kB
JavaScript
;var be=Object.create;var $=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Ee=Object.prototype.hasOwnProperty;var Pe=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},ie=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of De(e))!Ee.call(t,r)&&r!==n&&$(t,r,{get:()=>e[r],enumerable:!(i=Ce(e,r))||i.enumerable});return t};var A=(t,e,n)=>(n=t!=null?be(Re(t)):{},ie(e||!t||!t.__esModule?$(n,"default",{value:t,enumerable:!0}):n,t)),ve=t=>ie($({},"__esModule",{value:!0}),t);var Ye={};Pe(Ye,{initiateTypeCheckerWatchers:()=>we,watch:()=>xe});module.exports=ve(Ye);var I=require("worker_threads");var B=require("lodash"),_e=require("micromatch"),oe=require("fs"),U=require("path");function re(t,e){return require.resolve(t,{paths:[e]})}var H;function p(t){return H||(H=require(re("typescript",t))),H}function W(t,e){let n=p(e),i=`TS${t.code}`,r=n.flattenDiagnosticMessageText(t.messageText,`
`),s=t.category===n.DiagnosticCategory.Error?"Error":"Warning";if(t.file){let{line:S,character:d}=n.getLineAndCharacterOfPosition(t.file,t.start);return{code:i,category:s,text:r,filePath:t.file.fileName,column:d+1,line:S+1}}return{code:i,category:s,text:r,filePath:void 0,line:1,column:1}}var k={noEmit:!0,skipLibCheck:!0};function L(t){let{ScriptTarget:e}=p(t);return{ui:{target:e.ES2022,...k},functions:{target:e.ESNext,...k},actions:{target:e.ESNext,...k},widgets:{target:e.ESNext,...k}}}function se(t,e){let{sys:n,readConfigFile:i,parseJsonConfigFileContent:r}=p(t),s=i(e,w=>(0,oe.readFileSync)(w).toString()),S=[];s.error&&(0,B.has)(s.error.file,"parseDiagnostics")&&(S=(0,B.get)(s.error?.file,"parseDiagnostics"));let d=r(s.config,n,(0,U.dirname)(e));return S.push(...d.errors),{tsConfigContents:d,tsConfigFileDiagnostics:S}}var N=require("path"),Se=require("chokidar");var Y=A(require("fast-glob")),q=require("path");var Ne=A(require("chalk"));async function ae(t,e){return(await(0,Y.default)(e,{cwd:t,ignore:["**/*.{test,spec}.ts","node_modules"]})).map(i=>(0,q.join)(t,i))}var a=require("chalk"),D=require("lodash");var c=require("fs"),le=require("fs/promises"),M=require("path"),Ie=new RegExp(/[0-9]{4}-[0-9]{2}-[0-9]{2}_log.txt/),ce=t=>(t>9?"":"0")+t,$e=t=>`${t.getFullYear()}-${ce(t.getMonth()+1)}-${ce(t.getDate())}_log.txt`,Ae=t=>{try{let e=t.split("-");return new Date(Number(e[0]),Number(e[1]),Number(e[2].split("_")[0]))}catch{return}},K=class{async setup(e){return Promise.resolve()}write(e){}getLogFile(){return""}},V=class{logFolder;logFile;stream;async setup(e){this.logFolder=(0,M.join)(e,".dt-app/logs"),(0,c.existsSync)(this.logFolder)||(0,c.mkdirSync)(this.logFolder,{recursive:!0}),await this.rotate()}async rotate(){if(this.logFile=(0,M.join)(this.logFolder,$e(new Date)),!(0,c.existsSync)(this.logFile)){let e=(0,c.readdirSync)(this.logFolder).map(n=>n.trim()).filter(n=>Ie.test(n));if(e.length>=10){let n=e.map(i=>({path:i,date:Ae(i)})).filter(i=>i.date).sort((i,r)=>i.date.getTime()-r.date.getTime())[0].path;(0,le.unlink)((0,M.join)(this.logFolder,n))}(0,c.closeSync)((0,c.openSync)(this.logFile,"w"))}await new Promise(e=>{this.stream=(0,c.createWriteStream)(this.logFile,{encoding:"utf-8",flags:"a"}),this.stream.on("open",()=>e())})}write(e){this.stream&&this.stream.write(e)}getLogFile(){return this.logFile}};async function pe(t){return j=new V,j.setup(t)}var j=new K;var fe=require("os");var Q=A(require("ora"));var J=[],C=!1;function We(t){return new Promise((e,n)=>{J.push(async()=>{try{let i=await t();e(i)}catch(i){n(i)}}),ke()})}async function ke(){if(!C){for(C=!0;J.length>0;)await J.shift()();C=!1}}async function ge(t){return We(t)}var O=process.env.DT_APP_DEACTIVATE_SPINNER!=="true",v={interval:80},o=[],m="idle",_=(0,Q.default)({spinner:{frames:[""],interval:v.interval},isSilent:!O}),Le=()=>`
${o.map(t=>t.getFrame()).join(`
`)}`;function Be(){_.text=Le()}var T;function Ue(){O&&m!=="running"&&!C&&(o.length>=2?(T===void 0&&(T=setInterval(Be,v.interval)),_.start(),m="running"):o.length===1&&(o[0].startOraSpinner(),m="running"))}function ue(){m==="running"&&(m="paused",o.length>=2?_.stop():o.length===1&&o[0].stopOraSpinner())}function de(){m==="paused"&&!C&&(m="running",o.length>=2?_.start():o.length===1&&o[0].startOraSpinner())}function Z(){m="idle",o.length>=2?_.stop():o.length===1&&o[0].stopOraSpinner(),o.forEach(t=>t.abort()),T!==void 0&&(clearInterval(T),T=void 0)}var G=class{spinner;constructor(e){this.spinner=(0,Q.default)({...e,isSilent:!O})}get text(){return this.spinner.text}set text(e){this.spinner.text=e}cleanup(){let e=o.indexOf(this);e>-1&&(this.spinner.isSpinning&&this.spinner.stop(),o.splice(e,1)),o.length===0&&Z()}startOraSpinner(){this.spinner.isSpinning||this.spinner.start()}stopOraSpinner(){this.spinner.isSpinning&&this.spinner.stop()}getFrame(){return this.spinner.frame()}start(e){e&&(this.text=e);let n=o.length===1;return o.includes(this)||o.push(this),n&&o.length===2&&m==="running"&&(o[0].stopOraSpinner(),T!==void 0&&(clearInterval(T),T=void 0),m="idle"),Ue(),this}_stop(e,n="abort"){switch(this.text=e??this.text,ue(),n){case"success":this.spinner.succeed(this.text);break;case"info":this.spinner.info(this.text);break;case"fail":this.spinner.fail(this.text);break;case"warn":this.spinner.warn(this.text);break;case"abort":this.spinner.stop();break;default:this.spinner.stopAndPersist(n)}return this.cleanup(),de(),this}stop(e,n={}){return this._stop(e,n)}abort(){return this._stop(void 0,"abort")}info(e){return this._stop(e,"info")}succeed(e){return this._stop(e,"success")}fail(e){return this._stop(e,"fail")}warn(e){return this._stop(e,"warn")}},h={create:(t={})=>new G({...t,interval:v.interval}),start:(t,e={})=>new G({...e,interval:v.interval}).start(t),pause:ue,resume:de,reset:Z,successAll:t=>o.forEach(e=>e.succeed(t)),failAll:t=>o.forEach(e=>e.fail(t)),disable:()=>{O=!1,Z()},enable:()=>{O=!0},getInterval:()=>v.interval,_getMockedSpinner:function(t){let e={abort:(...n)=>e,fail:(...n)=>e,info:(...n)=>e,start:(...n)=>e,stop:(...n)=>e,succeed:(...n)=>e,text:t??"",warn:(...n)=>e};return e}};var X=class{boxSize=80;warningBoxSize=90;disabled=!1;spinner={create:()=>h.create(),disable:h.disable,start:e=>h.start(e),pause:h.pause,resume:h.resume,abort:h.reset};disable(){this.disabled=!0,h.disable()}log(e){this._log(`${this._padString(e,1)}`,"INFO")}debug(e,n){global.VERBOSE_MODE&&n.startsWith(global.VERBOSE_MODE.replace("%",""))&&(this.spinner.pause(),console.log(`${(0,a.yellow)("DEBUG")}${this._padString(`[${n}] ${e}`,1)}`),this.debounceTimeout=setTimeout(()=>{this.spinner.resume()},h.getInterval())),this._printToFile(`[${n}] ${e}`,"DEBUG")}info(e,n){this._log(n===void 0||n?this._padString(e,0):e,"INFO")}success(e){this._log((0,a.green)(this._padString(e,0)),"INFO")}error(e){this._log((0,a.red)(this._padString(e,0)),"ERROR")}warn(e){let n=`
${(0,a.yellow)("Warning "+(0,D.repeat)("─",this.warningBoxSize-8))}
${(0,a.yellow)(this._padString(e))}
${(0,a.yellow)((0,D.repeat)("─",this.warningBoxSize))}
`;this._log(n,"WARNING")}logBox(e){if(this.disabled)return;let n=`
${(0,a.magenta)((0,D.repeat)("─",this.boxSize))}
${(0,a.magenta)(this._padString(e))}
${(0,a.magenta)((0,D.repeat)("─",this.boxSize))}
`;this._log(n,"INFO")}clean(){this.spinner.abort()}async initLogFile(e){this.disabled||await pe(e)}debounceTimeout;_log(e,n){this.disabled||(this.debounceTimeout&&clearTimeout(this.debounceTimeout),this.spinner.pause(),n==="ERROR"?console.log(e):ge(()=>Promise.resolve(console.log(e))),this.debounceTimeout=setTimeout(()=>{this.spinner.resume()},h.getInterval()),this._printToFile(e,n))}_printToFile(e,n){j.write(`${je().toISOString()} ${n} ${Me(e)}
`)}_padString(e,n=2){return`${e}`.split(/[\n\r]/).map(i=>`${(0,D.repeat)(" ",n)}${i}`).join(fe.EOL)}};function Me(t){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return t.replace(new RegExp(e,"g"),"")}function je(){let t=new Date,e=t.getTimezoneOffset()*6e4;return t.setTime(t.getTime()-e),t}var R=new X;var me=require("@babel/code-frame"),g=require("chalk"),he=require("fs"),ye=A(require("ansi-to-html"));var $t=new ye.default({});var ee=t=>{let e=t.filePath?`${(0,g.cyan)(t.filePath)}:${(0,g.yellow)(t.line)}:${(0,g.yellow)(t.column)}`:"<no file>",n=t.category==="Error"?(0,g.red)("Error:"):(0,g.yellow)("Warning:"),i=t.code?(0,g.gray)(` ${t.code}`):"",r=`> ${e} - ${n}${i} ${t.text}`,s=(0,g.bold)(`${Ge(t)}`);return`${r}
${s}`};var Ge=t=>{try{if(!t.filePath)return"";let e=(0,he.readFileSync)(t.filePath,"utf-8"),n=e==="",i={start:{line:t.line,column:n?1:t.column}};return(0,me.codeFrameColumns)(n?" ":e,i,{forceColor:!0})}catch(e){console.error(e)}return""};var Te=require("micromatch");var ze=require("chalk");var Bt=`Authentication failed!
Please make sure that:
* The provided client ID and the secret are correct.
* The provided client ID has needed scopes.
Deploy scopes:
* app-engine:apps:run
* app-engine:apps:install
* app-engine:apps:delete
Uninstall scopes:
* app-engine:apps:delete
Telemetry scopes:
* app-engine:apps:run
Development server needs all the scopes specified in the app.config.
For more details on how you can configure authentication, see https://dt-url.net/qw024j8
`;function te(t){return t instanceof Error?t:new Error(String(t))}var F=I.workerData;var ne;(async()=>ne=await we({appRoot:F.appRoot,buildType:F.buildType,tsconfigFullPath:F.tsconfigFullPath,entrypoints:F.entrypoints,glob:F.glob}))();I.parentPort?.on("message",t=>{t.type==="cleanup"&&ne&&(ne(),b({type:"cleanup-complete",payload:F.buildType}))});function b(t){I.parentPort?.postMessage(t)}async function we(t){let e=await xe({appRoot:t.appRoot,entrypoints:t.entrypoints,tsConfigFullPath:t.tsconfigFullPath,buildType:t.buildType}),n;try{n=(0,Se.watch)(t.glob,{cwd:t.appRoot,ignoreInitial:!0}),n.on("all",async i=>{if(i==="add"||i==="unlink"){let r=await ae(t.appRoot,t.glob);b({type:"entrypoints-changed",payload:{buildType:t.buildType,entrypoints:r,event:i}}),e&&"updateRootFileNames"in e&&e.updateRootFileNames(r)}}),n.on("ready",()=>{b({type:"initialized",payload:F.buildType})})}catch(i){let r=te(i);b({type:"send-biz-event",payload:r})}return()=>{R.debug(`Cleaning up watchers for ${t.buildType}`,"TYPESCRIPT_CLEANUP");try{n&&n.close(),e&&"close"in e&&e.close()}catch(i){R.warn(`Failed to cleanup watchers for ${t.buildType}: ${te(i).message}`)}}}async function xe(t){let{createSemanticDiagnosticsBuilderProgram:e,sys:n,createWatchCompilerHost:i,createWatchProgram:r}=p(t.appRoot),s=t.appRoot,S=L(s),d=0;function w(u){d++;let P=W(u,s),x=ee(P);b({type:"type-error",payload:x})}function z(u){let{formatDiagnostic:P}=p(s);R.debug("Watch status change: "+P(u,Fe(s)),"TYPE_CHECKER"),(u.code===6031||u.code===6032)&&(d=0),(u.code===6193||u.code===6194||u.code===6199||u.code===6200)&&b({type:"type-check-complete",payload:{errorCount:d}})}let l=se(t.appRoot,t.tsConfigFullPath);if(l.tsConfigContents.projectReferences&&l.tsConfigContents.projectReferences.length>0&&l.tsConfigContents.fileNames.length===0)return He(t);let y=[];if(l.tsConfigContents.options.composite)y=[...new Set([...t.entrypoints,...l.tsConfigContents.fileNames])];else{let u=l.tsConfigContents.fileNames.filter(x=>x.endsWith(".d.ts")),P=(0,Te.not)(u,l.tsConfigContents.raw.exclude).map(x=>(0,N.isAbsolute)(x)?x:(0,N.join)(s,x));y=[...new Set([...t.entrypoints,...P])]}let E=i(y,{...l.tsConfigContents.options,...S[t.buildType],incremental:!0,tsBuildInfoFile:(0,N.join)(t.appRoot,`.dt-app/type-checker/${t.buildType}-type-check-build-info`)},{...n,getCurrentDirectory:()=>t.appRoot},e,w,z,void 0,{excludeDirectories:l.tsConfigContents.raw?.exclude,watchFile:1,watchDirectory:1});return r(E)}function Fe(t){let{sys:e}=p(t);return{getCanonicalFileName:n=>n,getCurrentDirectory:e.getCurrentDirectory,getNewLine:()=>e.newLine}}function He(t){let{createSolutionBuilderWithWatch:e,sys:n,createSolutionBuilderWithWatchHost:i}=p(t.appRoot);function r(f){let y=W(f,t.appRoot),E=ee(y);b({type:"type-error",payload:E})}function s(f){let{formatDiagnostic:y}=p(t.appRoot);R.debug("Solution Builder Watch Status: "+y(f,Fe(t.appRoot)),"TYPE_CHECKER"),r(f)}let{noEmit:S,...d}=L(t.appRoot)[t.buildType],w=i(n,void 0,r,s),z=w.writeFile;w.writeFile=(f,y,E)=>{(f.endsWith(".d.ts")||f.endsWith(".d.ts.map")||f.endsWith(".tsbuildinfo"))&&z?.(f,y,E)};let l=e(w,[t.tsConfigFullPath],{dry:!1,force:!1,verbose:!1,...d});return l.build(),l}0&&(module.exports={initiateTypeCheckerWatchers,watch});
//# sourceMappingURL=ts-worker.js.map