UNPKG

dotnet-sdk-3.1

Version:

Platform agnostic installation of .NET Core runtime 3.1

1 lines 21.5 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const fs=require("fs"),patch_moduleloader_1=inline_patchmoduleloader(),static_filesystem_1=inline_staticfilesystem(),patch_filesystem_1=inline_patchfilesystem(),common_1=inline_common(),fs_1=require("fs"),child_process=require("child_process"),Module=require("module");if(require.main===module){const startpath=fs_1.realpathSync(module.filename);for(let i=0;i<process.argv.length;i++)if(fs_1.realpathSync(process.argv[i])===startpath){for(process.argv.splice(i,1);i<process.argv.length&&process.argv[i].startsWith("--load-module=");){const staticModule=process.argv[i].split("=")[1];process.argv.splice(i,1),load(staticModule)}process.argv.length<2&&(console.log("Missing module name to start."),process.exit(1)),Module._load(process.argv[1],null,!0),process._tickCallback();break}}const possibilities=["node","node.exe",process.execPath,process.argv[0]];function isNode(path){return possibilities.indexOf(path)>-1}function cmdlineToArray(text,result=new Array,matcher=/[^\s"]+|"([^"]*)"/gi,count=0){text=text.replace(/\\"/g,"￾");const match=matcher.exec(text);return match?cmdlineToArray(text,result,matcher,result.push(match[1]?match[1].replace(/\ufffe/g,'\\"'):match[0].replace(/\ufffe/g,'\\"'))):result}function indexAfterStartsWith(command,text){return command.startsWith(text)?text.length:-1}function startsWithNode(command){if('"'==command.charAt(0))for(const each of possibilities){const val=indexAfterStartsWith(command,`"${each}" `);if(val>-1)return val}else for(const each of possibilities){const val=indexAfterStartsWith(command,`${each} `);if(val>-1)return val}return-1}function getInsertedArgs(loadedFileSystems){return common_1.select(loadedFileSystems,(p,c)=>`--load-module=${c}`)}function getInsertedArgString(loadedFileSystems){return`${getInsertedArgs(loadedFileSystems).map(a=>`"${a}"`).join(" ")}`}function padStart(str,targetLength,padString=" "){return targetLength>>=0,padString=String(padString||" "),str.length>targetLength?String(str):((targetLength-=str.length)>padString.length&&(padString+=padString.repeat(targetLength/padString.length)),padString.slice(0,targetLength)+String(str))}function padEnd(str,targetLength,padString=" "){return targetLength>>=0,padString=String(padString||" "),str.length>targetLength?String(str):((targetLength-=str.length)>padString.length&&(padString+=padString.repeat(targetLength/padString.length)),String(str)+padString.slice(0,targetLength))}function list(staticModule){const svs=new static_filesystem_1.StaticFilesystem;svs.load(staticModule);const dir=new Array,files={};for(const each of svs.entries){const st=svs.statSync(each);st.isFile()?files[each]=`${padStart(`${st.size}`,12)} ${each}`:dir.push(`${padStart("<dir>",12)} ${each}`)}for(const each of dir.sort())console.log(each);for(const each of Object.keys(files).sort())console.log(files[each]);svs.shutdown()}function existsInFs(svs,filePath){try{return!!svs.statSync(filePath)}catch(_a){}return!1}function load(staticModule){if(!global.staticloader){global.staticloader={};const svs=new static_filesystem_1.StaticFilesystem,undo_loader=patch_moduleloader_1.patchModuleLoader(svs),fsRFS=fs.readFileSync,undo_fs=patch_filesystem_1.patchFilesystem({readFileSync:(path,options)=>{try{if(svs.statSync(path))return svs.readFileSync(path,options)}catch(_a){}return fsRFS(path,options)}});global.staticloader.undo=(()=>{undo_fs(),undo_loader()}),global.staticloader.staticfilesystem=svs;const process_exit=process.exit;process.exit=(n=>(svs.shutdown(),global.staticloader.undo(),process_exit(n)));const fork=child_process.fork,spawn=child_process.spawn,exec=child_process.exec,spawnSync=child_process.spawnSync,execSync=child_process.execSync;child_process.fork=((modulePath,args,options)=>args&&existsInFs(svs,modulePath)?fork(__filename,[...getInsertedArgs(svs.loadedFileSystems),modulePath,...Array.isArray(args)?args:[args]],options):fork(modulePath,args,options)),child_process.spawn=((command,args,options)=>args&&(Array.isArray(args)||"object"!=typeof args)&&isNode(command)&&existsInFs(svs,args[0])?spawn(command,[__filename,...getInsertedArgs(svs.loadedFileSystems),...Array.isArray(args)?args:[args]],options):spawn(command,args,options)),child_process.spawnSync=((command,args,options)=>args&&(Array.isArray(args)||"object"!=typeof args)&&isNode(command)&&existsInFs(svs,args[0])?spawnSync(command,[__filename,...getInsertedArgs(svs.loadedFileSystems),...Array.isArray(args)?args:[args]],options):spawnSync(command,args,options)),child_process.exec=((command,options,callback)=>{const pos=startsWithNode(command);return pos>-1&&existsInFs(svs,cmdlineToArray(command)[1])?exec(`${command.substring(0,pos)} "${__filename}" ${getInsertedArgString(svs.loadedFileSystems)} ${command.substring(pos)}`,options,callback):exec(command,options,callback)}),child_process.execSync=((command,options)=>{const pos=startsWithNode(command);return pos>-1&&existsInFs(svs,cmdlineToArray(command)[1])?execSync(`${command.substring(0,pos)} "${__filename}" ${getInsertedArgString(svs.loadedFileSystems)} ${command.substring(pos)}`,options):execSync(command,options)})}global.staticloader.staticfilesystem.load(staticModule)}function unload(staticModule){if(global.staticloader.undo){global.staticloader.staticfilesystem.unload(staticModule)}}function inline_patchfilesystem(){var exports={};Object.defineProperty(exports,"__esModule",{value:!0});const fs=require("fs");Object.assign({},fs);var MemberType;!function(MemberType){MemberType[MemberType.Constructor=0]="Constructor",MemberType[MemberType.Method=1]="Method",MemberType[MemberType.Property=2]="Property"}(MemberType||(MemberType={}));const metadata={StatWatcher:MemberType.Constructor,FSWatcher:MemberType.Constructor,ReadStream:MemberType.Constructor,WriteStream:MemberType.Constructor,ReadFileStream:MemberType.Constructor,WriteFileStream:MemberType.Constructor,Stats:MemberType.Constructor,constants:MemberType.Property,F_OK:MemberType.Property,R_OK:MemberType.Property,W_OK:MemberType.Property,X_OK:MemberType.Property};return exports.patchFilesystem=function patchFilesystem(volume,original=fs){const backup=Object.assign({},original);for(const member of Object.getOwnPropertyNames(original))if(volume[member]&&"SyncWriteStream"!==member&&typeof volume[member]==typeof original[member])switch(metadata[member]){case MemberType.Constructor:try{original[member]=volume[member].bind(null,volume)}catch(_a){}break;case MemberType.Property:original[member]=volume[member];break;default:try{original[member]=volume[member].bind(volume)}catch(_b){}}return()=>patchFilesystem(fs,backup)},exports}function inline_staticfilesystem(){var exports={};Object.defineProperty(exports,"__esModule",{value:!0});const path_1=require("path"),os_1=require("os"),filesystem=require("fs"),fs=Object.assign({},filesystem),common_1=inline_common();class StaticVolumeFile{constructor(sourcePath){this.sourcePath=sourcePath,this.intBuffer=Buffer.alloc(common_1.INTSIZE),this.buf=Buffer.alloc(16384),this.index={},this.statData=Object.assign(Object.assign({},fs.statSync(sourcePath)),{isDirectory:()=>!1,isSymbolicLink:()=>!1,isBlockDevice:()=>!1,isCharacterDevice:()=>!1,isFile:()=>!1,isFIFO:()=>!1,isSocket:()=>!1,size:0}),this.fd=fs.openSync(sourcePath,"r");let dataOffset=this.readInt(),hashSize=this.readInt();for(hashSize>this.buf.length&&(this.buf=Buffer.alloc(hashSize)),this.readBuffer(this.buf,hashSize),this.hash=this.buf.toString("utf8",0,hashSize);;){const nameSz=this.readInt();if(0==nameSz)break;const dataSz=this.readInt();nameSz>this.buf.length&&(this.buf=Buffer.alloc(nameSz)),this.readBuffer(this.buf,nameSz);const name=this.buf.toString("utf8",0,nameSz);this.index[name]=Object.assign(Object.assign({},this.statData),{ino:dataOffset,size:dataSz,blocks:1,blksize:dataSz,isFile:()=>!0}),this.addParentFolders(name),dataOffset+=dataSz}}readBuffer(buffer,length){return fs.readSync(this.fd,buffer,0,length||buffer.length,null)}readInt(){return fs.readSync(this.fd,this.intBuffer,0,common_1.INTSIZE,null),this.intBuffer.readIntBE(0,6)}shutdown(){fs.closeSync(this.fd),this.index={}}addParentFolders(name){const parent=path_1.dirname(name);if(parent&&!this.index[parent])return this.index[parent]=Object.assign(Object.assign({},this.statData),{isDirectory:()=>!0}),this.addParentFolders(parent)}readFile(filepath,options){const item=this.index[filepath];if(item&&item.isFile()){const encoding=options?"string"==typeof options?options:"object"==typeof options&&options.encoding||"utf8":"utf8";return this.buf.length<item.size&&(this.buf=Buffer.alloc(item.size)),fs.readSync(this.fd,this.buf,0,item.size,item.ino),this.buf.toString(encoding,0,item.size)}}}exports.StaticVolumeFile=StaticVolumeFile;return exports.StaticFilesystem=class{constructor(){this.fileSystems=[]}NewError(code,method,filepath){switch(code){case os_1.constants.errno.ENOENT:return Object.assign(Object.assign({},new Error(`ENOENT: no such file or directory, ${method} '${filepath}'`)),{code:"ENOENT",path:filepath,errno:os_1.constants.errno.ENOENT});case os_1.constants.errno.EISDIR:return Object.assign(Object.assign({},new Error(`EISDIR: illegal operation on a directory, ${method} '${filepath}'`)),{code:"EISDIR",path:filepath,errno:os_1.constants.errno.EISDIR})}return Object.assign(Object.assign({},new Error(`UNKNOWN: Error, ${method} '${filepath}'`)),{code:"UNKNOWN",path:filepath,errno:-1e4})}shutdown(){for(const fsystem of this.fileSystems)fsystem.shutdown()}get hashes(){return common_1.select(this.fileSystems,(p,c,i,a)=>c.hash)}load(sourcePath){sourcePath=path_1.resolve(sourcePath);for(let i=0;i<this.fileSystems.length;i++)if(this.fileSystems[i].sourcePath===sourcePath)return this;return this.fileSystems.push(new StaticVolumeFile(sourcePath)),this}get loadedFileSystems(){return common_1.select(this.fileSystems,(p,c)=>c.sourcePath)}unload(sourcePath){sourcePath=path_1.resolve(sourcePath);for(let i=0;i<this.fileSystems.length;i++)this.fileSystems[i].sourcePath===sourcePath&&(this.fileSystems[i].shutdown(),this.fileSystems.splice(i,1));return this}get entries(){return common_1.selectMany(this.fileSystems,(p,c)=>Object.keys(c.index))}readFileSync(filepath,options){const targetPath=common_1.unixifyPath(filepath);return common_1.first(this.fileSystems,fsystem=>fsystem.readFile(targetPath,options),()=>{throw this.NewError(os_1.constants.errno.ENOENT,"readFileSync",filepath)})}realpathSync(filepath){const targetPath=common_1.unixifyPath(filepath);return common_1.first(this.fileSystems,fsystem=>fsystem.index[targetPath]?targetPath:void 0,()=>{throw this.NewError(os_1.constants.errno.ENOENT,"realpathSync",filepath)})}statSync(filepath){const targetPath=common_1.unixifyPath(filepath);return common_1.first(this.fileSystems,fsystem=>fsystem.index[targetPath],()=>{throw this.NewError(os_1.constants.errno.ENOENT,"statSync",filepath)})}},exports}function inline_common(){var exports={};Object.defineProperty(exports,"__esModule",{value:!0});const crypto_1=require("crypto");exports.isWindows="win32"===process.platform;const path_1=require("path"),child_process_1=require("child_process"),filesystem=require("fs"),fs=Object.assign({},filesystem);function readdir(path){return new Promise((r,j)=>fs.readdir(path,(err,files)=>err?j(err):r(files)))}function lstat(path){return new Promise((r,j)=>fs.lstat(path,(err,files)=>err?j(err):r(files)))}function fs_unlink(path){return new Promise((r,j)=>fs.unlink(path,err=>err?j(err):r()))}function rename(oldPath,newPath){return new Promise((r,j)=>fs.rename(oldPath,newPath,err=>err?j(err):r()))}async function copyFile(source,target){return await mkdir(path_1.dirname(target)),await new Promise((resolve,reject)=>{var rd=fs.createReadStream(source);rd.on("error",rejectCleanup);var wr=fs.createWriteStream(target);function rejectCleanup(err){rd.destroy(),wr.end(),reject(err)}wr.on("error",rejectCleanup),wr.on("finish",()=>{rd.close(),wr.close(),resolve()}),rd.pipe(wr)})}async function isDirectory(dirPath){try{if(await exports.exists(dirPath))return(await lstat(dirPath)).isDirectory()}catch(e){}return!1}async function isFile(filePath){try{if(await exports.exists(filePath))return!(await lstat(filePath)).isDirectory()}catch(e){}return!1}async function rmFile(filePath){if(exports.exists(filePath)){if(await isDirectory(filePath))throw new Error(`PathIsNotFileException : ${filePath}`);try{await fs_unlink(filePath)}catch(e){if(await exports.exists(filePath))throw new Error("UnableToRemoveException : filePath")}}}async function mkdir(dirPath){if(!await isDirectory(dirPath)){const p=path_1.normalize(dirPath+"/"),parent=path_1.dirname(dirPath);await isDirectory(parent)||p!=parent&&await mkdir(parent);try{await(path=p,new Promise((r,j)=>fs.mkdir(path,err=>err?j(err):r())))}catch(e){if(!await isDirectory(p))throw new Error(e)}}var path}return exports.readdir=readdir,exports.stat=function(path){return new Promise((r,j)=>fs.stat(path,(err,files)=>err?j(err):r(files)))},exports.lstat=lstat,exports.open=function(path,flags,mode){return new Promise((r,j)=>fs.open(path,flags,mode,(err,descrpitor)=>err?j(err):r(descrpitor)))},exports.close=function(fd){return new Promise((r,j)=>fs.close(fd,err=>err?j(err):r()))},exports.write=function(fd,buffer,offset,length,position){return new Promise((r,j)=>fs.write(fd,buffer,offset||0,length||buffer.length,position||void 0,(err,written,buf)=>err?j(err):r(written)))},exports.read=function(fd,buffer,offset,length,position){return new Promise((r,j)=>fs.read(fd,buffer,offset,length,position||null,(err,bytes,buffer)=>err?j(err):r(bytes)))},exports.readFile=function(path,options){return new Promise((r,j)=>fs.readFile(path,options,(err,data)=>err?j(err):r(data)))},exports.execute=function(command,cmdlineargs,options){return new Promise((r,j)=>{const cp=child_process_1.spawn(command,cmdlineargs,Object.assign(Object.assign({},options),{stdio:"pipe"}));let err="",out="";cp.stderr.on("data",chunk=>{err+=chunk,process.stdout.write(".")}),cp.stdout.on("data",chunk=>{out+=chunk,process.stdout.write(".")}),cp.on("close",(code,signal)=>r({stdout:out,stderr:err,error:code?new Error("Process Failed."):null,code:code}))})},exports.rename=rename,exports.writeFile=function(filename,content){return new Promise((r,j)=>fs.writeFile(filename,content,err=>err?j(err):r()))},exports.copyFile=copyFile,exports.copyFolder=async function copyFolder(source,target,all){const waitAtEnd=!all;if(all=all||new Array,isDirectory(source))for(const each of await readdir(source)){const sp=path_1.join(source,each),dp=path_1.join(target,each);await isDirectory(sp)?copyFolder(sp,dp,all):all.push(copyFile(sp,dp))}waitAtEnd&&await Promise.all(all)},exports.exists=(path=>new Promise((r,j)=>fs.stat(path,(err,stats)=>r(!err)))),exports.isDirectory=isDirectory,exports.isFile=isFile,exports.rmdir=async function rmdir(dirPath){if(!await exports.exists(dirPath))return;if(!await isDirectory(dirPath))throw new Error(dirPath);process.cwd()===path_1.normalize(dirPath)&&process.chdir(`${dirPath}/..`);const files=await readdir(dirPath);if(files.length){const awaiter=new Array;try{for(const file of files)try{const p=path_1.join(dirPath,file);await isDirectory(p)?awaiter.push(rmdir(p)):awaiter.push(fs_unlink(p).catch(()=>{}))}catch(e){}}finally{await Promise.all(awaiter)}}try{await(path=dirPath,new Promise((r,j)=>fs.rmdir(path,err=>err?j(err):r())))}catch(e){if(await isDirectory(dirPath))throw new Error(`UnableToRemoveException ${dirPath}`)}var path},exports.rmFile=rmFile,exports.mkdir=mkdir,exports.INTSIZE=6,exports.unixifyPath=exports.isWindows?function(filepath){return filepath&&"string"==typeof filepath?filepath.replace(/^\\\\\?\\(.):\\/,"$1:\\").replace(/[\\\/]+/g,"/").replace(/^([a-zA-Z]+:|\.\/)/,"").replace(/(.+?)\/$/,"$1"):filepath}:p=>p,exports.isWindowsPath=exports.isWindows?function(filepath){if(filepath&&filepath.length>=3){if(92===filepath.charCodeAt(0)&&92===filepath.charCodeAt(1))return!0;if(58==filepath.charCodeAt(1)&&92===filepath.charCodeAt(2)){var code=filepath.charCodeAt(0);return code>=65&&code<=90||code>=97&&code<=122}}return!1}:p=>p,exports.calculateHash=function(content){return crypto_1.createHash("sha256").update(JSON.stringify(content)).digest("base64")},exports.select=function(array,callbackfn){return array.reduce((p,c,i,a)=>(p.push(callbackfn(p,c,i,a)),p),new Array)},exports.selectMany=function(array,callbackfn){return array.reduce((p,c,i,a)=>(p.push(...callbackfn(p,c,i,a)),p),new Array)},exports.first=function(array,selector,onError=(()=>void 0)){for(const each of array){const result=selector(each);if(void 0!=result)return result}return onError()},exports.backup=async function(filename){let tried=!1;if(!await isFile(filename))return async()=>{if(!tried){tried=!0;try{await rmFile(filename)}catch(_a){}}};const backupFile=path_1.join(path_1.dirname(filename),`${path_1.basename(filename)}.${1e4*Math.random()}${path_1.extname(filename)}`);return await rename(filename,backupFile),await copyFile(backupFile,filename),async()=>{if(!tried){tried=!0;try{await rmFile(filename)}catch(_a){}try{await rename(backupFile,filename)}catch(_b){}}}},exports}function inline_patchmoduleloader(){var exports={};Object.defineProperty(exports,"__esModule",{value:!0});const fs_1=require("fs"),common_1=inline_common(),path_1=require("path"),makeLong=require("path")._makeLong||path_1.resolve;function stripBOM(content){return content&&65279===content.charCodeAt(0)?content.slice(1):content}return exports.patchModuleLoader=function(volume,enablePathNormalization=!1,enableFallback=!0,Module=require("module")){const backup=Object.assign({},Module),preserveSymlinks=!1,statcache={},packageMainCache={};function stat(filename){filename=makeLong(filename);const result=statcache[filename];return void 0!==result?result:statcache[filename]=function(filename){try{return volume.statSync(filename).isDirectory()?1:0}catch(_a){}return-2}(filename)}function readPackage(requestPath){const entry=packageMainCache[requestPath];if(entry)return entry;const jsonPath=path_1.resolve(requestPath,"package.json"),json=function(path){try{return volume.readFileSync(path,"utf8")}catch(_a){}}(makeLong(jsonPath));if(void 0===json)return!1;let pkg;try{pkg=packageMainCache[requestPath]=JSON.parse(json).main}catch(e){throw e.path=jsonPath,e.message="Error parsing "+jsonPath+": "+e.message,e}return pkg}function tryFile(requestPath,isMain){return preserveSymlinks&&!isMain?0===stat(requestPath)?path_1.resolve(requestPath):void 0:0===stat(requestPath)?volume.realpathSync(requestPath):void 0}function tryExtensions(p,exts,isMain){for(let i=0;i<exts.length;i++){const filename=tryFile(p+exts[i],isMain);if(filename)return filename}}function tryPackage(requestPath,exts,isMain){let pkg=readPackage(requestPath);if(pkg){let filename=path_1.resolve(requestPath,pkg);return tryFile(filename,isMain)||tryExtensions(filename,exts,isMain)||tryExtensions(path_1.resolve(filename,"index"),exts,isMain)}}return Module._fallback=enableFallback,enablePathNormalization&&(volume=function(volume){return common_1.isWindows?{readFileSync:(path,options)=>volume.readFileSync(common_1.unixifyPath(path),options),realpathSync:(path,options)=>volume.realpathSync(common_1.unixifyPath(path)),statSync:path=>volume.statSync(common_1.unixifyPath(path))}:volume}(volume)),Module._extensions[".js"]=((module,filename)=>{0==stat(filename)?module._compile(stripBOM(volume.readFileSync(filename,"utf8")),filename):Module._fallback&&module._compile(stripBOM(fs_1.readFileSync(filename,"utf8")),filename)}),Module._extensions[".json"]=((module,filename)=>{if(0==stat(filename))try{module.exports=JSON.parse(stripBOM(volume.readFileSync(filename,"utf8")))}catch(err){throw Object.assign(Object.assign({},err),{message:filename+": "+err.message})}else if(Module._fallback)try{module.exports=JSON.parse(stripBOM(fs_1.readFileSync(filename,"utf8")))}catch(err){throw Object.assign(Object.assign({},err),{message:filename+": "+err.message})}}),Module._originalFindPath=Module._findPath,Module._findPath=((request,paths,isMain)=>{const result=Module._alternateFindPath(request,paths,isMain);return!result&&Module._fallback?Module._originalFindPath(request,paths,isMain):result}),Module._alternateFindPath=((request,paths,isMain)=>{if(!request)return!1;if(path_1.isAbsolute(request))paths=[""];else if(!paths||0===paths.length)return!1;const cacheKey=request+"\0"+(1===paths.length?paths[0]:paths.join("\0")),entry=Module._pathCache[cacheKey];if(entry)return entry;const trailingSlash=47===request.charCodeAt(request.length-1);for(const curPath of paths){if(curPath&&stat(curPath)<1)continue;let filename,basePath=path_1.resolve(curPath,request),rc=stat(basePath);if(rc<0&&common_1.isWindowsPath(basePath)){let correctedPath=common_1.unixifyPath(basePath);(rc=stat(correctedPath))>=0&&(basePath=correctedPath)}const exts=Object.keys(Module._extensions);if(!trailingSlash){switch(rc){case 0:filename=preserveSymlinks&&!isMain?path_1.resolve(basePath):volume.realpathSync(basePath);break;case 1:filename=tryPackage(basePath,exts,isMain)}filename||(filename=tryExtensions(basePath,exts,isMain))}if(filename||1!==rc||(filename=tryPackage(basePath,exts,isMain)||tryExtensions(path_1.resolve(basePath,"index"),exts,isMain)),filename)return Module._pathCache[cacheKey]=filename,filename}return!1}),()=>{Module._extensions[".js"]=backup._extensions[".js"],Module._extensions[".json"]=backup._extensions[".json"],Module._findPath=backup._findPath}},exports}exports.list=list,exports.load=load,exports.unload=unload;