{"version":3,"file":"setup-config.cjs","sources":["../../../src/cli/commands/setup-config.ts"],"sourcesContent":["import fs from \"fs/promises\";\nimport { klona } from \"klona/json\";\nimport { isEqual } from \"../../helpers/is-equal\";\nimport { COMPONENT_TO_CLASS_LIST_MAP } from \"../../metadata/class-list\";\nimport { configFilePath } from \"../consts\";\nimport { createConfig, type Config } from \"../utils/create-config\";\nimport { getTailwindVersion } from \"../utils/get-tailwind-version\";\n\n/**\n * Sets up the `.flowbite-react/config.json` file in the project.\n *\n * This function creates or updates the configuration file with default values and validates existing configurations.\n */\nexport async function setupConfig(): Promise<Config> {\n  const defaultConfig = createConfig({\n    version: await getTailwindVersion(),\n  });\n  const writeTimeout = 10;\n\n  try {\n    const raw = await fs.readFile(configFilePath, \"utf-8\");\n    const config: Config = JSON.parse(raw);\n    let newConfig = klona(config);\n\n    if (newConfig.$schema !== defaultConfig.$schema) {\n      console.warn(`Invalid $schema in ${configFilePath}: ${newConfig.$schema}`);\n      newConfig.$schema = defaultConfig.$schema;\n    }\n    if (!Array.isArray(newConfig.components)) {\n      console.warn(`Invalid components in ${configFilePath}: ${newConfig.components}`);\n      newConfig.components = [...defaultConfig.components];\n    } else {\n      const isValidComponent = (component: unknown) =>\n        typeof component === \"string\" &&\n        component.trim() !== \"\" &&\n        (component === \"*\" ||\n          COMPONENT_TO_CLASS_LIST_MAP[component as keyof typeof COMPONENT_TO_CLASS_LIST_MAP] !== undefined);\n\n      if (newConfig.components.some((component) => !isValidComponent(component))) {\n        console.warn(`Invalid components in ${configFilePath}: ${newConfig.components}`);\n        newConfig.components = newConfig.components.filter(isValidComponent);\n      }\n    }\n    if (typeof newConfig.dark !== \"boolean\") {\n      console.warn(`Invalid dark in ${configFilePath}: ${newConfig.dark}`);\n      newConfig.dark = defaultConfig.dark;\n    }\n    if (typeof newConfig.path !== \"string\") {\n      console.warn(`Invalid path in ${configFilePath}: ${newConfig.path}`);\n      newConfig.path = defaultConfig.path;\n    }\n    if (typeof newConfig.prefix !== \"string\") {\n      console.warn(`Invalid prefix in ${configFilePath}: ${newConfig.prefix}`);\n      newConfig.prefix = defaultConfig.prefix;\n    }\n    if (typeof newConfig.rsc !== \"boolean\") {\n      console.warn(`Invalid rsc in ${configFilePath}: ${newConfig.rsc}`);\n      newConfig.rsc = defaultConfig.rsc;\n    }\n    if (typeof newConfig.tsx !== \"boolean\") {\n      console.warn(`Invalid tsx in ${configFilePath}: ${newConfig.tsx}`);\n      newConfig.tsx = defaultConfig.tsx;\n    }\n    if (newConfig.version !== defaultConfig.version) {\n      console.warn(`Invalid version in ${configFilePath}: ${newConfig.version} (detected: ${defaultConfig.version})`);\n      newConfig.version = defaultConfig.version;\n    }\n\n    for (const key in newConfig) {\n      if (!(key in defaultConfig)) {\n        console.warn(`Invalid property in ${configFilePath}: ${key}`);\n        delete newConfig[key as keyof Config];\n      }\n    }\n\n    const isSorted = isEqual(Object.keys(newConfig).sort(), Object.keys(newConfig));\n    if (!isSorted) {\n      console.warn(`Invalid keys order in ${configFilePath}`);\n      newConfig = Object.fromEntries(Object.entries(newConfig).sort()) as Config;\n    }\n\n    if (!isEqual(config, newConfig) || !isSorted) {\n      console.log(`Updating ${configFilePath} file...`);\n      setTimeout(() => fs.writeFile(configFilePath, JSON.stringify(newConfig, null, 2)), writeTimeout);\n    }\n\n    return newConfig;\n  } catch (error) {\n    if (error instanceof Error && error.message.includes(\"ENOENT\")) {\n      console.log(`Creating ${configFilePath} file...`);\n    } else {\n      console.error(`Invalid ${configFilePath} file, regenerating...`);\n    }\n\n    setTimeout(() => fs.writeFile(configFilePath, JSON.stringify(defaultConfig, null, 2)), writeTimeout);\n    return defaultConfig;\n  }\n}\n"],"names":["createConfig","getTailwindVersion","configFilePath","klona","COMPONENT_TO_CLASS_LIST_MAP","isEqual"],"mappings":"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"}