{"version":3,"sources":["jsdelivr-header.js","/npm/@purpleprivacy/tesseract-cli@2.0.1/dist/cli.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;OCLS,YAAe,mBACjB,SAAU,cACV,OAAQ,YACN,mBAAsB,4BACtB,kBAAqB,8BACrB,oBAAuB,gCACvB,SAAY,uBACZ,kBAAqB,MAE9B,MAAM,WAAa,0BAA0B,KACvC,UAAY,KAAK,QAAQ,YAC/B,SAAS,gBACL,MAAM,EAAI,IAAI,KACR,EAAO,GAAM,OAAO,GAAG,SAAS,EAAG,KACzC,MAAO,GAAG,EAAE,iBAAiB,EAAI,EAAE,WAAa,MAAM,EAAI,EAAE,cAAc,EAAI,EAAE,eAAe,EAAI,EAAE,iBAAiB,EAAI,EAAE,eAChI,CACA,MAAM,QAAU,IAAI,QACpB,QACK,KAAK,sBACL,SAAS,SAAU,0BACnB,OAAO,cAAe,+BAAgC,WACtD,QAAO,MAAO,EAAM,KACrB,MAAM,EAAW,KAAK,QAAQ,GAC9B,QAAQ,IAAI,6BAA6B,KAAK,SAAS,QAAQ,MAAO,QAEtE,MAAM,QAAgB,eAAe,GACrC,cAAc,GAEd,MAAM,EAAS,KAAK,QAAQ,EAAK,KAAO,WACxC,GAAG,UAAU,EAAQ,CAAE,WAAW,IAClC,MAAM,EAAY,gBACZ,EAAW,KAAK,KAAK,EAAQ,oBAAoB,UACvD,gBAAgB,EAAU,EAAS,GAEnC,MAAM,EAAmB,KAAK,QAAQ,UAAW,oBAC3C,EAAU,KAAK,QAAQ,QAAQ,MAAO,yBACtC,EAAkB,KAAK,KAAK,EAAS,gBACrC,EAAgB,KAAK,KAAK,EAAS,SAEzC,IACI,GAAG,OAAO,EAAS,CAAE,WAAW,EAAM,OAAO,GACjD,CACA,MAAQ,CACR,GAAG,OAAO,EAAkB,EAAS,CAAE,WAAW,IAElD,IACI,MAAM,EAAgB,KAAK,QAAQ,GAC7B,EAAc,KAAK,KAAK,EAAS,WACvC,IACI,GAAG,OAAO,EAAa,CAAE,WAAW,EAAM,OAAO,GACrD,CACA,MAAQ,CACR,IACI,GAAG,YAAY,EAAe,EAAa,MAC/C,CACA,MACI,GAAG,OAAO,EAAe,EAAa,CAAE,WAAW,GACvD,CACJ,CACA,MAAO,GACH,QAAQ,KAAK,yCAA0C,EAC3D,CAEA,SAAS,EAAO,EAAK,GACjB,OAAO,IAAI,SAAQ,CAAC,EAAS,KACzB,MAAM,EAAQ,KAAK,EAAK,CAAE,MAAK,IAAK,QAAQ,MAAQ,IAC5C,EACA,EAAO,GAEP,GAAS,IAEjB,EAAM,QAAQ,KAAK,QAAQ,QAC3B,EAAM,QAAQ,KAAK,QAAQ,OAAO,GAE1C,CACA,WACI,IACS,GAAG,WAAW,KACf,QAAQ,IAAI,kDACN,EAAO,SAAU,IAEtB,GAAG,WAAW,KACf,QAAQ,IAAI,sDACN,EAAO,gBAAiB,IAElC,QAAQ,IAAI,gFACN,EAAO,YAAa,EAC9B,CACA,MAAO,GACH,QAAQ,MAAM,iCAAkC,EACpD,CACH,EAhBD,EAgBI,IAER,QAAQ,MAAM,QAAQ","file":"/npm/@purpleprivacy/tesseract-cli@2.0.1/dist/cli.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@purpleprivacy/tesseract-cli@2.0.1/dist/cli.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { analyzeProject } from \"./core/analyzer.js\";\nimport { reportResults } from \"./output/reporter.js\";\nimport { writeJsonReport } from \"./output/jsonWriter.js\";\nimport { exec } from \"child_process\";\nimport { fileURLToPath } from \"url\";\n// Shim __dirname for ES modules\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nfunction makeTimestamp() {\n    const d = new Date();\n    const pad = (n) => String(n).padStart(2, \"0\");\n    return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`;\n}\nconst program = new Command();\nprogram\n    .name(\"tesseract-analysis\")\n    .argument(\"<path>\", \"Path to project folder\")\n    .option(\"--out <dir>\", \"Output directory for reports\", \"reports\")\n    .action(async (base, opts) => {\n    const basePath = path.resolve(base);\n    console.log(`🧠 Analyzing codebase at: ${path.relative(process.cwd(), basePath)}\\n`);\n    // Run analysis\n    const results = await analyzeProject(basePath);\n    reportResults(results);\n    // Write JSON report\n    const outDir = path.resolve(opts.out || \"reports\");\n    fs.mkdirSync(outDir, { recursive: true });\n    const timestamp = makeTimestamp();\n    const jsonPath = path.join(outDir, `cognitive-report-${timestamp}.json`);\n    writeJsonReport(basePath, results, jsonPath);\n    // ✅ Resolve packaged visualizer (relative to dist/cli.js) and run from a working dir\n    const pkgVisualizerDir = path.resolve(__dirname, \"../../visualizer\");\n    const workDir = path.resolve(process.cwd(), \".tesseract-visualizer\");\n    const workNodeModules = path.join(workDir, \"node_modules\");\n    const workNextBuild = path.join(workDir, \".next\");\n    // Fresh copy into working dir (Next.js has trouble building from node_modules)\n    try {\n        fs.rmSync(workDir, { recursive: true, force: true });\n    }\n    catch { }\n    fs.cpSync(pkgVisualizerDir, workDir, { recursive: true });\n    // Link (or copy) the reports directory so the UI can read latest JSONs\n    try {\n        const reportsTarget = path.resolve(outDir);\n        const reportsLink = path.join(workDir, \"reports\");\n        try {\n            fs.rmSync(reportsLink, { recursive: true, force: true });\n        }\n        catch { }\n        try {\n            fs.symlinkSync(reportsTarget, reportsLink, \"dir\");\n        }\n        catch {\n            fs.cpSync(reportsTarget, reportsLink, { recursive: true });\n        }\n    }\n    catch (e) {\n        console.warn(\"⚠️ Unable to link/copy reports folder:\", e);\n    }\n    // Helper: run commands via shell so npm is resolved from PATH (avoids NVM ENOENT)\n    function execIn(cmd, cwd) {\n        return new Promise((resolve, reject) => {\n            const child = exec(cmd, { cwd, env: process.env }, (err) => {\n                if (err)\n                    reject(err);\n                else\n                    resolve();\n            });\n            child.stdout?.pipe(process.stdout);\n            child.stderr?.pipe(process.stderr);\n        });\n    }\n    (async () => {\n        try {\n            if (!fs.existsSync(workNodeModules)) {\n                console.log(\"📦 Installing visualizer dependencies...\");\n                await execIn(\"npm ci\", workDir);\n            }\n            if (!fs.existsSync(workNextBuild)) {\n                console.log(\"🧩 Building visualizer for the first time...\");\n                await execIn(\"npm run build\", workDir);\n            }\n            console.log(\"🚀 Launching visualizer (production mode) on http://localhost:5555 ...\");\n            await execIn(\"npm start\", workDir);\n        }\n        catch (err) {\n            console.error(\"❌ Failed to launch visualizer:\", err);\n        }\n    })();\n});\nprogram.parse(process.argv);\n"]}