UNPKG

flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

1 lines 5.62 kB
{"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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"}