Duffer Derek
{"version":3,"sources":["../../src/lib/download-swc.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport * as Log from '../build/output/log'\nimport { x } from 'next/dist/compiled/tar'\nconst { WritableStream } =\n require('node:stream/web') as typeof import('node:stream/web')\nimport { getRegistry } from './helpers/get-registry'\nimport { getCacheDirectory } from './helpers/get-cache-directory'\n\nconst MAX_VERSIONS_TO_CACHE = 8\n\nasync function extractBinary(\n outputDirectory: string,\n pkgName: string,\n tarFileName: string\n) {\n const cacheDirectory = getCacheDirectory(\n 'next-swc',\n process.env['NEXT_SWC_PATH']\n )\n\n const extractFromTar = () =>\n x({\n file: path.join(cacheDirectory, tarFileName),\n cwd: outputDirectory,\n strip: 1,\n })\n\n if (!fs.existsSync(path.join(cacheDirectory, tarFileName))) {\n Log.info(`Downloading swc package ${pkgName}... to ${cacheDirectory}`)\n await fs.promises.mkdir(cacheDirectory, { recursive: true })\n const tempFile = path.join(\n cacheDirectory,\n `${tarFileName}.temp-${Date.now()}`\n )\n\n const registry = getRegistry()\n\n const downloadUrl = `${registry}${pkgName}/-/${tarFileName}`\n\n await fetch(downloadUrl).then((res) => {\n const { ok, body } = res\n if (!ok || !body) {\n Log.error(`Failed to download swc package from ${downloadUrl}`)\n }\n\n if (!ok) {\n throw new Error(`request failed with status ${res.status}`)\n }\n if (!body) {\n throw new Error('request failed with empty body')\n }\n const cacheWriteStream = fs.createWriteStream(tempFile)\n return body.pipeTo(\n new WritableStream({\n write(chunk) {\n return new Promise<void>((resolve, reject) =>\n cacheWriteStream.write(chunk, (error) => {\n if (error) {\n reject(error)\n return\n }\n\n resolve()\n })\n )\n },\n close() {\n return new Promise<void>((resolve, reject) =>\n cacheWriteStream.close((error) => {\n if (error) {\n reject(error)\n return\n }\n\n resolve()\n })\n )\n },\n })\n )\n })\n\n await fs.promises.access(tempFile) // ensure the temp file existed\n await fs.promises.rename(tempFile, path.join(cacheDirectory, tarFileName))\n } else {\n Log.info(`Using cached swc package ${pkgName}...`)\n }\n await extractFromTar()\n\n const cacheFiles = await fs.promises.readdir(cacheDirectory)\n\n if (cacheFiles.length > MAX_VERSIONS_TO_CACHE) {\n cacheFiles.sort((a, b) => {\n if (a.length < b.length) return -1\n return a.localeCompare(b)\n })\n\n // prune oldest versions in cache\n for (let i = 0; i++; i < cacheFiles.length - MAX_VERSIONS_TO_CACHE) {\n await fs.promises\n .unlink(path.join(cacheDirectory, cacheFiles[i]))\n .catch(() => {})\n }\n }\n}\n\nexport async function downloadNativeNextSwc(\n version: string,\n bindingsDirectory: string,\n triplesABI: Array<string>\n) {\n for (const triple of triplesABI) {\n const pkgName = `@next/swc-${triple}`\n const tarFileName = `${pkgName.substring(6)}-${version}.tgz`\n const outputDirectory = path.join(bindingsDirectory, pkgName)\n\n if (fs.existsSync(outputDirectory)) {\n // if the package is already downloaded a different\n // failure occurred than not being present\n return\n }\n\n await fs.promises.mkdir(outputDirectory, { recursive: true })\n await extractBinary(outputDirectory, pkgName, tarFileName)\n }\n}\n\nexport async function downloadWasmSwc(\n version: string,\n wasmDirectory: string,\n variant: 'nodejs' | 'web' = 'nodejs'\n) {\n const pkgName = `@next/swc-wasm-${variant}`\n const tarFileName = `${pkgName.substring(6)}-${version}.tgz`\n const outputDirectory = path.join(wasmDirectory, pkgName)\n\n if (fs.existsSync(outputDirectory)) {\n // if the package is already downloaded a different\n // failure occurred than not being present\n return\n }\n\n await fs.promises.mkdir(outputDirectory, { recursive: true })\n await extractBinary(outputDirectory, pkgName, tarFileName)\n}\n"],"names":["downloadNativeNextSwc","downloadWasmSwc","WritableStream","require","MAX_VERSIONS_TO_CACHE","extractBinary","outputDirectory","pkgName","tarFileName","cacheDirectory","getCacheDirectory","process","env","extractFromTar","x","file","path","join","cwd","strip","fs","existsSync","Log","info","promises","mkdir","recursive","tempFile","Date","now","registry","getRegistry","downloadUrl","fetch","then","res","ok","body","error","Error","status","cacheWriteStream","createWriteStream","pipeTo","write","chunk","Promise","resolve","reject","close","access","rename","cacheFiles","readdir","length","sort","a","b","localeCompare","i","unlink","catch","version","bindingsDirectory","triplesABI","triple","substring","wasmDirectory","variant"],"mappings":";;;;;;;;;;;;;;;IA2GsBA,qBAAqB;eAArBA;;IAqBAC,eAAe;eAAfA;;;2DAhIP;6DACE;6DACI;qBACH;6BAGU;mCACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAHlC,MAAM,EAAEC,cAAc,EAAE,GACtBC,QAAQ;AAIV,MAAMC,wBAAwB;AAE9B,eAAeC,cACbC,eAAuB,EACvBC,OAAe,EACfC,WAAmB;IAEnB,MAAMC,iBAAiBC,IAAAA,oCAAiB,EACtC,YACAC,QAAQC,GAAG,CAAC,gBAAgB;IAG9B,MAAMC,iBAAiB,IACrBC,IAAAA,MAAC,EAAC;YACAC,MAAMC,aAAI,CAACC,IAAI,CAACR,gBAAgBD;YAChCU,KAAKZ;YACLa,OAAO;QACT;IAEF,IAAI,CAACC,WAAE,CAACC,UAAU,CAACL,aAAI,CAACC,IAAI,CAACR,gBAAgBD,eAAe;QAC1Dc,KAAIC,IAAI,CAAC,CAAC,wBAAwB,EAAEhB,QAAQ,OAAO,EAAEE,gBAAgB;QACrE,MAAMW,WAAE,CAACI,QAAQ,CAACC,KAAK,CAAChB,gBAAgB;YAAEiB,WAAW;QAAK;QAC1D,MAAMC,WAAWX,aAAI,CAACC,IAAI,CACxBR,gBACA,GAAGD,YAAY,MAAM,EAAEoB,KAAKC,GAAG,IAAI;QAGrC,MAAMC,WAAWC,IAAAA,wBAAW;QAE5B,MAAMC,cAAc,GAAGF,WAAWvB,QAAQ,GAAG,EAAEC,aAAa;QAE5D,MAAMyB,MAAMD,aAAaE,IAAI,CAAC,CAACC;YAC7B,MAAM,EAAEC,EAAE,EAAEC,IAAI,EAAE,GAAGF;YACrB,IAAI,CAACC,MAAM,CAACC,MAAM;gBAChBf,KAAIgB,KAAK,CAAC,CAAC,oCAAoC,EAAEN,aAAa;YAChE;YAEA,IAAI,CAACI,IAAI;gBACP,MAAM,qBAAqD,CAArD,IAAIG,MAAM,CAAC,2BAA2B,EAAEJ,IAAIK,MAAM,EAAE,GAApD,qBAAA;2BAAA;gCAAA;kCAAA;gBAAoD;YAC5D;YACA,IAAI,CAACH,MAAM;gBACT,MAAM,qBAA2C,CAA3C,IAAIE,MAAM,mCAAV,qBAAA;2BAAA;gCAAA;kCAAA;gBAA0C;YAClD;YACA,MAAME,mBAAmBrB,WAAE,CAACsB,iBAAiB,CAACf;YAC9C,OAAOU,KAAKM,MAAM,CAChB,IAAIzC,eAAe;gBACjB0C,OAAMC,KAAK;oBACT,OAAO,IAAIC,QAAc,CAACC,SAASC,SACjCP,iBAAiBG,KAAK,CAACC,OAAO,CAACP;4BAC7B,IAAIA,OAAO;gCACTU,OAAOV;gCACP;4BACF;4BAEAS;wBACF;gBAEJ;gBACAE;oBACE,OAAO,IAAIH,QAAc,CAACC,SAASC,SACjCP,iBAAiBQ,KAAK,CAAC,CAACX;4BACtB,IAAIA,OAAO;gCACTU,OAAOV;gCACP;4BACF;4BAEAS;wBACF;gBAEJ;YACF;QAEJ;QAEA,MAAM3B,WAAE,CAACI,QAAQ,CAAC0B,MAAM,CAACvB,UAAU,+BAA+B;;QAClE,MAAMP,WAAE,CAACI,QAAQ,CAAC2B,MAAM,CAACxB,UAAUX,aAAI,CAACC,IAAI,CAACR,gBAAgBD;IAC/D,OAAO;QACLc,KAAIC,IAAI,CAAC,CAAC,yBAAyB,EAAEhB,QAAQ,GAAG,CAAC;IACnD;IACA,MAAMM;IAEN,MAAMuC,aAAa,MAAMhC,WAAE,CAACI,QAAQ,CAAC6B,OAAO,CAAC5C;IAE7C,IAAI2C,WAAWE,MAAM,GAAGlD,uBAAuB;QAC7CgD,WAAWG,IAAI,CAAC,CAACC,GAAGC;YAClB,IAAID,EAAEF,MAAM,GAAGG,EAAEH,MAAM,EAAE,OAAO,CAAC;YACjC,OAAOE,EAAEE,aAAa,CAACD;QACzB;QAEA,iCAAiC;QACjC,IAAK,IAAIE,IAAI,GAAGA,KAAKA,IAAIP,WAAWE,MAAM,GAAGlD,sBAAuB;YAClE,MAAMgB,WAAE,CAACI,QAAQ,CACdoC,MAAM,CAAC5C,aAAI,CAACC,IAAI,CAACR,gBAAgB2C,UAAU,CAACO,EAAE,GAC9CE,KAAK,CAAC,KAAO;QAClB;IACF;AACF;AAEO,eAAe7D,sBACpB8D,OAAe,EACfC,iBAAyB,EACzBC,UAAyB;IAEzB,KAAK,MAAMC,UAAUD,WAAY;QAC/B,MAAMzD,UAAU,CAAC,UAAU,EAAE0D,QAAQ;QACrC,MAAMzD,cAAc,GAAGD,QAAQ2D,SAAS,CAAC,GAAG,CAAC,EAAEJ,QAAQ,IAAI,CAAC;QAC5D,MAAMxD,kBAAkBU,aAAI,CAACC,IAAI,CAAC8C,mBAAmBxD;QAErD,IAAIa,WAAE,CAACC,UAAU,CAACf,kBAAkB;YAClC,mDAAmD;YACnD,0CAA0C;YAC1C;QACF;QAEA,MAAMc,WAAE,CAACI,QAAQ,CAACC,KAAK,CAACnB,iBAAiB;YAAEoB,WAAW;QAAK;QAC3D,MAAMrB,cAAcC,iBAAiBC,SAASC;IAChD;AACF;AAEO,eAAeP,gBACpB6D,OAAe,EACfK,aAAqB,EACrBC,UAA4B,QAAQ;IAEpC,MAAM7D,UAAU,CAAC,eAAe,EAAE6D,SAAS;IAC3C,MAAM5D,cAAc,GAAGD,QAAQ2D,SAAS,CAAC,GAAG,CAAC,EAAEJ,QAAQ,IAAI,CAAC;IAC5D,MAAMxD,kBAAkBU,aAAI,CAACC,IAAI,CAACkD,eAAe5D;IAEjD,IAAIa,WAAE,CAACC,UAAU,CAACf,kBAAkB;QAClC,mDAAmD;QACnD,0CAA0C;QAC1C;IACF;IAEA,MAAMc,WAAE,CAACI,QAAQ,CAACC,KAAK,CAACnB,iBAAiB;QAAEoB,WAAW;IAAK;IAC3D,MAAMrB,cAAcC,iBAAiBC,SAASC;AAChD","ignoreList":[0]}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists