{"version":3,"sources":["jsdelivr-header.js","/npm/@bourgils/forward@0.6.2/dist/cli/index.js"],"names":[],"mappings":"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","file":"/npm/@bourgils/forward@0.6.2/dist/cli/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@bourgils/forward@0.6.2/dist/cli/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// src/cli/index.js\nimport { Command as Command14 } from \"commander\";\n\n// src/services/EnvService.js\nimport path from \"path\";\nimport os from \"os\";\nimport fs from \"fs-extra\";\nimport crypto from \"crypto\";\n\n// src/lib/Logger.js\nimport chalk from \"chalk\";\nimport boxen from \"boxen\";\nvar boxenOpts = {\n  padding: 1,\n  margin: 1,\n  title: \"\",\n  titleAlignment: \"center\"\n};\nvar printInBox = (borderColor) => (title, content) => console.log(boxen(content, { ...boxenOpts, title, borderColor }));\nvar withSpinContext = (spinner, ...msg) => async (callback) => {\n  if (spinner) spinner.stop();\n  await callback(...msg);\n  if (spinner) spinner.start();\n};\nvar Logger = class {\n  constructor() {\n    this.spinContext = {\n      info: (spinner, ...msg) => withSpinContext(spinner, ...msg)(this.info.bind(this)),\n      warn: (spinner, ...msg) => withSpinContext(spinner, ...msg)(this.warn.bind(this)),\n      error: (spinner, ...msg) => withSpinContext(spinner, ...msg)(this.error.bind(this)),\n      success: (spinner, ...msg) => withSpinContext(spinner, ...msg)(this.success.bind(this)),\n      log: (spinner, ...msg) => withSpinContext(spinner, ...msg)(this.log.bind(this)),\n      raw: (spinner, ...msg) => withSpinContext(spinner, ...msg)(this.raw.bind(this))\n    };\n  }\n  info(...msg) {\n    this._log(\"cyan\", \"\\u2139\", ...msg);\n  }\n  warn(...msg) {\n    this._log(\"yellow\", \"\\u26A0\", ...msg);\n  }\n  error(...msg) {\n    this._log(\"red\", \"\\u2718\", ...msg);\n  }\n  success(...msg) {\n    this._log(null, chalk.green(\"\\u2714\"), ...msg);\n  }\n  log(...msg) {\n    this._log(\"gray\", \"\\u2192\", ...msg);\n  }\n  raw(...msg) {\n    this._log(null, null, ...msg);\n  }\n  secondary(...msg) {\n    this._log(\"gray\", null, ...msg);\n  }\n  _log(color, prefix, ...msg) {\n    if (prefix) msg.unshift(prefix);\n    if (!color) {\n      console.log(...msg);\n      return;\n    }\n    console.log(chalk[color](`${msg.join(\" \")}`));\n  }\n};\nLogger.prototype.box = {\n  info: printInBox(\"cyan\"),\n  warn: printInBox(\"yellow\"),\n  error: printInBox(\"red\"),\n  success: printInBox(\"green\"),\n  log: printInBox(\"gray\")\n};\nvar Logger_default = new Logger();\n\n// src/services/EnvService.js\nimport chalk2 from \"chalk\";\nvar EnvService = class {\n  constructor() {\n    this.env = process.env;\n    this.baseDir = path.join(os.homedir(), \".fwd\");\n    this.envsDir = path.join(this.baseDir, \"envs\");\n    this.workspacesDir = path.join(this.baseDir, \"workspaces\");\n    this.repositoriesDir = path.join(this.baseDir, \"repositories\");\n    fs.ensureDirSync(this.baseDir);\n    fs.ensureDirSync(this.envsDir);\n    fs.ensureDirSync(this.workspacesDir);\n    fs.ensureDirSync(this.repositoriesDir);\n  }\n  getProjectId(cwd = process.cwd()) {\n    return crypto.createHash(\"md5\").update(cwd).digest(\"hex\").slice(0, 8);\n  }\n  getProjectName(cwd = process.cwd()) {\n    return path.basename(cwd);\n  }\n  async setProjectName(projectName) {\n    await this.setEnvValue(\"projectName\", projectName);\n  }\n  getPackageJsonPath() {\n    return path.join(process.cwd(), \"package.json\");\n  }\n  hasPackageJson() {\n    return fs.existsSync(this.getPackageJsonPath());\n  }\n  getScriptsList() {\n    let scriptsList = [];\n    const pkgPath2 = this.getPackageJsonPath();\n    if (fs.pathExistsSync(pkgPath2)) {\n      try {\n        const pkg = fs.readJsonSync(pkgPath2);\n        scriptsList = Object.keys(pkg.scripts || {});\n      } catch {\n        scriptsList = [];\n      }\n    }\n    return scriptsList;\n  }\n  getScripts() {\n    let scriptsList = [];\n    const pkgPath2 = this.getPackageJsonPath();\n    if (fs.pathExistsSync(pkgPath2)) {\n      try {\n        const pkg = fs.readJsonSync(pkgPath2);\n        scriptsList = Object.keys(pkg.scripts || {}).map((name) => ({\n          name,\n          value: pkg.scripts[name]\n        }));\n      } catch {\n        scriptsList = [];\n      }\n    }\n    return scriptsList;\n  }\n  async getEnvPaths() {\n    const id = this.getProjectId();\n    const envFile = path.join(this.envsDir, `${id}.json`);\n    const tempDir = path.join(this.workspacesDir, id);\n    await fs.ensureDir(this.envsDir);\n    return { id, tempDir, envFile, workspacesDir: this.workspacesDir, envsDir: this.envsDir };\n  }\n  async getEnvConfig() {\n    const { envFile } = await this.getEnvPaths();\n    if (fs.pathExistsSync(envFile)) {\n      return fs.readJson(envFile);\n    }\n    return {};\n  }\n  async setEnvValue(key, value) {\n    const { envFile } = await this.getEnvPaths();\n    const current = await this.getEnvConfig();\n    current[key] = value;\n    await fs.writeJson(envFile, current, { spaces: 2 });\n  }\n  async getEnvValue(key) {\n    const config = await this.getEnvConfig();\n    return config[key] || null;\n  }\n  async setPipe(pipe) {\n    await this.setEnvValue(\"currentPipe\", pipe);\n    await this.setEnvValue(\"autoDetectedPipe\", pipe);\n  }\n  async getPipe() {\n    return this.getEnvValue(\"currentPipe\");\n  }\n  async setPackageManager(pm) {\n    await this.setEnvValue(\"currentPackageManager\", pm);\n    await this.setEnvValue(\"autoDetectedPackageManager\", pm);\n  }\n  async getPackageManager() {\n    return this.getEnvValue(\"currentPackageManager\");\n  }\n  async setEnv(env) {\n    await this.setEnvValue(\"env\", env);\n  }\n  async getEnv() {\n    return this.getEnvValue(\"env\");\n  }\n  async clearPipe() {\n    const { envFile } = await this.getEnvPaths();\n    if (await fs.pathExists(envFile)) {\n      await fs.remove(envFile);\n    }\n  }\n  async createEnv() {\n    const { id, tempDir } = await this.getEnvPaths();\n    return { id, tempDir };\n  }\n  async getEnvLinesInfo() {\n    const config = await this.getEnvConfig();\n    const { tempDir } = await this.getEnvPaths();\n    if (!config.currentPackageManager) {\n      Logger_default.error(\"No active environment found for this project. Run `fwd env init`\");\n      return;\n    }\n    const lines = [];\n    lines.push(`Project name: ${chalk2.bold(chalk2.cyan(config.projectName))}`);\n    if (config.currentPackageManager) {\n      lines.push(`Package Manager: ${chalk2.bold(chalk2.cyan(config.currentPackageManager))}`);\n      if (config.autoDetectedPackageManager && config.autoDetectedPackageManager !== config.currentPackageManager) {\n        lines.push(`   (auto-detected: ${chalk2.gray(config.autoDetectedPackageManager)})`);\n      }\n    }\n    const scriptsList = this.getScriptsList();\n    lines.push(\n      scriptsList.length > 0 ? `Scripts: ${chalk2.bold(chalk2.cyan(scriptsList.join(\", \")))}` : \"Scripts: none\"\n    );\n    lines.push(`Workspace: ${chalk2.bold(chalk2.cyan(tempDir))}`);\n    return lines;\n  }\n  async showEnvLinesInfo() {\n    const envLinesInfo = await this.getEnvLinesInfo();\n    const { envsDir } = await this.getEnvPaths();\n    Logger_default.raw(\"\\n\");\n    Logger_default.secondary(chalk2.bold(\"Environment\"), `(${envsDir}/${this.getProjectId()}.json)`);\n    Logger_default.raw(\"\\n\");\n    for (const line of envLinesInfo) {\n      Logger_default.raw(`\t\\u2192 ${line}`);\n    }\n    Logger_default.raw(\"\\n\");\n  }\n};\nvar EnvService_default = EnvService;\n\n// src/services/DetectorService.js\nimport path2 from \"path\";\nimport fs2 from \"fs-extra\";\nvar pipeSignatures = [\n  { name: \"vite\", files: [\"vite.config.js\", \"vite.config.ts\"], pkg: \"vite\" },\n  { name: \"next\", files: [\"next.config.js\", \"next.config.mjs\"], pkg: \"next\" },\n  { name: \"nuxt\", files: [\"nuxt.config.js\", \"nuxt.config.ts\"], pkg: \"nuxt\" },\n  { name: \"react-scripts\", pkg: \"react-scripts\" },\n  { name: \"bun\", files: [\"bun.lockb\"] },\n  { name: \"astro\", pkg: \"astro\" }\n];\nvar commonFiles = [\n  \"src/index.js\",\n  \"src/server.js\",\n  \"src/app.js\",\n  \"src/main.js\",\n  \"index.js\",\n  \"server.js\",\n  \"app.js\",\n  \"main.js\"\n];\nvar locks = [\n  { name: \"pnpm\", file: \"pnpm-lock.yaml\" },\n  { name: \"yarn\", file: \"yarn.lock\" },\n  { name: \"bun\", file: \"bun.lockb\" },\n  { name: \"npm\", file: \"package-lock.json\" }\n];\nvar DetectorService = class {\n  constructor() {\n    this.pipeSignatures = pipeSignatures;\n    this.commonFiles = commonFiles;\n    this.locks = locks;\n  }\n  detectPipe(cwd = process.cwd()) {\n    var _a, _b;\n    const pkgJsonPath = path2.join(cwd, \"package.json\");\n    const hasPkgJson = fs2.existsSync(pkgJsonPath);\n    const pkg = hasPkgJson ? JSON.parse(fs2.readFileSync(pkgJsonPath)) : null;\n    for (const pipe of this.pipeSignatures) {\n      if (pipe.files) {\n        for (const file of pipe.files) {\n          if (fs2.existsSync(path2.join(cwd, file))) return { pipe: pipe.name, env: \"frontend\" };\n        }\n      }\n      if (pipe.pkg && pkg) {\n        const allDeps = {\n          ...pkg.dependencies,\n          ...pkg.devDependencies\n        };\n        if (allDeps[pipe.pkg]) {\n          return { pipe: pipe.name, env: \"frontend\" };\n        }\n      }\n    }\n    for (const file of this.commonFiles) {\n      if (fs2.existsSync(path2.join(cwd, file)) && (((_a = pkg == null ? void 0 : pkg.scripts) == null ? void 0 : _a.start) || ((_b = pkg == null ? void 0 : pkg.scripts) == null ? void 0 : _b.dev))) {\n        return { pipe: \"node\", env: \"backend\" };\n      }\n    }\n    return null;\n  }\n  detectPackageManager(cwd = process.cwd()) {\n    for (const lock of this.locks) {\n      if (fs2.existsSync(path2.join(cwd, lock.file))) return lock.name;\n    }\n    return \"npm\";\n  }\n  detectProjectName(cwd = process.cwd()) {\n    return path2.basename(cwd);\n  }\n  detectEnvironment() {\n    return {\n      projectName: this.detectProjectName(),\n      ...this.detectPipe(),\n      packageManager: this.detectPackageManager()\n    };\n  }\n};\nvar DetectorService_default = DetectorService;\n\n// src/services/RunnerService.js\nimport path4 from \"path\";\nimport fs4 from \"fs-extra\";\nimport { execa } from \"execa\";\nimport prettyMs from \"pretty-ms\";\nimport prettyBytes from \"pretty-bytes\";\nimport chalk3 from \"chalk\";\n\n// src/utils/folder.js\nimport fs3 from \"fs\";\nimport path3 from \"path\";\nvar getFolderSize = (folderPath) => {\n  let total = 0;\n  function walk(dir) {\n    const files = fs3.readdirSync(dir);\n    for (const file of files) {\n      const fullPath = path3.join(dir, file);\n      const stat = fs3.statSync(fullPath);\n      if (stat.isDirectory()) walk(fullPath);\n      else total += stat.size;\n    }\n  }\n  walk(folderPath);\n  return total;\n};\n\n// src/services/RunnerService.js\nimport prompts from \"prompts\";\nvar RunnerService = class {\n  constructor(envService) {\n    this.alive = true;\n    this.envService = envService;\n  }\n  async run(pipe, args = [], { installDeps = true, onReadyCallback, cwd = process.cwd(), cleanups = [] }) {\n    this.start = Date.now();\n    this.cwd = cwd;\n    this.pipe = pipe;\n    this.args = args;\n    this.onReadyCallback = onReadyCallback;\n    this.cleanups = cleanups;\n    const { tempDir } = await this.envService.getEnvPaths();\n    this.tempDir = tempDir;\n    this.lockPath = path4.join(tempDir, \".fwd.lock\");\n    this.realNodeModules = path4.join(cwd, \"node_modules\");\n    this.tempNodeModules = path4.join(tempDir, \"node_modules\");\n    this.copied = [];\n    this.linked = false;\n    await this._prepareEnv();\n    await this._copyFiles();\n    if (installDeps) {\n      await this._installDependencies();\n      await this._linkNodeModules();\n    } else {\n      Logger_default.info(\"Skipping dependencies installation\");\n    }\n    try {\n      return await this._runPipe();\n    } catch (error) {\n      if (!error.message.includes(\"CTRL-C\")) {\n        Logger_default.error(error);\n      }\n      await this._clean();\n    }\n  }\n  runtimeCheck() {\n    return this._runtimeHook.bind(this);\n  }\n  _runtimeHook(thisCommand, actionCommand) {\n    const byPassedCommands = [\"doctor\", \"inspect\", \"prune\"];\n    const options = actionCommand.options || [];\n    const hasRepositoryOptionDefined = options.some(\n      (opt) => opt.long === \"--repository\" || opt.short === \"-r\"\n    );\n    const repositoryValue = actionCommand.opts().repository;\n    const hasRepositoryOptionPassed = repositoryValue !== void 0 && hasRepositoryOptionDefined;\n    if (byPassedCommands.includes(actionCommand.name()) || hasRepositoryOptionPassed) return;\n    if (!this.envService.hasPackageJson()) {\n      Logger_default.error(\"No package.json found\");\n      const currentProjectDirectoryName = path4.basename(process.cwd());\n      Logger_default.raw(\n        `Are you sure that \\`${chalk3.bold(currentProjectDirectoryName)}\\` is a valid nodejs project?`\n      );\n      process.exit(1);\n    }\n  }\n  async _prepareEnv() {\n    await fs4.emptyDir(this.tempDir);\n    await fs4.writeFile(this.lockPath, Date.now().toString());\n  }\n  async _copyFiles() {\n    const criticalFiles = [\n      \"package.json\",\n      \"vite.config.js\",\n      \"vite.config.ts\",\n      \"vite.config.mjs\",\n      \"next.config.js\",\n      \"next.config.mjs\",\n      \".env\",\n      \".env.local\",\n      \"tsconfig.json\",\n      \"jsconfig.json\",\n      \"package-lock.json\",\n      \"pnpm-lock.yaml\",\n      \"yarn.lock\",\n      \"bun.lockb\"\n    ];\n    for (const file of criticalFiles) {\n      const src = path4.join(this.cwd, file);\n      const dest = path4.join(this.tempDir, file);\n      if (fs4.pathExistsSync(src)) {\n        fs4.ensureSymlinkSync(src, dest, \"junction\");\n        this.copied.push(file);\n      }\n    }\n    this.packageManager = await this.envService.getPackageManager();\n    const lockFiles = {\n      npm: \"package-lock.json\",\n      pnpm: \"pnpm-lock.yaml\",\n      yarn: \"yarn.lock\",\n      bun: \"bun.lockb\"\n    };\n    const lockFile = lockFiles[this.packageManager];\n    if (lockFile && fs4.pathExistsSync(path4.join(this.cwd, lockFile))) {\n      fs4.copySync(path4.join(this.cwd, lockFile), path4.join(this.tempDir, lockFile));\n      this.copied.push(lockFile);\n    }\n    Logger_default.info(`Workspace dir: ${chalk3.bold(this.tempDir)}`);\n    Logger_default.info(`Symlink to: ${chalk3.bold(this.copied.join(\", \"))}`);\n  }\n  async _installDependencies() {\n    if (fs4.pathExistsSync(this.realNodeModules)) {\n      Logger_default.warn(`It looks like you have ${chalk3.bold(\"node_modules\")} folder in your project`);\n      const answer = await prompts({\n        type: \"confirm\",\n        name: \"remove\",\n        message: \"Do you want to remove it?\"\n      });\n      if (answer.remove) {\n        fs4.removeSync(this.realNodeModules);\n      }\n    }\n    this.env = {\n      ...process.env,\n      PATH: `${path4.join(this.tempDir, \"node_modules\", \".bin\")}${path4.delimiter}${process.env.PATH}`\n    };\n    Logger_default.log(`Installing dependencies with ${chalk3.bold(this.packageManager)}\\u2026`);\n    const subprocess = execa(this.packageManager, [\"install\"], {\n      cwd: this.tempDir,\n      env: this.env\n    });\n    this._setupSignalCleanup();\n    try {\n      const { stdout, stderr } = await subprocess;\n      if (stdout) Logger_default.box.info(`${this.packageManager} install`, stdout);\n      if (stderr) Logger_default.box.error(\"Installation errors\", stderr);\n    } catch (error) {\n      Logger_default.error(`${this.packageManager} install failed: ${error.message}`);\n      await this._clean();\n    }\n  }\n  async _linkNodeModules() {\n    if (!fs4.pathExistsSync(this.realNodeModules) && fs4.pathExistsSync(this.tempNodeModules)) {\n      Logger_default.log(\"Linking temp dependencies into project\\u2026\");\n      fs4.ensureSymlinkSync(this.tempNodeModules, this.realNodeModules, \"junction\");\n      this.linked = true;\n      Logger_default.success(\"Linked\");\n    }\n  }\n  async _runPipe() {\n    Logger_default.raw(\"\\n\");\n    Logger_default.info(`Running: ${chalk3.bold(`${this.pipe} ${this.args.join(\" \")}`)}\n`);\n    const child = execa(this.pipe, this.args, {\n      cwd: this.cwd,\n      stdio: \"inherit\",\n      env: this.env\n    });\n    if (this.onReadyCallback) {\n      await this.onReadyCallback(child);\n    }\n    this._setupSignalCleanup();\n    return child;\n  }\n  _setupSignalCleanup() {\n    const signals = [\"SIGINT\", \"SIGTERM\", \"SIGHUP\", \"exit\"];\n    signals.forEach((signal) => {\n      process.once(signal, async () => {\n        await this._clean();\n      });\n    });\n  }\n  async _clean() {\n    if (!this.alive) return;\n    this.alive = false;\n    Logger_default.raw(\"\\n\");\n    if (fs4.pathExistsSync(this.lockPath) && fs4.lstatSync(this.lockPath).isFile()) {\n      fs4.removeSync(this.lockPath);\n    }\n    let sizeBefore = 0;\n    if (fs4.pathExistsSync(this.tempNodeModules) && fs4.pathExistsSync(this.realNodeModules) && fs4.lstatSync(this.realNodeModules).isSymbolicLink()) {\n      Logger_default.log(\"Removing linked node_modules from project\\u2026\");\n      sizeBefore = getFolderSize(this.tempNodeModules);\n      fs4.removeSync(this.realNodeModules);\n      fs4.removeSync(this.tempNodeModules);\n    }\n    if (fs4.pathExistsSync(this.tempDir) && fs4.lstatSync(this.tempDir).isDirectory()) {\n      try {\n        sizeBefore = getFolderSize(this.tempDir);\n        fs4.removeSync(this.tempDir);\n      } catch {\n      }\n    }\n    if (this.cleanups && this.cleanups.length > 0) {\n      for (const cleanup of this.cleanups) {\n        try {\n          await cleanup();\n        } catch (error) {\n          Logger_default.error(\"Error during custom cleanup:\", error);\n        }\n      }\n    }\n    Logger_default.log(\"Cleaning up workspace\\u2026\");\n    const duration = Date.now() - this.start;\n    Logger_default.success(\"Cleaned up\");\n    Logger_default.box.success(\n      \"Workspace removed\",\n      [\n        `\\u{1F4BE} ${prettyBytes(sizeBefore)} freed from disk`,\n        `\\u{1F4A8} Workspace lasted ${prettyMs(duration)}`\n      ].join(\"\\n\")\n    );\n    process.exit(0);\n  }\n};\nvar RunnerService_default = RunnerService;\n\n// src/services/index.js\nvar ServiceFactory = class {\n  constructor() {\n    this._envService = new EnvService_default();\n    this._detectorService = new DetectorService_default();\n    this._runnerService = new RunnerService_default(this._envService);\n  }\n  get envService() {\n    return this._envService;\n  }\n  get detectorService() {\n    return this._detectorService;\n  }\n  get runnerService() {\n    return this._runnerService;\n  }\n};\nvar services_default = new ServiceFactory();\n\n// src/lib/VersionManager.js\nimport { fileURLToPath } from \"url\";\nimport path5 from \"path\";\nimport fs5 from \"fs-extra\";\nvar __filename = fileURLToPath(import.meta.url);\nvar __dirname = path5.dirname(__filename);\nvar pkgPath = path5.resolve(__dirname, \"../../package.json\");\nvar VersionManager = class {\n  constructor() {\n    try {\n      this.pkg = JSON.parse(fs5.readFileSync(pkgPath, \"utf8\"));\n    } catch (error) {\n      console.error(\"Error reading package.json:\", error.message);\n      this.pkg = { version: \"0.0.0\" };\n    }\n  }\n  getVersion() {\n    return this.pkg.version;\n  }\n};\nvar VersionManager_default = new VersionManager();\n\n// src/lib/ProgramManager.js\nvar ProgramManager = class {\n  constructor(program) {\n    this.program = program;\n  }\n  start(commands) {\n    this.program.version(VersionManager_default.getVersion());\n    this.program.name(\"fwd\").description(\"Forward CLI \\u2013 Isolated runtime for your Node.js projects\").showHelpAfterError(true);\n    this.program.hook(\"preAction\", services_default.runnerService.runtimeCheck());\n    this._registerCommands(commands);\n    if (!process.argv.slice(2).length) {\n      this.program.outputHelp();\n      process.exit(0);\n    }\n    this.program.parse();\n  }\n  _registerCommands(commands) {\n    commands.forEach((command) => {\n      this.program.addCommand(command);\n    });\n  }\n};\nvar ProgramManager_default = ProgramManager;\n\n// src/cli/commands/env/index.js\nimport { Command as Command5 } from \"commander\";\n\n// src/cli/commands/env/init.js\nimport { Command } from \"commander\";\n\n// src/cli/handlers/env/init.js\nimport chalk4 from \"chalk\";\nvar initHandler = async ({ force = false }) => {\n  const config = await services_default.envService.getEnvConfig();\n  const hasExistingWorkspace = !!(config.currentPipe || config.currentPackageManager);\n  const { env, packageManager, projectName } = services_default.detectorService.detectEnvironment();\n  if (hasExistingWorkspace && !force) {\n    Logger_default.info(`A \\`${chalk4.bold(\"fwd\")}\\` environment is already detected for this project.`);\n    await services_default.envService.showEnvLinesInfo();\n    Logger_default.raw(\n      `Please run \\`fwd env reset\\` then \\`fwd env init\\` to reinitialize the current environment. Or set manually the environment using \\`fwd env set\\`.`\n    );\n    process.exit(1);\n  } else {\n    Logger_default.log(\n      `Creating a new environment for ${chalk4.bold(chalk4.cyan(projectName))} project ${chalk4.gray(`(${env})`)}\\u2026`\n    );\n    const { tempDir } = await services_default.envService.getEnvPaths();\n    await services_default.envService.createEnv();\n    await services_default.envService.setEnv(env);\n    Logger_default.log(`Setting the package manager to ${chalk4.bold(chalk4.cyan(packageManager))}`);\n    await services_default.envService.setPackageManager(packageManager);\n    Logger_default.log(`Setting workspace to ${chalk4.bold(chalk4.cyan(tempDir))}`);\n    await services_default.envService.setProjectName(projectName);\n  }\n  Logger_default.success(\"Environment initialized\");\n};\nvar init_default = initHandler;\n\n// src/cli/commands/env/init.js\nvar initCommand = new Command(\"init\").alias(\"i\").description(\"Detect and initialize the best environment for this project\").option(\"-f, --force\", \"Force initialize the environment\").action(init_default);\n\n// src/cli/commands/env/reset.js\nimport { Command as Command2 } from \"commander\";\n\n// src/cli/handlers/env/reset.js\nimport prompts2 from \"prompts\";\nimport fs6 from \"fs-extra\";\nimport path6 from \"path\";\nvar resetHandler = async ({ force }) => {\n  const { tempDir, envFile } = await services_default.envService.getEnvPaths();\n  if (await fs6.pathExists(path6.join(tempDir, \".fwd.lock\"))) {\n    Logger_default.error(\"A Forward process is currently running for this project.\");\n    Logger_default.secondary(\"Wait for it to finish before resetting.\");\n    return;\n  }\n  const filesToRemove = [];\n  if (fs6.pathExistsSync(envFile)) {\n    filesToRemove.push(envFile);\n  }\n  if (fs6.pathExistsSync(tempDir)) {\n    filesToRemove.push(tempDir);\n  }\n  if (!filesToRemove.length) {\n    Logger_default.warn(\"Nothing to reset \\u2014 no environment found.\");\n    return;\n  }\n  if (!force) {\n    const { confirm } = await prompts2({\n      type: \"confirm\",\n      name: \"confirm\",\n      message: `Are you sure you want to reset the fwd environment for this project?`,\n      initial: false\n    });\n    if (!confirm) {\n      Logger_default.info(\"Environment was not reset\");\n      return;\n    }\n  }\n  filesToRemove.forEach((file) => {\n    fs6.removeSync(file);\n  });\n  Logger_default.success(`Reset done`);\n};\nvar reset_default = resetHandler;\n\n// src/cli/commands/env/reset.js\nvar resetCommand = new Command2(\"reset\").alias(\"r\").description(\"Reset the current project's Forward workspace (pipe & cache)\").option(\"-f, --force\", \"Force reset the workspace\").action(reset_default);\n\n// src/cli/commands/env/set.js\nimport { Command as Command3 } from \"commander\";\n\n// src/cli/handlers/env/set.js\nimport prompts3 from \"prompts\";\n\n// src/cli/constants/package-manager.js\nvar packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"];\nvar package_manager_default = packageManagers;\n\n// src/cli/handlers/env/set.js\nimport chalk5 from \"chalk\";\nvar setHandler = async () => {\n  const { currentPackageManager, ...config } = await services_default.envService.getEnvConfig();\n  if (!config.projectName) {\n    Logger_default.info(\"Please run `fwd env init` to initialize the environment before\");\n    process.exit(0);\n  }\n  const projectName = services_default.detectorService.detectProjectName();\n  const autoDetectedPackageManager = services_default.detectorService.detectPackageManager();\n  const { selectedPackageManager } = await prompts3({\n    type: \"select\",\n    name: \"selectedPackageManager\",\n    message: \"Select a package manager for this project:\",\n    choices: package_manager_default.map((pm) => ({\n      title: pm === currentPackageManager ? `${pm} ${chalk5.green(\"\\u2714\")}` : pm,\n      value: pm,\n      description: pm === autoDetectedPackageManager ? \"(auto-detected)\" : \"\"\n    })),\n    initial: autoDetectedPackageManager ? package_manager_default.indexOf(autoDetectedPackageManager) : 0\n  });\n  if (!selectedPackageManager) {\n    Logger_default.warn(\"Package manager selection cancelled.\");\n    return;\n  }\n  if (autoDetectedPackageManager && autoDetectedPackageManager !== selectedPackageManager) {\n    const { confirm } = await prompts3({\n      type: \"confirm\",\n      name: \"confirm\",\n      message: `Override auto-detected ${chalk5.gray(`(${autoDetectedPackageManager})`)} settings?`,\n      initial: false\n    });\n    if (!confirm) {\n      Logger_default.info(\"Settings not changed.\");\n      return;\n    }\n  }\n  await services_default.envService.setEnvValue(\"currentPackageManager\", selectedPackageManager);\n  await services_default.envService.setEnvValue(\"projectName\", projectName);\n  Logger_default.success(`Environment configured for ${chalk5.bold(chalk5.cyan(projectName))}`);\n};\nvar set_default = setHandler;\n\n// src/cli/commands/env/set.js\nvar setCommand = new Command3(\"set\").description(\"Manually set the environment for the current project\").action(set_default);\n\n// src/cli/commands/env/show.js\nimport { Command as Command4 } from \"commander\";\n\n// src/cli/handlers/env/show.js\nvar showHandler = async () => {\n  await services_default.envService.showEnvLinesInfo();\n};\nvar show_default = showHandler;\n\n// src/cli/commands/env/show.js\nvar showCommand = new Command4(\"show\").description(\"Display current environment for this project\").alias(\"s\").action(show_default);\n\n// src/cli/commands/env/index.js\nvar envCommand = new Command5(\"env\").alias(\"e\").description(\"Manage fwd environment for current location\").showHelpAfterError(true).addCommand(initCommand).addCommand(showCommand).addCommand(setCommand).addCommand(resetCommand);\n\n// src/cli/commands/run.js\nimport { Command as Command6 } from \"commander\";\n\n// src/cli/handlers/run.js\nimport prompts5 from \"prompts\";\n\n// src/lib/ProxyServer.js\nimport ora from \"ora\";\nimport chalk7 from \"chalk\";\nimport open from \"open\";\n\n// src/utils/port-watcher.js\nimport { exec } from \"child_process\";\nimport psTree from \"ps-tree\";\nfunction getListeningPort(pid) {\n  return new Promise((resolve) => {\n    exec(`lsof -Pan -p ${pid} -iTCP -sTCP:LISTEN`, (err, stdout) => {\n      if (err || !stdout) return resolve(null);\n      const match = stdout.match(/:(\\d+)\\s\\(LISTEN\\)/);\n      resolve(match ? parseInt(match[1], 10) : null);\n    });\n  });\n}\nasync function waitForOpenPort(rootPid, timeout = 1e4) {\n  return new Promise((resolve, reject) => {\n    const start = Date.now();\n    const poll = () => {\n      psTree(rootPid, async (err, children) => {\n        if (err) return setTimeout(poll, 300);\n        const pidsToCheck = [rootPid, ...children.map((p) => p.PID)];\n        for (const pid of pidsToCheck) {\n          const port = await getListeningPort(pid);\n          if (port) return resolve(port);\n        }\n        if (Date.now() - start > timeout) {\n          return reject(new Error(`Timeout: no open port detected for PID ${rootPid}`));\n        }\n        setTimeout(poll, 300);\n      });\n    };\n    poll();\n  });\n}\n\n// src/lib/DomainManager.js\nimport fs7 from \"fs\";\nimport { execa as execa2 } from \"execa\";\nimport os2 from \"os\";\nimport chalk6 from \"chalk\";\nvar HOSTS_PATH = \"/etc/hosts\";\nvar DomainManager = class {\n  async writeToHosts(domain) {\n    const line = `127.0.0.1\t${domain}`;\n    const content = fs7.readFileSync(HOSTS_PATH, \"utf8\");\n    if (content.includes(line)) {\n      Logger_default.info(`${domain} is already in ${chalk6.bold(HOSTS_PATH)}`);\n      return false;\n    }\n    Logger_default.log(`Updating ${chalk6.bold(HOSTS_PATH)}\\u2026`);\n    try {\n      await execa2(\"sudo\", [\"sh\", \"-c\", `echo \"${line}\" >> ${HOSTS_PATH}`], {\n        stdio: \"inherit\"\n      });\n      Logger_default.success(`Added ${chalk6.cyan(domain)} \\u2192 ${chalk6.cyan(\"127.0.0.1\")}`);\n      await this._flushDns(true);\n    } catch (err) {\n      Logger_default.error(\"Failed to update /etc/hosts:\", err.message);\n      Logger_default.warn(\"Please update /etc/hosts manually.\");\n      return false;\n    }\n  }\n  async removeFromHosts(domain) {\n    try {\n      const content = fs7.readFileSync(HOSTS_PATH, \"utf8\");\n      const isLineAdded = content.includes(`127.0.0.1\t${domain}`);\n      if (!isLineAdded) {\n        return false;\n      }\n      const regex = new RegExp(`.*\\\\s${domain}\\\\s*\\\\n?`, \"g\");\n      Logger_default.log(`Updating ${chalk6.bold(HOSTS_PATH)}\\u2026`);\n      const newContent = content.replace(regex, \"\");\n      fs7.writeFileSync(HOSTS_PATH, newContent);\n      Logger_default.success(`Removed ${chalk6.cyan(domain)} from ${chalk6.cyan(HOSTS_PATH)}`);\n      await this._flushDns();\n    } catch (err) {\n      Logger_default.warn(\n        `Could not clean ${chalk6.cyan(HOSTS_PATH)}. Try manually:`,\n        chalk6.red(err.message)\n      );\n      return false;\n    }\n  }\n  isLikelyPublicDomain(domain) {\n    return domain.endsWith(\".com\") || domain.endsWith(\".io\") || domain.endsWith(\".net\") || domain.endsWith(\".fr\") || domain.endsWith(\".ai\") || domain.endsWith(\".org\");\n  }\n  async _flushDns() {\n    const platform = os2.platform();\n    Logger_default.log(\"Flushing DNS cache\\u2026\");\n    const cmds = {\n      darwin: \"killall -HUP mDNSResponder\",\n      linux: \"systemd-resolve --flush-caches\"\n    };\n    const cmd = cmds[platform];\n    if (!cmd) {\n      Logger_default.warn(\"Cannot flush DNS automatically on this OS.\");\n      Logger_default.info(\"Please manually flush your DNS cache.\");\n      return;\n    }\n    try {\n      await execa2(\"sudo\", [\"sh\", \"-c\", cmd], { stdio: \"inherit\" });\n      Logger_default.success(\"DNS cache flushed\");\n    } catch (err) {\n      Logger_default.error(\"Failed to flush DNS:\", err.message);\n      process.exit(1);\n    }\n  }\n};\nvar DomainManager_default = new DomainManager();\n\n// src/lib/CertManager.js\nimport path7 from \"path\";\nimport os3 from \"os\";\nimport fs8 from \"fs-extra\";\nimport forge from \"node-forge\";\nimport { execa as execa3 } from \"execa\";\nvar CERTS_DIR = path7.join(os3.homedir(), \".fwd\", \"certs\");\nvar CertManager = class {\n  async ensureCerts(domain) {\n    await fs8.ensureDir(CERTS_DIR);\n    const { id } = await services_default.envService.getEnvPaths();\n    const certPath = path7.join(CERTS_DIR, `${id}-${domain}.pem`);\n    const keyPath = path7.join(CERTS_DIR, `${id}-${domain}-key.pem`);\n    if (fs8.existsSync(certPath) && fs8.existsSync(keyPath)) {\n      return { cert: certPath, key: keyPath };\n    }\n    Logger_default.log(`Generating self-signed cert for ${domain}\\u2026`);\n    const pki = forge.pki;\n    const keys = pki.rsa.generateKeyPair(2048);\n    const cert = pki.createCertificate();\n    cert.publicKey = keys.publicKey;\n    cert.serialNumber = \"01\";\n    cert.validity.notBefore = /* @__PURE__ */ new Date();\n    cert.validity.notAfter = /* @__PURE__ */ new Date();\n    cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);\n    const attrs = [\n      { name: \"commonName\", value: domain },\n      { name: \"organizationName\", value: \"fwd Dev Proxy\" }\n    ];\n    cert.setSubject(attrs);\n    cert.setIssuer(attrs);\n    cert.setExtensions([\n      { name: \"basicConstraints\", cA: false },\n      { name: \"keyUsage\", digitalSignature: true, keyEncipherment: true },\n      {\n        name: \"subjectAltName\",\n        altNames: [{ type: 2, value: domain }]\n      }\n    ]);\n    cert.sign(keys.privateKey);\n    const pemCert = pki.certificateToPem(cert);\n    const pemKey = pki.privateKeyToPem(keys.privateKey);\n    await fs8.writeFile(certPath, pemCert);\n    await fs8.writeFile(keyPath, pemKey);\n    Logger_default.success(`Self-signed cert for ${domain} generated`);\n    await this._addCertToTrustStore(domain);\n    return { cert: certPath, key: keyPath };\n  }\n  async _addCertToTrustStore(domain) {\n    const { id } = await services_default.envService.getEnvPaths();\n    const certPath = path7.join(CERTS_DIR, `${id}-${domain}.pem`);\n    const platform = os3.platform();\n    const keychain = \"/Library/Keychains/System.keychain\";\n    if (!fs8.existsSync(certPath)) {\n      Logger_default.error(`Cert not found at ${certPath}`);\n      return process.exit(1);\n    }\n    if (platform === \"darwin\") {\n      Logger_default.log(`Adding ${domain} cert to keychain\\u2026`);\n      try {\n        await execa3(\n          \"security\",\n          [\"add-trusted-cert\", \"-d\", \"-r\", \"trustRoot\", \"-k\", keychain, certPath],\n          { stdio: \"inherit\" }\n        );\n        Logger_default.success(`Trusted cert added for ${domain}`);\n      } catch (err) {\n        Logger_default.error(`Failed to add cert:`, err.message);\n      }\n    } else if (platform === \"linux\") {\n      const dest = `/usr/local/share/ca-certificates/${id}-${domain}.crt`;\n      Logger_default.log(`Adding ${domain} cert to Linux CA store\\u2026`);\n      await execa3(\"sudo\", [\"cp\", certPath, dest], { stdio: \"inherit\" });\n      await execa3(\"sudo\", [\"update-ca-certificates\"], { stdio: \"inherit\" });\n      Logger_default.success(`Trusted cert added for ${domain}`);\n    } else {\n      Logger_default.error(`Unsupported OS: ${platform}`);\n      return process.exit(1);\n    }\n  }\n};\nvar CertManager_default = new CertManager();\n\n// src/lib/ProxyServer.js\nimport httpProxy from \"http-proxy\";\nimport https from \"https\";\nimport fs9 from \"fs\";\nvar defaultDomain = `${services_default.envService.getProjectId()}.${services_default.envService.getProjectName()}.dev`;\nvar ProxyServer = class {\n  constructor() {\n    this.proxy = null;\n    this.domain = null;\n  }\n  setup(domain) {\n    this.domain = domain || defaultDomain;\n    Logger_default.info(`Launching with HTTPS`);\n    if (DomainManager_default.isLikelyPublicDomain(this.domain)) {\n      const localDomain = this.domain.split(\".\").slice(0, -1).join(\".\");\n      Logger_default.warn(\n        ` Warning: \"${this.domain}\" looks like a real public domain.\n   To avoid conflicts, use something like \\`${localDomain}.local\\` or \\`${localDomain}.test\\``\n      );\n    }\n    return this._attachProxy.bind(this);\n  }\n  async _attachProxy(child) {\n    const spinner = ora(`Waiting for local server to expose a port\\u2026`).start();\n    try {\n      const detectedPort = await waitForOpenPort(child.pid);\n      spinner.succeed(`Detected local server on port ${detectedPort}`);\n      await DomainManager_default.writeToHosts(this.domain);\n      const { cert, key } = await CertManager_default.ensureCerts(this.domain);\n      this.proxy = await this._createProxyServer({\n        domain: this.domain,\n        targetPort: detectedPort,\n        cert,\n        key\n      });\n      await open(`https://${this.domain}`);\n    } catch (err) {\n      spinner.fail(`Failed: ${err.message}`);\n      this.cleanup();\n    }\n  }\n  async _createProxyServer({ domain, targetPort, cert, key }) {\n    const proxyPort = 443;\n    Logger_default.log(`Creating proxy server on port ${proxyPort} proxying to ${targetPort}\\u2026`);\n    const proxy = httpProxy.createProxyServer({\n      target: `http://localhost:${targetPort}`,\n      targetPort: 3e3,\n      domain,\n      changeOrigin: true,\n      ws: true,\n      secure: false,\n      proxyTimeout: 12e4,\n      timeout: 12e4,\n      followRedirects: true,\n      xfwd: true,\n      rejectUnauthorized: false,\n      cert,\n      key\n    });\n    proxy.on(\"error\", (err, req, res) => {\n      Logger_default.error(\"Proxy error:\", err.message);\n      if (!res.headersSent) {\n        res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n      }\n      res.end(\"Proxy error.\");\n    });\n    proxy.on(\"proxyReqWs\", (proxyReq, req, socket, options) => {\n      Logger_default.info(\"WebSocket connection established\");\n      Logger_default.info(`WebSocket target: ${options.target}`);\n    });\n    proxy.on(\"proxyReq\", (proxyReq) => {\n      proxyReq.setHeader(\"Connection\", \"keep-alive\");\n      proxyReq.setHeader(\"Upgrade\", \"websocket\");\n      proxyReq.setHeader(\"Sec-WebSocket-Version\", \"13\");\n    });\n    const server = https.createServer(\n      {\n        key: fs9.readFileSync(key),\n        cert: fs9.readFileSync(cert),\n        rejectUnauthorized: false\n      },\n      (req, res) => {\n        res.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n        res.setHeader(\"Access-Control-Allow-Methods\", \"GET, POST, OPTIONS, PUT, PATCH, DELETE\");\n        res.setHeader(\"Access-Control-Allow-Headers\", \"X-Requested-With,content-type\");\n        proxy.web(req, res);\n      }\n    );\n    server.on(\"upgrade\", (req, socket, head) => {\n      Logger_default.info(\"Upgrade request received\");\n      proxy.ws(req, socket, head);\n    });\n    server.listen(proxyPort, () => {\n      Logger_default.success(\n        `Secure dev server is ready at ${chalk7.cyan(chalk7.underline(`https://${this.domain}`))}`\n      );\n    });\n    return server;\n  }\n  async cleanup() {\n    if (this.proxy) {\n      Logger_default.log(\"Closing HTTPS proxy\\u2026\");\n      this.proxy.close();\n      Logger_default.success(\"Proxy closed\");\n    }\n    await DomainManager_default.removeFromHosts(this.domain);\n  }\n};\nvar ProxyServer_default = new ProxyServer();\n\n// src/utils/sudo.js\nvar isRunningWithSudo = () => {\n  try {\n    return process.platform !== \"win32\" && process.getuid && process.getuid() === 0;\n  } catch {\n    return false;\n  }\n};\n\n// src/lib/RepositoryManager.js\nimport { execa as execa4 } from \"execa\";\nimport { join } from \"path\";\nimport prompts4 from \"prompts\";\nimport fs10 from \"fs-extra\";\nimport chalk8 from \"chalk\";\nvar repositoryPath = null;\nvar RepositoryManager = class {\n  constructor() {\n    this.keepClone = false;\n  }\n  async clone(url, keepClone = false) {\n    await this._validateRepositoryUrl(url);\n    this.keepClone = keepClone;\n    const repositoryName = url.split(\"/\").pop().split(\".\")[0];\n    if (keepClone) {\n      repositoryPath = join(process.cwd(), repositoryName);\n    } else {\n      repositoryPath = join(services_default.envService.repositoriesDir, repositoryName);\n    }\n    if (fs10.existsSync(repositoryPath)) {\n      const { confirm } = await prompts4({\n        type: \"confirm\",\n        name: \"confirm\",\n        message: `Repository ${chalk8.cyan(repositoryName)} already exists. Pull latest changes?`\n      });\n      if (!confirm) {\n        return repositoryPath;\n      }\n      fs10.removeSync(repositoryPath);\n    }\n    try {\n      await execa4(\"git\", [\"clone\", url, repositoryPath], {\n        stdio: \"inherit\"\n      });\n      Logger_default.success(`Cloned successfully in ${chalk8.cyan(repositoryPath)}`);\n      return repositoryPath;\n    } catch (error) {\n      Logger_default.error(`Failed to clone repository: ${error}`);\n      await this.cleanup();\n      process.exit(1);\n    }\n  }\n  async enter(repositoryPath2) {\n    this.previousDir = process.cwd();\n    process.chdir(repositoryPath2);\n  }\n  async exit() {\n    process.chdir(this.previousDir);\n  }\n  async _validateRepositoryUrl(repositoryUrl) {\n    try {\n      await execa4(\"git\", [\"ls-remote\", repositoryUrl], {\n        stdio: \"ignore\"\n      });\n      return true;\n    } catch {\n      Logger_default.error(`Repository url is not valid: ${chalk8.underline(repositoryUrl)}`);\n      process.exit(1);\n    }\n  }\n  async cleanup() {\n    const { envFile } = await services_default.envService.getEnvPaths();\n    await this.exit();\n    if (!this.keepClone) {\n      Logger_default.log(`Cleaning up repository\\u2026`);\n      fs10.removeSync(repositoryPath);\n      Logger_default.success(`Repository removed from ${chalk8.cyan(repositoryPath)}`);\n      if (fs10.existsSync(envFile)) {\n        fs10.removeSync(envFile);\n        Logger_default.success(`Environment removed`);\n      }\n    } else {\n      Logger_default.secondary(`${chalk8.cyan(\"--keep-clone\")} \\u2192 Repository kept at ${repositoryPath}`);\n    }\n  }\n};\nvar RepositoryManager_default = new RepositoryManager();\n\n// src/cli/handlers/run.js\nimport chalk9 from \"chalk\";\nvar runHandler = async (script, options) => {\n  const { https: https2, domain, repository, keepClone } = options;\n  if (https2 && !isRunningWithSudo()) {\n    Logger_default.error(\"--https option needs sudo. Run `sudo fwd run --https`\");\n    process.exit(1);\n  }\n  const cleanups = [];\n  if (repository) {\n    const repositoryPath2 = await RepositoryManager_default.clone(repository, keepClone);\n    await RepositoryManager_default.enter(repositoryPath2);\n    cleanups.push(RepositoryManager_default.cleanup.bind(RepositoryManager_default));\n    await init_default({ force: true });\n  }\n  const packageManager = await services_default.envService.getPackageManager();\n  const scriptsList = services_default.envService.getScriptsList();\n  if (!script || !scriptsList.includes(script)) {\n    const scripts = services_default.envService.getScripts();\n    if (scripts.length === 0) {\n      Logger_default.warn(\"No scripts found in package.json\");\n      return;\n    }\n    if (script) {\n      Logger_default.warn(`Script \\`${script}\\` not found, please select one of the following`);\n    }\n    const { selected } = await prompts5({\n      type: \"select\",\n      name: \"selected\",\n      message: \"Select a script to run\",\n      choices: scripts.map(({ name, value }) => ({\n        title: `${name} \\u2192 ${value}`,\n        value: name\n      }))\n    });\n    if (!selected) {\n      Logger_default.info(\"Cancelled.\");\n      return;\n    }\n    script = selected;\n  }\n  const commandArgs = [\"run\", script];\n  Logger_default.info(`Using ${chalk9.bold(packageManager)} to run script: ${chalk9.bold(script)}`);\n  let onReadyCallback;\n  if (https2) {\n    onReadyCallback = ProxyServer_default.setup(domain);\n    cleanups.push(ProxyServer_default.cleanup.bind(ProxyServer_default));\n  }\n  return services_default.runnerService.run(packageManager, commandArgs, {\n    onReadyCallback,\n    cleanups\n  });\n};\nvar run_default = runHandler;\n\n// src/cli/commands/run.js\nvar runCommand = new Command6(\"run\").description(\"Run an npm script inside a temporary workspace\").arguments(\"[script]\", \"Script name defined in package.json\").option(\"-h, --https\", \"Enable HTTPS proxy\").option(\"-d, --domain <domain>\", \"Custom domain (only used with --https)\").option(\"-r, --repository <url>\", \"Use a remote repository on the fly\").option(\"-k, --keep-clone\", \"Keep the cloned repository after running the script\").action(run_default);\n\n// src/cli/commands/exec.js\nimport { Command as Command7 } from \"commander\";\n\n// src/cli/handlers/exec.js\nvar execHandler = async (args, options) => {\n  const { noDeps } = options;\n  const cmd = args[0];\n  const cmdArgs = args.slice(1);\n  if (!cmd) {\n    Logger_default.error(`No command provided to exec.`);\n    process.exit(1);\n  }\n  if (cmd === \"fwd\") {\n    Logger_default.error(`fwd is not allowed to be executed directly.`);\n    process.exit(1);\n  }\n  Logger_default.log(`Executing: ${cmd} ${cmdArgs.join(\" \")}`);\n  await services_default.runnerService.run(cmd, cmdArgs, { installDeps: !noDeps });\n};\nvar exec_default = execHandler;\n\n// src/cli/commands/exec.js\nvar execCommand = new Command7(\"exec\").description(\"Run any raw shell command inside the temp environment\").argument(\"[cmd] [args\\u2026]\", \"Command with arguments\").option(\"--no-deps\", \"Skip dependencies installation\").allowUnknownOption(true).passThroughOptions().action(exec_default);\n\n// src/cli/commands/add.js\nimport { Command as Command8 } from \"commander\";\n\n// src/cli/handlers/add.js\nimport chalk10 from \"chalk\";\nvar addHandler = async (...args) => {\n  const packageManager = await services_default.envService.getPackageManager();\n  const packages = args[2].args;\n  if (packages.length === 0) {\n    Logger_default.error(\"No package provided.\");\n    process.exit(1);\n  }\n  const commandArgs = [\"install\", ...packages];\n  Logger_default.info(\n    `Using ${chalk10.bold(packageManager)} to install package(s): ${chalk10.bold(packages.join(\", \"))}`\n  );\n  await services_default.runnerService.run(packageManager, commandArgs, { installDeps: false });\n};\nvar add_default = addHandler;\n\n// src/cli/commands/add.js\nvar addCommand = new Command8(\"add\").alias(\"install\").alias(\"i\").description(\"Add a package to the project\").argument(\"[package]\", \"Package to install\").allowUnknownOption().action(add_default);\n\n// src/cli/commands/remove.js\nimport { Command as Command9 } from \"commander\";\n\n// src/cli/handlers/remove.js\nimport chalk11 from \"chalk\";\nvar removeHandler = async (...args) => {\n  const packageManager = await services_default.envService.getPackageManager();\n  const packages = args[2].args;\n  if (packages.length === 0) {\n    Logger_default.error(\"No package provided.\");\n    process.exit(1);\n  }\n  const commandArgs = [\"uninstall\", ...packages];\n  Logger_default.info(\n    `Using ${chalk11.bold(packageManager)} to remove package(s): ${chalk11.bold(packages.join(\", \"))}`\n  );\n  await services_default.runnerService.run(packageManager, commandArgs, { installDeps: false });\n};\nvar remove_default = removeHandler;\n\n// src/cli/commands/remove.js\nvar removeCommand = new Command9(\"remove\").alias(\"uninstall\").description(\"Remove a package from the project\").argument(\"[package]\", \"Package to remove\").allowUnknownOption().action(remove_default);\n\n// src/cli/commands/doctor.js\nimport { Command as Command10 } from \"commander\";\n\n// src/cli/handlers/doctor.js\nimport chalk12 from \"chalk\";\nvar doctorHandler = async () => {\n  if (!services_default.envService.hasPackageJson()) {\n    Logger_default.error(`Fwd is made for nodejs projects, but ${chalk12.red(\"no package.json found\")}`);\n    process.exit(1);\n  }\n  const { currentPipe, currentPackageManager } = await services_default.envService.getEnvConfig();\n  if (Boolean(currentPipe) || Boolean(currentPackageManager)) {\n    Logger_default.raw(`Are you joking? You have an environment already setup \\u{1F926}\\u{1F3FD}`);\n    Logger_default.log(`Take a look, just for refresh your memory\\u2026 \\u{1F92A}`);\n    await services_default.envService.showEnvLinesInfo();\n    process.exit(1);\n  }\n  Logger_default.success(`The diagnosis is made, your project is ${chalk12.green(\"valid\")} for \\`fwd\\``);\n};\nvar doctor_default = doctorHandler;\n\n// src/cli/commands/doctor.js\nvar doctorCommand = new Command10(\"doctor\").description(\"Check if your project is fwd compatible\").action(doctor_default);\n\n// src/cli/commands/modules/index.js\nimport { Command as Command13 } from \"commander\";\n\n// src/cli/commands/modules/inspect.js\nimport { Command as Command11 } from \"commander\";\n\n// src/cli/handlers/modules/inspect.js\nimport prettyMs2 from \"pretty-ms\";\n\n// src/lib/DirectoryManager.js\nimport os4 from \"os\";\nimport path8, { basename } from \"path\";\nimport fs11 from \"fs-extra\";\nimport chalk13 from \"chalk\";\n\n// src/utils/regex.js\nfunction escapeRegex(str) {\n  return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction globToRegex(glob) {\n  const escaped = glob.split(\"*\").map(escapeRegex).join(\".*\");\n  return new RegExp(\"^\" + escaped + \"$\");\n}\nfunction matchesAnyPattern(str, patterns) {\n  return patterns.some((pattern) => {\n    const regex = globToRegex(pattern);\n    return regex.test(str);\n  });\n}\n\n// src/lib/DirectoryManager.js\nimport { fileURLToPath as fileURLToPath2 } from \"url\";\nimport { Table } from \"console-table-printer\";\nimport prettyBytes2 from \"pretty-bytes\";\nvar NODE_MODULES_NAME = \"node_modules\";\nvar DEFAULT_ROOT_PATH = os4.homedir();\nvar DEFAULT_ALSO_PATHS = [NODE_MODULES_NAME];\nvar DEFAULT_IGNORE_PATHS = process.env.FWD_DEV ? [path8.resolve(fileURLToPath2(import.meta.url), \"..\", \"..\", \"..\")] : [];\nvar systemPaths = [\n  \"/System\",\n  \"/Library\",\n  \"/Applications\",\n  \"/Desktop\",\n  \"/Documents\",\n  \"/Downloads\",\n  \"/Pictures\",\n  \"/Videos\",\n  \"~/System\",\n  \"~/Library\",\n  \"~/Applications\",\n  \"~/Desktop\",\n  \"~/Documents\",\n  \"~/Downloads\",\n  \"~/Pictures\",\n  \"~/Videos\",\n  \"~/Projects\",\n  \"~/Music\",\n  \"/bin\",\n  \"/sbin\",\n  \"/usr\",\n  \"/etc\",\n  \"/var\",\n  \"/opt\",\n  \"/snap\",\n  \"~/bin\",\n  \"~/sbin\",\n  \"~/usr\",\n  \"~/etc\",\n  \"~/var\",\n  \"~/opt\",\n  \"~/snap\",\n  \"/node_modules\",\n  \"~/node_modules\"\n];\nvar DirectoryManager = class {\n  constructor(root, { also, ignorePaths, all }) {\n    this.rootPath = this._getAbsolutePath(process.cwd(), root || DEFAULT_ROOT_PATH);\n    this.alsoPaths = [...DEFAULT_ALSO_PATHS, ...(also == null ? void 0 : also.split(\",\")) || []];\n    this.ignorePaths = this._prepareIgnorePaths([...(ignorePaths == null ? void 0 : ignorePaths.split(\",\")) || []], all);\n    this._validateRootPath();\n  }\n  getRootPath() {\n    return this.rootPath;\n  }\n  getAlsoPaths() {\n    return this.alsoPaths;\n  }\n  getIgnorePaths() {\n    return this.ignorePaths;\n  }\n  inspectPath(pathToInspect) {\n    const retainedContent = [];\n    let elementsAnalyzed = 0;\n    if (this._shouldBeIgnoredPath(pathToInspect)) {\n      return { retainedContent: [], elementsAnalyzed: 0 };\n    }\n    let dirContent;\n    try {\n      dirContent = fs11.readdirSync(pathToInspect);\n    } catch {\n      Logger_default.error(`Failed to read directory: ${chalk13.underline(pathToInspect)}`);\n      Logger_default.log(\"Skipping directory\\u2026\");\n      return { retainedContent: [], elementsAnalyzed: 0 };\n    }\n    for (const dir of dirContent) {\n      if (dir === \".\" || dir === \"..\") continue;\n      const fullPath = path8.join(pathToInspect, dir);\n      const isIncluded = this._match(this.alsoPaths, dir);\n      const stats = fs11.lstatSync(fullPath);\n      const isSymlink = stats.isSymbolicLink();\n      let realPath = fullPath;\n      let isSymlinkBroken = false;\n      if (isSymlink) {\n        try {\n          realPath = fs11.realpathSync(realPath);\n        } catch {\n          isSymlinkBroken = true;\n        }\n      }\n      const type = this._determineType(realPath, isSymlinkBroken);\n      elementsAnalyzed += 1;\n      if (isIncluded) {\n        retainedContent.push(\n          this._buildRetainedEntry(dir, realPath, type, isSymlink, isSymlinkBroken)\n        );\n      }\n      if (!isIncluded && type === \"directory\") {\n        const result = this.inspectPath(fullPath);\n        retainedContent.push(...result.retainedContent);\n        elementsAnalyzed += result.elementsAnalyzed;\n      }\n    }\n    return { retainedContent, elementsAnalyzed };\n  }\n  showInspectionResults({ retainedContent, elementsAnalyzed }) {\n    const table = new Table({\n      color: true,\n      truncate: false,\n      columns: [\n        { name: \"parentPath\", title: \"Root\", alignment: \"left\" },\n        { name: \"parentName\", title: \"Parent\", alignment: \"left\" },\n        { name: \"name\", title: \"Directory\", alignment: \"left\" },\n        { name: \"size\", title: \"Size\", alignment: \"right\" }\n      ]\n    });\n    table.addRows(this._formatRows(retainedContent));\n    Logger_default.raw(\"\\n\");\n    table.printTable();\n    Logger_default.raw(\"\\n\");\n    return { retainedContent, elementsAnalyzed };\n  }\n  getStatsResults({ retainedContent }) {\n    return {\n      elements: retainedContent.length,\n      size: retainedContent.reduce((acc, curr) => acc + curr.size, 0)\n    };\n  }\n  prune({ retainedContent }) {\n    for (const element of retainedContent) {\n      try {\n        fs11.removeSync(element.realPath);\n        Logger_default.log(`Removed ${element.realPath}`);\n      } catch (err) {\n        Logger_default.warn(`Failed to remove ${element.realPath}`, `\n\t\\u21B3${chalk13.red(err)}`);\n      }\n    }\n  }\n  // === Private methods ===\n  _prepareIgnorePaths(baseIgnorePaths, all = false) {\n    const combined = [...DEFAULT_IGNORE_PATHS, ...baseIgnorePaths];\n    if (!all) combined.push(...systemPaths);\n    return combined.map((p) => this._getAbsolutePath(this.rootPath, p));\n  }\n  _getAbsolutePath(base, inputPath) {\n    if (inputPath.startsWith(\"/\")) return inputPath;\n    if (inputPath.startsWith(\"~/\")) return path8.resolve(os4.homedir(), inputPath.slice(2));\n    return path8.resolve(base, inputPath);\n  }\n  _validateRootPath() {\n    const root = path8.resolve(this.rootPath);\n    if (!fs11.existsSync(root)) {\n      Logger_default.error(`Root directory does not exist: ${chalk13.underline(root)}`);\n      process.exit(1);\n    }\n    if (!fs11.statSync(root).isDirectory()) {\n      Logger_default.error(`Root appears to be a file: ${chalk13.underline(root)}`);\n      process.exit(1);\n    }\n  }\n  _match(patterns, name) {\n    return matchesAnyPattern(name, patterns);\n  }\n  _shouldBeIgnoredPath(dirPath) {\n    return basename(dirPath).startsWith(\".\") || this.ignorePaths.some((p) => dirPath.startsWith(p)) || systemPaths.includes(dirPath);\n  }\n  _determineType(realPath, isSymlinkBroken) {\n    if (isSymlinkBroken) return \"broken-symlink\";\n    return fs11.statSync(realPath).isDirectory() ? \"directory\" : \"file\";\n  }\n  _buildRetainedEntry(name, realPath, type, isSymlink, isSymlinkBroken) {\n    return {\n      name,\n      isSymlink,\n      realPath,\n      size: isSymlinkBroken ? 0 : fs11.statSync(realPath).size,\n      isSymlinkBroken,\n      parentName: this._getParentName(realPath),\n      parentPath: this._getParentPath(realPath),\n      type\n    };\n  }\n  _formatRows(rows) {\n    const maxLen = 50;\n    return rows.map((row) => ({\n      parentPath: this._truncatePath(this._useTilde(row.parentPath), maxLen),\n      parentName: row.parentName,\n      name: this._formatName(row),\n      size: prettyBytes2(row.size)\n    }));\n  }\n  _truncatePath(str, maxLength) {\n    return str.length > maxLength ? `${str.slice(0, maxLength)}\\u2026` : str;\n  }\n  _formatName(row) {\n    if (row.isSymlink) {\n      return chalk13.magenta(row.name) + (row.isSymlinkBroken ? ` ${chalk13.red(\"(broken)\")}` : \"@\");\n    }\n    return row.type === \"directory\" ? chalk13.cyan(row.name) : chalk13.gray(row.name);\n  }\n  _useTilde(p) {\n    return `${p.replace(os4.homedir(), \"~\")}/`;\n  }\n  _getParentPath(p) {\n    return path8.resolve(p, \"..\");\n  }\n  _getParentName(p) {\n    return basename(path8.resolve(this._getParentPath(p), \"..\"));\n  }\n};\nvar DirectoryManager_default = DirectoryManager;\n\n// src/cli/handlers/modules/inspect.js\nimport ora2 from \"ora\";\nimport chalk14 from \"chalk\";\nimport prettyBytes3 from \"pretty-bytes\";\nvar inspectHandler = async (root, { also, ignorePaths, all }) => {\n  const directoryManager = new DirectoryManager_default(root, { also, ignorePaths, all });\n  Logger_default.log(`Inspecting ${directoryManager.getRootPath()}\\u2026`);\n  if (directoryManager.getIgnorePaths().length > 0) {\n    Logger_default.info(`Ignoring ${directoryManager.getIgnorePaths().length} paths`);\n  }\n  const start = Date.now();\n  const spinner = ora2(`Inspecting from ${chalk14.blue(directoryManager.getRootPath())}\\u2026`).start();\n  const inspectionResults = directoryManager.inspectPath(directoryManager.getRootPath());\n  spinner.succeed(\n    `Inspected ${chalk14.green(inspectionResults.elementsAnalyzed)} elements in ${chalk14.green(prettyMs2(Date.now() - start))}`\n  );\n  directoryManager.showInspectionResults(inspectionResults);\n  const { elements, size } = directoryManager.getStatsResults(inspectionResults);\n  Logger_default.secondary(\n    `Found ${chalk14.green(elements)} elements in ${chalk14.green(prettyBytes3(size))} of data.`\n  );\n};\nvar inspect_default = inspectHandler;\n\n// src/cli/commands/modules/inspect.js\nvar inspectCommand = new Command11(\"inspect\").alias(\"i\").description(\n  \"Inspects directories recursively for modules, by default it ignores system and hidden paths\"\n).argument(\"[root]\", \"Root directory to inspect (default to home directory)\").option(\n  \"-i, --ignore-paths <paths>\",\n  \"Specify paths to ignore during inspection (comma separated)\"\n).option(\n  \"-a, --also <folders>\",\n  \"Specify directory names to look for during inspection (comma separated)\"\n).option(\"--all\", \"Remove default system and hidden paths from ignore list\").action(inspect_default);\n\n// src/cli/commands/modules/prune.js\nimport { Command as Command12 } from \"commander\";\n\n// src/cli/handlers/modules/prune.js\nimport prettyMs3 from \"pretty-ms\";\nimport ora3 from \"ora\";\nimport chalk15 from \"chalk\";\nimport prettyBytes4 from \"pretty-bytes\";\nimport prompts6 from \"prompts\";\nimport inquirer from \"inquirer\";\nvar pruneHandler = async (root, { also, ignorePaths, all, interactive, dryRun, yes }) => {\n  const directoryManager = new DirectoryManager_default(root, {\n    also,\n    ignorePaths,\n    all,\n    interactive,\n    dryRun\n  });\n  Logger_default.log(`Inspecting ${directoryManager.getRootPath()}\\u2026`);\n  if (directoryManager.getIgnorePaths().length > 0) {\n    Logger_default.info(`Ignoring ${directoryManager.getIgnorePaths().length} paths`);\n  }\n  const start = Date.now();\n  const spinner = ora3(`Inspecting from ${chalk15.blue(directoryManager.getRootPath())}\\u2026`).start();\n  const inspectionResults = directoryManager.inspectPath(directoryManager.getRootPath());\n  spinner.succeed(\n    `Inspected ${chalk15.green(inspectionResults.elementsAnalyzed)} elements in ${chalk15.green(prettyMs3(Date.now() - start))}`\n  );\n  if (inspectionResults.retainedContent.length === 0) {\n    Logger_default.warn(\"Nothing to prune\");\n    return;\n  }\n  if (!yes && !interactive) {\n    const { elements: elements2, size: size2 } = directoryManager.getStatsResults(inspectionResults);\n    const { confirm } = await prompts6({\n      type: \"confirm\",\n      name: \"confirm\",\n      message: `Prune ${chalk15.green(elements2)} elements in ${chalk15.green(prettyBytes4(size2))} of data?`,\n      initial: false\n    });\n    if (!confirm) {\n      Logger_default.warn(\"Prune cancelled\");\n      return;\n    }\n  }\n  if (interactive) {\n    try {\n      const { files } = await inquirer.prompt({\n        type: \"checkbox\",\n        name: \"files\",\n        message: \"Please select what to prune\",\n        choices: inspectionResults.retainedContent.map((element) => ({\n          name: element.realPath,\n          value: element\n        }))\n      });\n      inspectionResults.retainedContent = files;\n    } catch {\n      Logger_default.error(\"Error selecting files to prune\");\n      return;\n    }\n  }\n  const { elements, size } = directoryManager.getStatsResults(inspectionResults);\n  if (dryRun) {\n    Logger_default.secondary(\n      `[Dry run] ${chalk15.green(elements)} elements in ${chalk15.green(prettyBytes4(size))} of data would be removed`\n    );\n    inspectionResults.retainedContent.forEach((element) => {\n      Logger_default.secondary(`\t- ${element.realPath}`);\n    });\n    Logger_default.warn(\"Dry run, no changes were made\");\n    return;\n  } else {\n    directoryManager.prune(inspectionResults);\n    Logger_default.secondary(\n      `${chalk15.green(elements)} elements in ${chalk15.green(prettyBytes4(size))} of data removed`\n    );\n  }\n};\nvar prune_default = pruneHandler;\n\n// src/cli/commands/modules/prune.js\nvar pruneCommand = new Command12(\"prune\").alias(\"p\").description(\"Inspects directories recursively for modules\").argument(\"[root]\", \"Root directory to inspect (default to home directory)\").option(\n  \"-i, --ignore-paths <paths>\",\n  \"Specify paths to ignore during inspection (comma separated)\"\n).option(\n  \"-a, --also <folders>\",\n  \"Specify directory names to look for during inspection (comma separated)\"\n).option(\"-y, --yes\", \"Automatically answer yes to all prompts\").option(\"--interactive\", \"Run the command in interactive mode\").option(\"--dry-run\", \"Dry run the command\").action(prune_default);\n\n// src/cli/commands/modules/index.js\nvar modulesCommand = new Command13(\"modules\").alias(\"m\").description(\"Empowers modules management\").showHelpAfterError(true).addCommand(inspectCommand).addCommand(pruneCommand);\n\n// src/cli/commands/index.js\nvar commands_default = [\n  envCommand,\n  runCommand,\n  execCommand,\n  addCommand,\n  removeCommand,\n  doctorCommand,\n  modulesCommand\n];\n\n// src/cli/index.js\nfunction main() {\n  const program = new Command14();\n  const programManager = new ProgramManager_default(program);\n  programManager.start(commands_default);\n}\nvar index_default = main;\nexport {\n  index_default as default,\n  main\n};\n"]}