UNPKG

flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

1 lines 9.34 kB
{"version":3,"file":"patch.cjs","sources":["../../../src/cli/commands/patch.ts"],"sourcesContent":["import fs from \"fs/promises\";\nimport path from \"path\";\n\n/**\n * Patches Tailwind CSS installation to ensure version files exist and are correctly configured.\n *\n * This function:\n * - Resolves the Tailwind CSS module path\n * - Reads the Tailwind package.json to get the actual version\n * - Creates or updates version files (version.js, version.mjs, version.d.ts, version.d.mts)\n * - Updates package.json exports if necessary\n *\n * @returns {Promise<void>} A promise that resolves when patching is complete\n */\nexport async function patchTailwind(): Promise<void> {\n try {\n let tailwindPath: string | undefined;\n\n try {\n let tailwindModulePath;\n if (typeof require !== \"undefined\") {\n tailwindModulePath = require.resolve(\"tailwindcss/package.json\", {\n paths: [process.cwd()],\n });\n tailwindPath = path.resolve(path.dirname(tailwindModulePath));\n } else {\n const { createRequire } = await import(\"module\");\n const require = createRequire(import.meta.url);\n tailwindModulePath = require.resolve(\"tailwindcss/package.json\", {\n paths: [process.cwd()],\n });\n tailwindPath = path.resolve(path.dirname(tailwindModulePath));\n }\n } catch {\n console.warn(\"Could not resolve Tailwind CSS module path. Skipping version patch.\");\n return;\n }\n\n const tailwindPackageJsonPath = path.join(tailwindPath, \"package.json\");\n let tailwindPackageJson: {\n version: string;\n exports?: Record<string, unknown>;\n };\n\n try {\n const packageJsonContent = await fs.readFile(tailwindPackageJsonPath, \"utf-8\");\n tailwindPackageJson = JSON.parse(packageJsonContent);\n } catch {\n console.warn(\"Could not read Tailwind CSS `package.json`. Skipping version patch.\");\n return;\n }\n\n const actualVersion = tailwindPackageJson.version;\n\n // Check if version files exist and have the correct version\n const versionFilePath = path.join(tailwindPath, \"version.js\");\n const versionMjsFilePath = path.join(tailwindPath, \"version.mjs\");\n const versionDtsFilePath = path.join(tailwindPath, \"version.d.ts\");\n const versionDmtsFilePath = path.join(tailwindPath, \"version.d.mts\");\n\n let patchesApplied = false;\n\n // create `version.js`, `version.mjs`, `version.d.ts` and `version.d.mts` files if needed\n try {\n let filesCreated = false;\n\n // Check and create `version.js` file (CJS)\n if (await shouldUpdateFile(versionFilePath, actualVersion)) {\n const versionContent = `\"use strict\";\\n\\nconst version = \"${actualVersion}\";\\nmodule.exports = version;\\n`;\n await fs.writeFile(versionFilePath, versionContent, \"utf-8\");\n filesCreated = true;\n }\n\n // Check and create `version.mjs` file (ESM)\n if (await shouldUpdateFile(versionMjsFilePath, actualVersion)) {\n const versionMjsContent = `const version = \"${actualVersion}\";\\nexport default version;\\n`;\n await fs.writeFile(versionMjsFilePath, versionMjsContent, \"utf-8\");\n filesCreated = true;\n }\n\n // Check and create `version.d.ts` file\n if (await shouldUpdateFile(versionDtsFilePath)) {\n const versionDtsContent = `declare const version: string;\\nexport = version;\\n`;\n await fs.writeFile(versionDtsFilePath, versionDtsContent, \"utf-8\");\n filesCreated = true;\n }\n\n // Check and create `version.d.mts` file\n if (await shouldUpdateFile(versionDmtsFilePath)) {\n const versionDmtsContent = `declare const version: string;\\nexport default version;\\n`;\n await fs.writeFile(versionDmtsFilePath, versionDmtsContent, \"utf-8\");\n filesCreated = true;\n }\n\n if (filesCreated) {\n patchesApplied = true;\n }\n } catch {\n console.warn(\"Could not create Tailwind CSS version files. Skipping version patch.\");\n }\n\n // patch package.json.exports\n try {\n if (tailwindPackageJson.exports) {\n if (!tailwindPackageJson.exports[\"./version\"] || !tailwindPackageJson.exports[\"./version.js\"]) {\n tailwindPackageJson.exports = {\n ...tailwindPackageJson.exports,\n \"./version\": {\n require: \"./version.js\",\n import: \"./version.mjs\",\n },\n \"./version.js\": {\n require: \"./version.js\",\n import: \"./version.mjs\",\n },\n };\n await fs.writeFile(tailwindPackageJsonPath, JSON.stringify(tailwindPackageJson, null, 2), \"utf-8\");\n patchesApplied = true;\n }\n }\n } catch {\n console.warn(\"Could not patch Tailwind CSS `package.json.exports`. Skipping version patch.\");\n }\n\n if (patchesApplied) {\n console.log(\"Patched Tailwind CSS\");\n }\n } catch (error) {\n console.error(\"Failed to patch Tailwind CSS:\", error);\n }\n}\n\n/**\n * Determines whether a file should be updated based on its existence and content.\n *\n * @param filePath - The path to the file to check\n * @param actualVersion - Optional version string to check for in the file content\n * @returns {Promise<boolean>} True if the file doesn't exist or doesn't contain the actual version\n */\nasync function shouldUpdateFile(filePath: string, actualVersion?: string): Promise<boolean> {\n try {\n const content = await fs.readFile(filePath, \"utf-8\");\n if (actualVersion !== undefined) {\n return !content.includes(actualVersion);\n }\n return false;\n } catch {\n // File doesn't exist\n return true;\n }\n}\n"],"names":[],"mappings":"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"}