{"version":3,"file":"add-import.cjs","sources":["../../../src/cli/utils/add-import.ts"],"sourcesContent":["/**\n * Adds an import statement to a given content string.\n *\n * @param {Object} options - The options for adding the import.\n * @param {string} options.content - The content string to modify.\n * @param {string} options.importPath - The path of the module to import.\n * @param {string} options.importName - The name to assign to the imported module.\n * @returns {string} The modified content string with the import added.\n */\nexport function addImport({\n  content,\n  importPath,\n  importName,\n}: {\n  content: string;\n  importPath: string;\n  importName: string;\n}): string {\n  // If content is empty, return as is\n  if (!content.trim()) {\n    return content;\n  }\n\n  // Check if import already exists\n  const importRegex = new RegExp(\n    `(import\\\\s+${importName}|const\\\\s+${importName}\\\\s*=\\\\s*require\\\\(['\"]${importPath}['\"]\\\\))`,\n    \"g\",\n  );\n  if (importRegex.test(content)) {\n    return content;\n  }\n\n  // Determine if the file is ESM or CJS\n  const hasESMImport = /import\\s+.*\\s+from\\s+['\"]/m.test(content);\n  const hasESMExport = /export\\s+/m.test(content);\n  const hasCJSRequire = /\\brequire\\s*\\(/m.test(content);\n  const hasCJSExport = /\\bmodule\\.exports\\b/m.test(content);\n\n  const isESM = hasESMImport || hasESMExport;\n  const isCJS = hasCJSRequire || hasCJSExport;\n\n  // If neither ESM nor CJS, return unchanged\n  if (!isESM && !isCJS) {\n    return content;\n  }\n\n  // Create the import statement\n  let importStatement;\n  if (isESM && !isCJS) {\n    importStatement = `import ${importName} from \"${importPath}\";`;\n  } else {\n    importStatement = `const ${importName} = require(\"${importPath}\");`;\n  }\n\n  // Split content into lines for processing\n  const lines = content.trim().split(\"\\n\");\n\n  // Find all import/require statements\n  const importLines = [];\n  for (let i = 0; i < lines.length; i++) {\n    const line = lines[i].trim();\n    if (\n      line.startsWith(\"import \") ||\n      line.includes(\"} from \") ||\n      (line.startsWith(\"const \") && line.includes(\"require(\"))\n    ) {\n      importLines.push(i);\n    }\n  }\n\n  // If we have imports, add after the last one\n  if (importLines.length > 0) {\n    const lastImportLine = importLines[importLines.length - 1];\n\n    // Insert after the last import\n    lines.splice(lastImportLine + 1, 0, importStatement);\n\n    // Check if we need to add a blank line after the new import\n    if (lastImportLine + 2 < lines.length && lines[lastImportLine + 2].trim() !== \"\") {\n      // Check if the next line is not an import\n      const nextLine = lines[lastImportLine + 2].trim();\n      if (\n        !nextLine.startsWith(\"import \") &&\n        !nextLine.includes(\"} from \") &&\n        !(nextLine.startsWith(\"const \") && nextLine.includes(\"require(\"))\n      ) {\n        lines.splice(lastImportLine + 2, 0, \"\");\n      }\n    }\n  } else {\n    // No imports found, add at the beginning\n    lines.unshift(importStatement);\n\n    // Add a blank line after the import if there's content\n    if (lines.length > 1) {\n      lines.splice(1, 0, \"\");\n    }\n  }\n\n  return lines.join(\"\\n\");\n}\n"],"names":[],"mappings":"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"}