flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
65 lines (56 loc) • 2 kB
JavaScript
;
var fs = require('fs/promises');
var oxcParser = require('oxc-parser');
var consts = require('../consts.cjs');
var compareNodes = require('../utils/compare-nodes.cjs');
var removeReactImport = require('../utils/remove-react-import.cjs');
async function setupInit(config) {
const content = `
/* eslint-disable */
// @ts-nocheck
// biome-ignore-all lint: auto-generated file
// This file is auto-generated by the flowbite-react CLI.
// Do not edit this file directly.
// Instead, edit the .flowbite-react/config.json file.
import { StoreInit } from "flowbite-react/store/init";
import React from "react";
export const CONFIG = {
dark: ${config.dark},
prefix: "${config.prefix}",
version: ${config.version},
};
export function ThemeInit() {
return <StoreInit {...CONFIG} />;
}
ThemeInit.displayName = "ThemeInit";
`.trim();
const targetPath = config.tsx ? consts.initFilePath : consts.initJsxFilePath;
const oldPath = config.tsx ? consts.initJsxFilePath : consts.initFilePath;
try {
let currentContent = "";
try {
currentContent = await fs.readFile(targetPath, "utf-8");
} catch {
console.log(`Creating ${targetPath} file...`);
setTimeout(() => fs.writeFile(targetPath, content), 10);
}
if (currentContent) {
const currentAst = removeReactImport.removeReactImport(oxcParser.parseSync("init.tsx", currentContent));
const newAst = removeReactImport.removeReactImport(oxcParser.parseSync("init.tsx", content));
if (!compareNodes.compareNodes(currentAst.program, newAst.program)) {
console.log(`Updating ${targetPath} file...`);
setTimeout(() => fs.writeFile(targetPath, content), 10);
}
}
try {
await fs.access(oldPath);
console.log(`Removing ${oldPath} file...`);
await fs.unlink(oldPath);
} catch {
}
} catch (error) {
console.error(`Failed to update ${targetPath}:`, error);
}
}
exports.setupInit = setupInit;
//# sourceMappingURL=setup-init.cjs.map