shadcn-svelte 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -934,6 +934,9 @@ async function main() {
|
|
|
934
934
|
"display the version number"
|
|
935
935
|
);
|
|
936
936
|
program.command("init").description("Configure your SvelteKit project.").option("-y, --yes", "Skip confirmation prompt.").action(async (options) => {
|
|
937
|
+
logger.warn(
|
|
938
|
+
"IMPORTANT: Svelte v4 is not supported yet by some of our dependencies (lucide-svelte & radix-svelte). Please use Svelte v3 for now. We expect this issue to be resolved very soon. Apologies for the inconvenience."
|
|
939
|
+
);
|
|
937
940
|
logger.warn(
|
|
938
941
|
"This command assumes a SvelteKit project with TypeScript and Tailwind CSS."
|
|
939
942
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/get-components.ts","../src/utils/get-package-info.ts","../src/utils/get-package-manager.ts","../src/utils/get-project-info.ts","../src/utils/logger.ts","../src/utils/set-config.ts","../src/astravel/defaultTraveler.js","../src/astravel/attachComments.js","../src/utils/schemas.ts","../src/utils/templates.ts"],"sourcesContent":["#!/usr/bin/env node\n// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\nimport { existsSync, promises as fs } from \"fs\";\nimport path from \"path\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport { Component, getAvailableComponents } from \"./utils/get-components\";\nimport { getPackageInfo } from \"./utils/get-package-info\";\nimport { getPackageManager } from \"./utils/get-package-manager\";\nimport { getProjectInfo } from \"./utils/get-project-info\";\nimport { logger } from \"./utils/logger\";\nimport { addAliases, getConfig, setConfig } from \"./utils/set-config\";\nimport { STYLES, TAILWIND_CONFIG, UTILS } from \"./utils/templates\";\n\nprocess.on(\"SIGINT\", () => process.exit(0));\nprocess.on(\"SIGTERM\", () => process.exit(0));\n\nconst PROJECT_DEPENDENCIES = [\n\t\"tailwindcss-animate\",\n\t\"class-variance-authority\",\n\t\"clsx\",\n\t\"tailwind-merge\",\n\t\"lucide-svelte\"\n];\n\nasync function main() {\n\tconst packageInfo = getPackageInfo();\n\tconst projectInfo = await getProjectInfo();\n\tconst packageManager = getPackageManager();\n\n\tconst program = new Command()\n\t\t.name(\"shadcn-svelte\")\n\t\t.description(\"Add shadcn-svelte components to your project\")\n\t\t.version(\n\t\t\tpackageInfo.version || \"1.0.0\",\n\t\t\t\"-v, --version\",\n\t\t\t\"display the version number\"\n\t\t);\n\n\tprogram\n\t\t.command(\"init\")\n\t\t.description(\"Configure your SvelteKit project.\")\n\t\t.option(\"-y, --yes\", \"Skip confirmation prompt.\")\n\t\t.action(async (options) => {\n\t\t\tlogger.warn(\n\t\t\t\t\"This command assumes a SvelteKit project with TypeScript and Tailwind CSS.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"If you don't have these, follow the manual steps at https://shadcn-svelte.com/docs/installation.\"\n\t\t\t);\n\t\t\tlogger.warn(\"\");\n\n\t\t\tif (!options.yes) {\n\t\t\t\tconst { proceed } = await prompts({\n\t\t\t\t\ttype: \"confirm\",\n\t\t\t\t\tname: \"proceed\",\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"Running this command will install dependencies and overwrite your existing tailwind.config.[cjs|js] & svelte.config.js. Proceed?\",\n\t\t\t\t\tinitial: true\n\t\t\t\t});\n\n\t\t\t\tif (!proceed) {\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Install dependencies.\n\t\t\tconst dependenciesSpinner = ora(\n\t\t\t\t`Installing dependencies...`\n\t\t\t).start();\n\t\t\tawait execa(packageManager, [\n\t\t\t\tpackageManager === \"npm\" ? \"install\" : \"add\",\n\t\t\t\t...PROJECT_DEPENDENCIES\n\t\t\t]);\n\t\t\tdependenciesSpinner.succeed();\n\n\t\t\t// Update styles\n\t\t\tlet stylesDestination = \"./src/app.postcss\";\n\n\t\t\tconst stylesSpinner = ora(\n\t\t\t\t`Adding styles with CSS variables...`\n\t\t\t).start();\n\t\t\tawait fs.writeFile(stylesDestination, STYLES, \"utf8\");\n\t\t\tstylesSpinner.succeed();\n\n\t\t\t// Ensure lib directory exists.\n\t\t\tconst libDir = \"./src/lib\";\n\t\t\tif (!existsSync(path.resolve(libDir))) {\n\t\t\t\tawait fs.mkdir(path.resolve(libDir), { recursive: true });\n\t\t\t}\n\n\t\t\t// Create lib/utils.ts\n\t\t\tconst utilsDestination = \"./src/lib/utils.ts\";\n\n\t\t\tconst utilsSpinner = ora(`Adding utils...`).start();\n\t\t\tawait fs.writeFile(utilsDestination, UTILS, \"utf8\");\n\t\t\tutilsSpinner.succeed();\n\n\t\t\t// Update tailwind.config.js\n\t\t\tconst tailwindDestination = \"./tailwind.config.js\";\n\t\t\tconst tailwindSpinner = ora(\n\t\t\t\t`Updating tailwind.config.js...`\n\t\t\t).start();\n\t\t\tawait fs.writeFile(tailwindDestination, TAILWIND_CONFIG, \"utf8\");\n\t\t\t// Delete tailwind.config.cjs if present\n\t\t\tawait fs.unlink(\"./tailwind.config.cjs\").catch((e) => e); // throws when it DNE\n\t\t\ttailwindSpinner.succeed();\n\n\t\t\t// Update svelte.config.js\n\t\t\tconst svelteConfigSpinner = ora(\n\t\t\t\t`Updating svelte.config.js...`\n\t\t\t).start();\n\n\t\t\tawait addAliases();\n\t\t\tsvelteConfigSpinner.succeed();\n\t\t});\n\n\tprogram\n\t\t.command(\"add\")\n\t\t.description(\"add components to your project\")\n\t\t.argument(\"[components...]\", \"name of components\")\n\t\t.option(\n\t\t\t\"--nodep\",\n\t\t\t\"disable adding & installing dependencies (advanced)\"\n\t\t)\n\t\t.action(async (components: string[], options) => {\n\t\t\tlogger.warn(\n\t\t\t\t\"Running the following command will overwrite existing files.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"Make sure you have committed your changes before proceeding.\"\n\t\t\t);\n\t\t\tlogger.warn(\"\");\n\n\t\t\tconst availableComponents = await getAvailableComponents();\n\n\t\t\tif (!availableComponents?.length) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"An error occurred while fetching components. Please try again.\"\n\t\t\t\t);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tlet selectedComponents = availableComponents.filter((component) =>\n\t\t\t\tcomponents.includes(component.component)\n\t\t\t);\n\n\t\t\tif (!selectedComponents?.length) {\n\t\t\t\tselectedComponents = await promptForComponents(\n\t\t\t\t\tavailableComponents,\n\t\t\t\t\t\"Which component(s) would you like to add?\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst dir = await promptForDestinationDir();\n\n\t\t\tif (!selectedComponents?.length) {\n\t\t\t\tlogger.warn(\"No components selected. Nothing to install.\");\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\t// Create componentPath directory if it doesn't exist.\n\t\t\tconst destinationDir = path.resolve(dir);\n\t\t\tif (!existsSync(destinationDir)) {\n\t\t\t\tconst spinner = ora(`Creating ${dir}...`).start();\n\t\t\t\tawait fs.mkdir(destinationDir, { recursive: true });\n\t\t\t\tspinner.succeed();\n\t\t\t}\n\n\t\t\tlogger.success(\n\t\t\t\t`Installing ${selectedComponents.length} component(s) and dependencies...`\n\t\t\t);\n\t\t\tfor (const component of selectedComponents) {\n\t\t\t\tconst componentSpinner = ora(`${component.name}...`).start();\n\n\t\t\t\t// Write the files.\n\t\t\t\tfor (const file of component.files) {\n\t\t\t\t\t// Replace alias with the project's alias.\n\t\t\t\t\tif (projectInfo?.alias) {\n\t\t\t\t\t\tfile.content = file.content.replace(\n\t\t\t\t\t\t\t/$\\//g,\n\t\t\t\t\t\t\tprojectInfo.alias\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst dirPath = path.join(dir, file.dir);\n\t\t\t\t\tawait fs.mkdir(dirPath, { recursive: true });\n\t\t\t\t\tconst filePath = path.resolve(dirPath, file.name);\n\t\t\t\t\tawait fs.writeFile(filePath, file.content);\n\t\t\t\t}\n\n\t\t\t\t// Install dependencies.\n\t\t\t\tif (component.dependencies?.length && !options.nodep) {\n\t\t\t\t\tawait execa(packageManager, [\n\t\t\t\t\t\tpackageManager === \"npm\" ? \"install\" : \"add\",\n\t\t\t\t\t\t...component.dependencies\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tcomponentSpinner.succeed(component.name);\n\t\t\t}\n\n\t\t\tif (options.nodep)\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`components installed without dependencies, consider adding ${[\n\t\t\t\t\t\t...new Set(\n\t\t\t\t\t\t\tselectedComponents.flatMap(\n\t\t\t\t\t\t\t\t(component) => component.dependencies ?? []\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t].join(\", \")} to your project dependencies`\n\t\t\t\t);\n\t\t});\n\n\tprogram\n\t\t.command(\"update\")\n\t\t.description(\"update components in your project\")\n\t\t.argument(\"[components...]\", \"name of components\")\n\t\t.action(async (components: string[], options) => {\n\t\t\tlogger.warn(\n\t\t\t\t\"Running the following command will overwrite existing files.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"Make sure you have committed your changes before proceeding.\"\n\t\t\t);\n\t\t\tlogger.warn(\"\");\n\n\t\t\tconst availableComponents = await getAvailableComponents();\n\t\t\tif (!availableComponents?.length) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"An error occurred while fetching components. Please try again.\"\n\t\t\t\t);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tconst config = await getConfig();\n\t\t\tif (!config) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"'shadcn' config is missing in 'svelte.config.js'.\"\n\t\t\t\t);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tconst dir = config.componentPath;\n\n\t\t\tconst destinationDir = path.resolve(dir);\n\t\t\tif (!existsSync(destinationDir)) {\n\t\t\t\tlogger.error(`componentPath '${dir}' does not exist.`);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tconst userDefinedComponents: typeof availableComponents = [];\n\t\t\tconst files = await fs.readdir(destinationDir, {\n\t\t\t\twithFileTypes: true\n\t\t\t});\n\t\t\tfor (const file of files) {\n\t\t\t\tconst component = availableComponents.find(\n\t\t\t\t\t(comp) => comp.component === file.name\n\t\t\t\t);\n\t\t\t\tif (file.isDirectory() && component) {\n\t\t\t\t\t// is a valid shadcn component\n\t\t\t\t\tuserDefinedComponents.push(component);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet selectedComponents = userDefinedComponents.filter((component) =>\n\t\t\t\tcomponents.includes(component.component)\n\t\t\t);\n\n\t\t\t// If user didn't specify any component arguments\n\t\t\tif (selectedComponents.length === 0) {\n\t\t\t\tselectedComponents = await promptForComponents(\n\t\t\t\t\tuserDefinedComponents,\n\t\t\t\t\t\"Which component(s) would you like to update?\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (selectedComponents === undefined) {\n\t\t\t\tlogger.warn(`No shadcn components detected in '${dir}'.`);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tif (selectedComponents.length === 0) {\n\t\t\t\tlogger.warn(\"No components selected. Nothing to update.\");\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tlogger.success(\n\t\t\t\t`Updating ${selectedComponents.length} component(s) and dependencies...`\n\t\t\t);\n\t\t\tfor (const component of selectedComponents) {\n\t\t\t\tconst componentSpinner = ora(`${component.name}...`).start();\n\n\t\t\t\t// Write the files.\n\t\t\t\tfor (const file of component.files) {\n\t\t\t\t\t// Replace alias with the project's alias.\n\t\t\t\t\tif (projectInfo?.alias) {\n\t\t\t\t\t\tfile.content = file.content.replace(\n\t\t\t\t\t\t\t/$\\//g,\n\t\t\t\t\t\t\tprojectInfo.alias\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst dirPath = path.join(dir, file.dir);\n\t\t\t\t\tawait fs.mkdir(dirPath, { recursive: true });\n\t\t\t\t\tconst filePath = path.resolve(dirPath, file.name);\n\t\t\t\t\tawait fs.writeFile(filePath, file.content);\n\t\t\t\t}\n\n\t\t\t\t// Install dependencies.\n\t\t\t\tif (component.dependencies?.length) {\n\t\t\t\t\tawait execa(packageManager, [\n\t\t\t\t\t\tpackageManager === \"npm\" ? \"install\" : \"add\",\n\t\t\t\t\t\t...component.dependencies\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tcomponentSpinner.succeed(component.name);\n\t\t\t}\n\t\t});\n\n\tprogram.parse();\n}\n\nasync function promptForComponents(components: Component[], message: string) {\n\tconst { components: selectedComponents } = await prompts({\n\t\ttype: \"multiselect\",\n\t\tname: \"components\",\n\t\tmessage,\n\t\thint: \"<SPACE> to select. <A> to select all.\",\n\t\tinstructions: false,\n\t\tchoices: components.map((component) => ({\n\t\t\ttitle: component.name,\n\t\t\tvalue: component\n\t\t}))\n\t});\n\n\treturn selectedComponents;\n}\n\nasync function promptForDestinationDir() {\n\tconst config = await getConfig();\n\n\tif (!config) {\n\t\tconst { dir } = await prompts([\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\tname: \"dir\",\n\t\t\t\tmessage: \"Where would you like to install the component(s)?\",\n\t\t\t\tinitial: \"./src/lib/components/ui\"\n\t\t\t}\n\t\t]);\n\t\tawait setConfig(dir);\n\t\treturn dir;\n\t}\n\n\treturn config.componentPath;\n}\n\nmain();\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport fetch from \"node-fetch\";\nimport * as z from \"zod\";\n\nconst baseUrl = process.env.COMPONENTS_BASE_URL ?? \"https://shadcn-svelte.com\";\n\nconst componentSchema = z.object({\n\tcomponent: z.string(),\n\tname: z.string(),\n\tdependencies: z.array(z.string()).optional(),\n\tfiles: z.array(\n\t\tz.object({\n\t\t\tname: z.string(),\n\t\t\tdir: z.string(),\n\t\t\tcontent: z.string()\n\t\t})\n\t)\n});\n\nexport type Component = z.infer<typeof componentSchema>;\n\nconst componentsSchema = z.array(componentSchema);\n\nexport async function getAvailableComponents() {\n\ttry {\n\t\tconst response = await fetch(`${baseUrl}/api/components`);\n\t\tconst components = await response.json();\n\n\t\treturn componentsSchema.parse(components);\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`Failed to fetch components from ${baseUrl}/api/components.`\n\t\t);\n\t}\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport fs from \"fs-extra\";\nimport { type PackageJson } from \"type-fest\";\n\nexport function getPackageInfo() {\n\tconst packageJsonPath = getPackageFilePath(\"../package.json\");\n\n\treturn fs.readJSONSync(packageJsonPath) as PackageJson;\n}\n\nfunction getPackageFilePath(filePath: string) {\n\tlet distPath = fileURLToPath(new URL(`.`, import.meta.url));\n\n\treturn path.resolve(distPath, filePath);\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nexport function getPackageManager() {\n\tconst userAgent = process.env.npm_config_user_agent;\n\n\tif (!userAgent) {\n\t\treturn \"npm\";\n\t}\n\n\tif (userAgent.startsWith(\"yarn\")) {\n\t\treturn \"yarn\";\n\t}\n\n\tif (userAgent.startsWith(\"pnpm\")) {\n\t\treturn \"pnpm\";\n\t}\n\n\treturn \"npm\";\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport { existsSync } from \"fs\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nexport async function getProjectInfo() {\n\tconst info = {\n\t\ttsconfig: null,\n\t\talias: null\n\t};\n\n\ttry {\n\t\tconst tsconfig = await getTsConfig();\n\t\tconst paths = tsconfig?.compilerOptions?.paths;\n\t\tconst alias = paths ? Object.keys(paths)[0].replace(\"*\", \"\") : null;\n\n\t\treturn {\n\t\t\ttsconfig,\n\t\t\talias,\n\t\t\tsrcDir: existsSync(path.resolve(\"./src\")),\n\t\t\tappDir:\n\t\t\t\texistsSync(path.resolve(\"./app\")) ||\n\t\t\t\texistsSync(path.resolve(\"./src/app\"))\n\t\t};\n\t} catch (error) {\n\t\treturn info;\n\t}\n}\n\nexport async function getTsConfig() {\n\ttry {\n\t\tconst tsconfigPath = path.join(\"tsconfig.json\");\n\t\tconst tsconfig = await fs.readJSON(tsconfigPath);\n\n\t\tif (!tsconfig) {\n\t\t\tthrow new Error(\"tsconfig.json is missing\");\n\t\t}\n\n\t\treturn tsconfig;\n\t} catch (error) {\n\t\treturn null;\n\t}\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport chalk from \"chalk\";\n\nexport const logger = {\n\terror(...args: unknown[]) {\n\t\tconsole.log(chalk.red(...args));\n\t},\n\twarn(...args: unknown[]) {\n\t\tconsole.log(chalk.yellow(...args));\n\t},\n\tinfo(...args: unknown[]) {\n\t\tconsole.log(chalk.cyan(...args));\n\t},\n\tsuccess(...args: unknown[]) {\n\t\tconsole.log(chalk.green(...args));\n\t}\n};\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Property } from \"estree\";\nimport type { Node } from \"estree-walker\";\nimport { Comment, parse } from \"acorn\";\nimport { generate } from \"astring\";\nimport { walk } from \"estree-walker\";\nimport prettier from \"prettier\";\n// @ts-expect-error no types\n// had to manually add this package since their package.json is misconfigured\nimport { attachComments } from \"../astravel\";\nimport { ShadConfig, shadConfigSchema } from \"./schemas\";\n\nconst SVELTE_CONFIG_PATH = path.join(process.cwd(), \"svelte.config.js\");\nconst IMPORT_SVELTE_CONFIG_PATH = \"file://\" + SVELTE_CONFIG_PATH;\n\nexport async function getConfig(): Promise<ShadConfig | null> {\n\tconst { default: svelteConfig } = await import(IMPORT_SVELTE_CONFIG_PATH);\n\n\ttry {\n\t\tconst shadConfig = shadConfigSchema.parse(svelteConfig.shadcn);\n\t\treturn shadConfig;\n\t} catch (e) {\n\t\treturn null;\n\t}\n}\n\n/**\n * Parse the svelte.config.js file into an abstract syntax tree (AST),\n * then walk the tree to find the config object and add the shadcn\n * property to it with the componentPath property.\n */\nexport async function setConfig(dir: string = \"./src/lib/components/ui\") {\n\tconst { default: config } = await import(IMPORT_SVELTE_CONFIG_PATH);\n\tif (!config) {\n\t\tthrow new Error(\"Could not find config for svelte.config.js\");\n\t}\n\n\tconst { ast, comments } = await parseSvelteConfig();\n\n\tconst updatedSvelteConfig = walk(ast as Node, {\n\t\tenter(node) {\n\t\t\tif (\n\t\t\t\tnode.type === \"VariableDeclaration\" &&\n\t\t\t\tnode.kind === \"const\" &&\n\t\t\t\tnode.declarations[0].type === \"VariableDeclarator\" &&\n\t\t\t\tnode.declarations[0].id.type === \"Identifier\" &&\n\t\t\t\tnode.declarations[0].id.name === \"config\"\n\t\t\t) {\n\t\t\t\tconst configNode = node.declarations[0];\n\t\t\t\tif (\n\t\t\t\t\tconfigNode.init &&\n\t\t\t\t\tconfigNode.init.type === \"ObjectExpression\"\n\t\t\t\t) {\n\t\t\t\t\tconfigNode.init.properties.push(createConfigNode(dir));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tif (!updatedSvelteConfig) {\n\t\tthrow new Error(\"Could not update svelte.config.js\");\n\t}\n\n\tattachComments(updatedSvelteConfig, comments);\n\tconst updatedSvelteConfigString = generate(updatedSvelteConfig, {\n\t\tcomments: true\n\t});\n\n\treturn formatFile(updatedSvelteConfigString, SVELTE_CONFIG_PATH);\n}\n\n/**\n * Parse the svelte.config.js file into an abstract syntax tree (AST),\n * then walk the tree to find the config object and adds the alias\n * property to it\n */\nexport async function addAliases(dir: string = \"./src/lib/components/ui\") {\n\tconst { ast, comments } = await parseSvelteConfig();\n\n\tconst updatedSvelteConfig = walk(ast as Node, {\n\t\tenter(node) {\n\t\t\tif (\n\t\t\t\tnode.type === \"Property\" &&\n\t\t\t\tnode.key.type === \"Identifier\" &&\n\t\t\t\tnode.key.name === \"kit\" &&\n\t\t\t\tnode.value.type === \"ObjectExpression\"\n\t\t\t) {\n\t\t\t\t// check if `alias` is already defined\n\t\t\t\tconst aliasProp = node.value.properties.find(\n\t\t\t\t\t(n) =>\n\t\t\t\t\t\tn.type === \"Property\" &&\n\t\t\t\t\t\tn.value.type === \"ObjectExpression\" &&\n\t\t\t\t\t\tn.key.type === \"Identifier\" &&\n\t\t\t\t\t\tn.key.name === \"alias\"\n\t\t\t\t) as Property | undefined;\n\n\t\t\t\tif (!aliasProp) {\n\t\t\t\t\t// alias is not defined so we'll add it\n\t\t\t\t\tnode.value.properties.push(createAliasNode());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\taliasProp.type === \"Property\" &&\n\t\t\t\t\taliasProp.value.type === \"ObjectExpression\"\n\t\t\t\t) {\n\t\t\t\t\taliasProp.value.properties.push(...createAliasProperties());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tif (!updatedSvelteConfig) {\n\t\tthrow new Error(\"Could not update svelte.config.js\");\n\t}\n\n\tattachComments(updatedSvelteConfig, comments);\n\tconst updatedSvelteConfigString = generate(updatedSvelteConfig, {\n\t\tcomments: true\n\t});\n\n\treturn formatFile(updatedSvelteConfigString, SVELTE_CONFIG_PATH);\n}\n\nasync function parseSvelteConfig() {\n\tconst { default: config } = await import(IMPORT_SVELTE_CONFIG_PATH);\n\tif (!config) {\n\t\tthrow new Error(\"Could not find config for svelte.config.js\");\n\t}\n\n\tconst svelteConfig = fs.readFileSync(SVELTE_CONFIG_PATH, \"utf8\");\n\n\tconst comments: Comment[] = [];\n\tconst ast = parse(svelteConfig, {\n\t\tecmaVersion: \"latest\",\n\t\tsourceType: \"module\",\n\t\tonComment: comments\n\t});\n\n\treturn { ast, comments };\n}\n\nfunction formatFile(content: string, path: string) {\n\tconst prettierConfigFile = prettier.resolveConfigFile.sync(path);\n\tif (!prettierConfigFile) {\n\t\treturn fs.writeFileSync(path, content);\n\t}\n\n\tconst prettierConfig = prettier.resolveConfig.sync(prettierConfigFile);\n\tif (!prettierConfig) {\n\t\treturn fs.writeFileSync(path, content);\n\t}\n\n\tconst formattedContent = prettier.format(content, {\n\t\t...prettierConfig,\n\t\tparser: \"babel\"\n\t});\n\treturn fs.writeFileSync(path, formattedContent);\n}\n\nfunction createConfigNode(dir: string): Property {\n\treturn {\n\t\ttype: \"Property\",\n\t\tmethod: false,\n\t\tshorthand: false,\n\t\tcomputed: false,\n\t\tkey: {\n\t\t\ttype: \"Identifier\",\n\t\t\tname: \"shadcn\"\n\t\t},\n\t\tvalue: {\n\t\t\ttype: \"ObjectExpression\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"Property\",\n\t\t\t\t\tmethod: false,\n\t\t\t\t\tshorthand: false,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: \"Identifier\",\n\t\t\t\t\t\tname: \"componentPath\"\n\t\t\t\t\t},\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: \"Literal\",\n\t\t\t\t\t\tvalue: dir,\n\t\t\t\t\t\traw: `'${dir}'`\n\t\t\t\t\t},\n\t\t\t\t\tkind: \"init\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tkind: \"init\"\n\t};\n}\n\nfunction createAliasNode(): Property {\n\treturn {\n\t\ttype: \"Property\",\n\t\tmethod: false,\n\t\tshorthand: false,\n\t\tcomputed: false,\n\t\tkey: {\n\t\t\ttype: \"Identifier\",\n\t\t\tname: \"alias\"\n\t\t},\n\t\tvalue: {\n\t\t\ttype: \"ObjectExpression\",\n\t\t\tproperties: createAliasProperties()\n\t\t},\n\t\tkind: \"init\"\n\t};\n}\n\nfunction createAliasProperties(): Property[] {\n\treturn [\n\t\t{\n\t\t\ttype: \"Property\",\n\t\t\tmethod: false,\n\t\t\tshorthand: false,\n\t\t\tcomputed: false,\n\t\t\tkey: {\n\t\t\t\ttype: \"Identifier\",\n\t\t\t\tname: \"$components\"\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\ttype: \"Literal\",\n\t\t\t\tvalue: \"src/lib/components\",\n\t\t\t\traw: '\"src/lib/components\"'\n\t\t\t},\n\t\t\tkind: \"init\"\n\t\t},\n\t\t{\n\t\t\ttype: \"Property\",\n\t\t\tmethod: false,\n\t\t\tshorthand: false,\n\t\t\tcomputed: false,\n\t\t\tkey: {\n\t\t\t\ttype: \"Literal\",\n\t\t\t\tvalue: \"$components/*\",\n\t\t\t\traw: '\"$components/*\"'\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\ttype: \"Literal\",\n\t\t\t\tvalue: \"src/lib/components/*\",\n\t\t\t\traw: '\"src/lib/components/*\"'\n\t\t\t},\n\t\t\tkind: \"init\"\n\t\t}\n\t];\n}\n","let ForInStatement,\n\tFunctionDeclaration,\n\tRestElement,\n\tBinaryExpression,\n\tArrayExpression,\n\tBlock,\n\tMethodDefinition;\n\nconst ignore = Function.prototype;\n\nclass Found {\n\tconstructor(node, state) {\n\t\tthis.node = node;\n\t\tthis.state = state;\n\t}\n}\n\nexport const defaultTraveler = {\n\tgo(node, state) {\n\t\t/*\n Starts travelling through the specified AST `node` with the provided `state`.\n This method is recursively called by each node handler.\n */\n\t\tif (this[node.type]) {\n\t\t\tthis[node.type](node, state);\n\t\t}\n\t},\n\tfind(predicate, node, state) {\n\t\t/*\n Returns { node, state } for which `predicate(node, state)` returns truthy,\n starting at the specified AST `node` and with the provided `state`.\n Otherwise, returns `undefined`.\n */\n\t\tconst finder = Object.create(this);\n\t\tfinder.go = function (node, state) {\n\t\t\tif (predicate(node, state)) {\n\t\t\t\tthrow new Found(node, state);\n\t\t\t}\n\t\t\tthis[node.type](node, state);\n\t\t};\n\t\ttry {\n\t\t\tfinder.go(node, state);\n\t\t} catch (error) {\n\t\t\tif (error instanceof Found) {\n\t\t\t\treturn error;\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t},\n\tmakeChild(properties = {}) {\n\t\t/*\n Returns a custom AST traveler that inherits from `this` traveler with its own provided `properties` and the property `super` that points to the parent traveler object.\n */\n\t\tconst traveler = Object.create(this);\n\t\ttraveler.super = this;\n\t\tfor (let key in properties) {\n\t\t\ttraveler[key] = properties[key];\n\t\t}\n\t\treturn traveler;\n\t},\n\tProgram: (Block = function (node, state) {\n\t\tconst { body } = node;\n\t\tif (body != null) {\n\t\t\tconst { length } = body;\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tthis.go(body[i], state);\n\t\t\t}\n\t\t}\n\t}),\n\tBlockStatement: Block,\n\tStaticBlock: Block,\n\tEmptyStatement: ignore,\n\tExpressionStatement(node, state) {\n\t\tthis.go(node.expression, state);\n\t},\n\tIfStatement(node, state) {\n\t\tthis.go(node.test, state);\n\t\tthis.go(node.consequent, state);\n\t\tif (node.alternate != null) {\n\t\t\tthis.go(node.alternate, state);\n\t\t}\n\t},\n\tLabeledStatement(node, state) {\n\t\tthis.go(node.label, state);\n\t\tthis.go(node.body, state);\n\t},\n\tBreakStatement(node, state) {\n\t\tif (node.label) {\n\t\t\tthis.go(node.label, state);\n\t\t}\n\t},\n\tContinueStatement(node, state) {\n\t\tif (node.label) {\n\t\t\tthis.go(node.label, state);\n\t\t}\n\t},\n\tWithStatement(node, state) {\n\t\tthis.go(node.object, state);\n\t\tthis.go(node.body, state);\n\t},\n\tSwitchStatement(node, state) {\n\t\tthis.go(node.discriminant, state);\n\t\tconst { cases } = node,\n\t\t\t{ length } = cases;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(cases[i], state);\n\t\t}\n\t},\n\tSwitchCase(node, state) {\n\t\tif (node.test != null) {\n\t\t\tthis.go(node.test, state);\n\t\t}\n\t\tconst statements = node.consequent,\n\t\t\t{ length } = statements;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(statements[i], state);\n\t\t}\n\t},\n\tReturnStatement(node, state) {\n\t\tif (node.argument) {\n\t\t\tthis.go(node.argument, state);\n\t\t}\n\t},\n\tThrowStatement(node, state) {\n\t\tthis.go(node.argument, state);\n\t},\n\tTryStatement(node, state) {\n\t\tthis.go(node.block, state);\n\t\tif (node.handler != null) {\n\t\t\tthis.go(node.handler, state);\n\t\t}\n\t\tif (node.finalizer != null) {\n\t\t\tthis.go(node.finalizer, state);\n\t\t}\n\t},\n\tCatchClause(node, state) {\n\t\tif (node.param != null) {\n\t\t\tthis.go(node.param, state);\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tWhileStatement(node, state) {\n\t\tthis.go(node.test, state);\n\t\tthis.go(node.body, state);\n\t},\n\tDoWhileStatement(node, state) {\n\t\tthis.go(node.body, state);\n\t\tthis.go(node.test, state);\n\t},\n\tForStatement(node, state) {\n\t\tif (node.init != null) {\n\t\t\tthis.go(node.init, state);\n\t\t}\n\t\tif (node.test != null) {\n\t\t\tthis.go(node.test, state);\n\t\t}\n\t\tif (node.update != null) {\n\t\t\tthis.go(node.update, state);\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tForInStatement: (ForInStatement = function (node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t\tthis.go(node.body, state);\n\t}),\n\tDebuggerStatement: ignore,\n\tFunctionDeclaration: (FunctionDeclaration = function (node, state) {\n\t\tif (node.id != null) {\n\t\t\tthis.go(node.id, state);\n\t\t}\n\t\tconst { params } = node;\n\t\tif (params != null) {\n\t\t\tfor (let i = 0, { length } = params; i < length; i++) {\n\t\t\t\tthis.go(params[i], state);\n\t\t\t}\n\t\t}\n\t\tthis.go(node.body, state);\n\t}),\n\tVariableDeclaration(node, state) {\n\t\tconst { declarations } = node,\n\t\t\t{ length } = declarations;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(declarations[i], state);\n\t\t}\n\t},\n\tVariableDeclarator(node, state) {\n\t\tthis.go(node.id, state);\n\t\tif (node.init != null) {\n\t\t\tthis.go(node.init, state);\n\t\t}\n\t},\n\tArrowFunctionExpression(node, state) {\n\t\tconst { params } = node;\n\t\tif (params != null) {\n\t\t\tfor (let i = 0, { length } = params; i < length; i++) {\n\t\t\t\tthis.go(params[i], state);\n\t\t\t}\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tThisExpression: ignore,\n\tArrayExpression: (ArrayExpression = function (node, state) {\n\t\tconst { elements } = node,\n\t\t\t{ length } = elements;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tlet element = elements[i];\n\t\t\tif (element != null) {\n\t\t\t\tthis.go(elements[i], state);\n\t\t\t}\n\t\t}\n\t}),\n\tObjectExpression(node, state) {\n\t\tconst { properties } = node,\n\t\t\t{ length } = properties;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(properties[i], state);\n\t\t}\n\t},\n\tProperty(node, state) {\n\t\tthis.go(node.key, state);\n\t\tif (node.value != null) {\n\t\t\tthis.go(node.value, state);\n\t\t}\n\t},\n\tFunctionExpression: FunctionDeclaration,\n\tSequenceExpression(node, state) {\n\t\tconst { expressions } = node,\n\t\t\t{ length } = expressions;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(expressions[i], state);\n\t\t}\n\t},\n\tUnaryExpression(node, state) {\n\t\tthis.go(node.argument, state);\n\t},\n\tUpdateExpression(node, state) {\n\t\tthis.go(node.argument, state);\n\t},\n\tAssignmentExpression(node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t},\n\tBinaryExpression: (BinaryExpression = function (node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t}),\n\tLogicalExpression: BinaryExpression,\n\tConditionalExpression(node, state) {\n\t\tthis.go(node.test, state);\n\t\tthis.go(node.consequent, state);\n\t\tthis.go(node.alternate, state);\n\t},\n\tNewExpression(node, state) {\n\t\tthis.CallExpression(node, state);\n\t},\n\tCallExpression(node, state) {\n\t\tthis.go(node.callee, state);\n\t\tconst args = node[\"arguments\"],\n\t\t\t{ length } = args;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(args[i], state);\n\t\t}\n\t},\n\tMemberExpression(node, state) {\n\t\tthis.go(node.object, state);\n\t\tthis.go(node.property, state);\n\t},\n\tIdentifier: ignore,\n\tPrivateIdentifier: ignore,\n\tLiteral: ignore,\n\tForOfStatement: ForInStatement,\n\tClassDeclaration(node, state) {\n\t\tif (node.id) {\n\t\t\tthis.go(node.id, state);\n\t\t}\n\t\tif (node.superClass) {\n\t\t\tthis.go(node.superClass, state);\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tClassBody: Block,\n\tImportDeclaration(node, state) {\n\t\tconst { specifiers } = node,\n\t\t\t{ length } = specifiers;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(specifiers[i], state);\n\t\t}\n\t\tthis.go(node.source, state);\n\t},\n\tImportNamespaceSpecifier(node, state) {\n\t\tthis.go(node.local, state);\n\t},\n\tImportDefaultSpecifier(node, state) {\n\t\tthis.go(node.local, state);\n\t},\n\tImportSpecifier(node, state) {\n\t\tthis.go(node.imported, state);\n\t\tthis.go(node.local, state);\n\t},\n\tExportDefaultDeclaration(node, state) {\n\t\tthis.go(node.declaration, state);\n\t},\n\tExportNamedDeclaration(node, state) {\n\t\tif (node.declaration) {\n\t\t\tthis.go(node.declaration, state);\n\t\t}\n\t\tconst { specifiers } = node,\n\t\t\t{ length } = specifiers;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(specifiers[i], state);\n\t\t}\n\t\tif (node.source) {\n\t\t\tthis.go(node.source, state);\n\t\t}\n\t},\n\tExportSpecifier(node, state) {\n\t\tthis.go(node.local, state);\n\t\tthis.go(node.exported, state);\n\t},\n\tExportAllDeclaration(node, state) {\n\t\tthis.go(node.source, state);\n\t},\n\tMethodDefinition: (MethodDefinition = function (node, state) {\n\t\tthis.go(node.key, state);\n\t\tthis.go(node.value, state);\n\t}),\n\tPropertyDefinition: MethodDefinition,\n\tClassExpression(node, state) {\n\t\tthis.ClassDeclaration(node, state);\n\t},\n\tSuper: ignore,\n\tRestElement: (RestElement = function (node, state) {\n\t\tthis.go(node.argument, state);\n\t}),\n\tSpreadElement: RestElement,\n\tYieldExpression(node, state) {\n\t\tif (node.argument) {\n\t\t\tthis.go(node.argument, state);\n\t\t}\n\t},\n\tTaggedTemplateExpression(node, state) {\n\t\tthis.go(node.tag, state);\n\t\tthis.go(node.quasi, state);\n\t},\n\tTemplateLiteral(node, state) {\n\t\tconst { quasis, expressions } = node;\n\t\tfor (let i = 0, { length } = expressions; i < length; i++) {\n\t\t\tthis.go(expressions[i], state);\n\t\t}\n\t\tfor (let i = 0, { length } = quasis; i < length; i++) {\n\t\t\tthis.go(quasis[i], state);\n\t\t}\n\t},\n\tTemplateElement: ignore,\n\tObjectPattern(node, state) {\n\t\tconst { properties } = node,\n\t\t\t{ length } = properties;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(properties[i], state);\n\t\t}\n\t},\n\tArrayPattern: ArrayExpression,\n\tAssignmentPattern(node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t},\n\tMetaProperty(node, state) {\n\t\tthis.go(node.meta, state);\n\t\tthis.go(node.property, state);\n\t},\n\tAwaitExpression(node, state) {\n\t\tthis.go(node.argument, state);\n\t}\n};\n","import { defaultTraveler } from \"./defaultTraveler\";\n\nfunction attachCommentsToNode(\n\ttraveler,\n\tstate,\n\tparent,\n\tchildren,\n\tfindHeadingComments\n) {\n\tlet { index } = state;\n\tconst { comments } = state;\n\tlet comment = comments[index];\n\t// Hack to tackle https://github.com/babel/minify/issues/866\n\tlet boundComments, trailingComments;\n\tif (comment == null) {\n\t\treturn;\n\t}\n\tif (children == null || children.length === 0) {\n\t\t// No children, attach comments to parent\n\t\tboundComments = parent.comments != null ? parent.comments : [];\n\t\twhile (comment != null && comment.end <= parent.end) {\n\t\t\tboundComments.push(comment);\n\t\t\tcomment = comments[++index];\n\t\t}\n\t\tstate.index = index;\n\t\tif (boundComments.length !== 0 && parent.comments == null) {\n\t\t\tparent.comments = boundComments;\n\t\t}\n\t\treturn;\n\t}\n\t// Look for heading block comments not immediately followed by a child\n\tif (findHeadingComments) {\n\t\tboundComments = parent.comments != null ? parent.comments : [];\n\t\tconst { start } = children[0];\n\t\twhile (\n\t\t\tcomment != null &&\n\t\t\t(comment.type[0] === \"B\" || comment.type[0] === \"M\") &&\n\t\t\tcomment.end <= start\n\t\t) {\n\t\t\tboundComments.push(comment);\n\t\t\tcomment = comments[++index];\n\t\t}\n\t\tif (boundComments.length !== 0 && parent.comments == null)\n\t\t\tparent.comments = boundComments;\n\t}\n\t// Attach comments to children\n\tfor (let i = 0, { length } = children; comment != null && i < length; i++) {\n\t\tconst child = children[i];\n\t\tboundComments = [];\n\t\twhile (comment != null && comment.end <= child.start) {\n\t\t\tboundComments.push(comment);\n\t\t\tcomment = comments[++index];\n\t\t}\n\t\t// Check if next comment is line comment and on the same line if location is provided\n\t\tif (\n\t\t\tcomment != null &&\n\t\t\tcomment.loc != null &&\n\t\t\t(comment.type[0] === \"L\" || comment.type[0] === \"S\")\n\t\t) {\n\t\t\tif (comment.loc.start.line === child.loc.end.line) {\n\t\t\t\tboundComments.push(comment);\n\t\t\t\tcomment = comments[++index];\n\t\t\t}\n\t\t}\n\t\tif (boundComments.length !== 0) {\n\t\t\tchild.comments = boundComments;\n\t\t}\n\t\t// Travel through child\n\t\tstate.index = index;\n\t\ttraveler[child.type](child, state);\n\t\tindex = state.index;\n\t\tcomment = comments[index];\n\t}\n\t// Look for remaining comments\n\ttrailingComments = [];\n\twhile (comment != null && comment.end <= parent.end) {\n\t\ttrailingComments.push(comment);\n\t\tcomment = comments[++index];\n\t}\n\tif (trailingComments.length !== 0) {\n\t\tparent.trailingComments = trailingComments;\n\t}\n\tstate.index = index;\n}\n\nfunction Block(node, state) {\n\tattachCommentsToNode(this, state, node, node.body, true);\n}\n\nlet traveler = defaultTraveler.makeChild({\n\tProgram: Block,\n\tBlockStatement: Block,\n\tClassBody: Block,\n\tObjectExpression(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.properties, true);\n\t},\n\tArrayExpression(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.elements, true);\n\t},\n\tSwitchStatement(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.cases, false);\n\t},\n\tSwitchCase(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.consequent, false);\n\t}\n\t// TODO: Consider ArrayExpression ?\n});\n\nexport function attachComments(node, comments) {\n\t/*\n Modifies in-place the AST starting at `node` by attaching the provided `comments` and returns that AST.\n */\n\ttraveler[node.type](node, {\n\t\tcomments,\n\t\tindex: 0\n\t});\n\treturn node;\n}\n","import { z } from \"zod\";\n\nexport const shadConfigSchema = z.object({\n\tcomponentPath: z.string()\n});\n\nexport type ShadConfig = z.infer<typeof shadConfigSchema>;\n","export const STYLES = `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 222.2 47.4% 11.2%;\n \n --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 222.2 47.4% 11.2%;\n \n --card: 0 0% 100%;\n --card-foreground: 222.2 47.4% 11.2%;\n \n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n \n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n \n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n \n --accent: 210 40% 96.1%;\n --accent-foreground: 222.2 47.4% 11.2%;\n \n --destructive: 0 92% 38%;\n\t\t--destructive-foreground: 210 40% 98%;\n \n --ring: 215 20.2% 65.1%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 224 71% 4%;\n --foreground: 213 31% 91%;\n \n --muted: 223 47% 11%;\n --muted-foreground: 215.4 16.3% 56.9%;\n \n --popover: 224 71% 4%;\n --popover-foreground: 215 20.2% 65.1%;\n \n --card: 224 71% 4%;\n --card-foreground: 213 31% 91%;\n \n --border: 216 34% 17%;\n --input: 216 34% 17%;\n \n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 1.2%;\n \n --secondary: 222.2 47.4% 11.2%;\n --secondary-foreground: 210 40% 98%;\n \n --accent: 216 34% 17%;\n --accent-foreground: 210 40% 98%;\n \n --destructive: 359 51% 48%;\n\t\t--destructive-foreground: 210 40% 98%;\n \n --ring: 216 34% 17%;\n \n --radius: 0.5rem;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n font-feature-settings: \"rlig\" 1, \"calt\" 1;\n }\n}`;\n\nexport const UTILS = `import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n \nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n`;\n\nexport const TAILWIND_CONFIG = `import { fontFamily } from \"tailwindcss/defaultTheme\";\nimport tailwindcssAnimate from \"tailwindcss-animate\";\n\n/** @type {import('tailwindcss').Config} */\nconst config = {\n\tdarkMode: [\"class\"],\n\tcontent: [\"./src/**/*.{html,js,svelte,ts}\"],\n\ttheme: {\n\t\tcontainer: {\n\t\t\tcenter: true,\n\t\t\tpadding: \"2rem\",\n\t\t\tscreens: {\n\t\t\t\t\"2xl\": \"1400px\"\n\t\t\t}\n\t\t},\n\t\textend: {\n\t\t\tcolors: {\n\t\t\t\tborder: \"hsl(var(--border))\",\n\t\t\t\tinput: \"hsl(var(--input))\",\n\t\t\t\tring: \"hsl(var(--ring))\",\n\t\t\t\tbackground: \"hsl(var(--background))\",\n\t\t\t\tforeground: \"hsl(var(--foreground))\",\n\t\t\t\tprimary: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--primary))\",\n\t\t\t\t\tforeground: \"hsl(var(--primary-foreground))\"\n\t\t\t\t},\n\t\t\t\tsecondary: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--secondary))\",\n\t\t\t\t\tforeground: \"hsl(var(--secondary-foreground))\"\n\t\t\t\t},\n\t\t\t\tdestructive: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--destructive))\",\n\t\t\t\t\tforeground: \"hsl(var(--destructive-foreground))\"\n\t\t\t\t},\n\t\t\t\tmuted: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--muted))\",\n\t\t\t\t\tforeground: \"hsl(var(--muted-foreground))\"\n\t\t\t\t},\n\t\t\t\taccent: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--accent))\",\n\t\t\t\t\tforeground: \"hsl(var(--accent-foreground))\"\n\t\t\t\t},\n\t\t\t\tpopover: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--popover))\",\n\t\t\t\t\tforeground: \"hsl(var(--popover-foreground))\"\n\t\t\t\t},\n\t\t\t\tcard: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--card))\",\n\t\t\t\t\tforeground: \"hsl(var(--card-foreground))\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tborderRadius: {\n\t\t\t\tlg: \"var(--radius)\",\n\t\t\t\tmd: \"calc(var(--radius) - 2px)\",\n\t\t\t\tsm: \"calc(var(--radius) - 4px)\"\n\t\t\t},\n\t\t\tfontFamily: {\n\t\t\t\tsans: [...fontFamily.sans]\n\t\t\t}\n\t\t}\n\t},\n\tplugins: [tailwindcssAnimate]\n};\n\nexport default config;\n`;\n"],"mappings":"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","names":["existsSync","fs","path","path","fs","fs","path","node","state","traveler","traveler","Block","z","path","fs","fs","existsSync","path"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils/get-components.ts","../src/utils/get-package-info.ts","../src/utils/get-package-manager.ts","../src/utils/get-project-info.ts","../src/utils/logger.ts","../src/utils/set-config.ts","../src/astravel/defaultTraveler.js","../src/astravel/attachComments.js","../src/utils/schemas.ts","../src/utils/templates.ts"],"sourcesContent":["#!/usr/bin/env node\n// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\nimport { existsSync, promises as fs } from \"fs\";\nimport path from \"path\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport { Component, getAvailableComponents } from \"./utils/get-components\";\nimport { getPackageInfo } from \"./utils/get-package-info\";\nimport { getPackageManager } from \"./utils/get-package-manager\";\nimport { getProjectInfo } from \"./utils/get-project-info\";\nimport { logger } from \"./utils/logger\";\nimport { addAliases, getConfig, setConfig } from \"./utils/set-config\";\nimport { STYLES, TAILWIND_CONFIG, UTILS } from \"./utils/templates\";\n\nprocess.on(\"SIGINT\", () => process.exit(0));\nprocess.on(\"SIGTERM\", () => process.exit(0));\n\nconst PROJECT_DEPENDENCIES = [\n\t\"tailwindcss-animate\",\n\t\"class-variance-authority\",\n\t\"clsx\",\n\t\"tailwind-merge\",\n\t\"lucide-svelte\"\n];\n\nasync function main() {\n\tconst packageInfo = getPackageInfo();\n\tconst projectInfo = await getProjectInfo();\n\tconst packageManager = getPackageManager();\n\n\tconst program = new Command()\n\t\t.name(\"shadcn-svelte\")\n\t\t.description(\"Add shadcn-svelte components to your project\")\n\t\t.version(\n\t\t\tpackageInfo.version || \"1.0.0\",\n\t\t\t\"-v, --version\",\n\t\t\t\"display the version number\"\n\t\t);\n\n\tprogram\n\t\t.command(\"init\")\n\t\t.description(\"Configure your SvelteKit project.\")\n\t\t.option(\"-y, --yes\", \"Skip confirmation prompt.\")\n\t\t.action(async (options) => {\n\t\t\tlogger.warn(\n\t\t\t\t\"IMPORTANT: Svelte v4 is not supported yet by some of our dependencies (lucide-svelte & radix-svelte). Please use Svelte v3 for now. We expect this issue to be resolved very soon. Apologies for the inconvenience.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"This command assumes a SvelteKit project with TypeScript and Tailwind CSS.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"If you don't have these, follow the manual steps at https://shadcn-svelte.com/docs/installation.\"\n\t\t\t);\n\t\t\tlogger.warn(\"\");\n\n\t\t\tif (!options.yes) {\n\t\t\t\tconst { proceed } = await prompts({\n\t\t\t\t\ttype: \"confirm\",\n\t\t\t\t\tname: \"proceed\",\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"Running this command will install dependencies and overwrite your existing tailwind.config.[cjs|js] & svelte.config.js. Proceed?\",\n\t\t\t\t\tinitial: true\n\t\t\t\t});\n\n\t\t\t\tif (!proceed) {\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Install dependencies.\n\t\t\tconst dependenciesSpinner = ora(\n\t\t\t\t`Installing dependencies...`\n\t\t\t).start();\n\t\t\tawait execa(packageManager, [\n\t\t\t\tpackageManager === \"npm\" ? \"install\" : \"add\",\n\t\t\t\t...PROJECT_DEPENDENCIES\n\t\t\t]);\n\t\t\tdependenciesSpinner.succeed();\n\n\t\t\t// Update styles\n\t\t\tlet stylesDestination = \"./src/app.postcss\";\n\n\t\t\tconst stylesSpinner = ora(\n\t\t\t\t`Adding styles with CSS variables...`\n\t\t\t).start();\n\t\t\tawait fs.writeFile(stylesDestination, STYLES, \"utf8\");\n\t\t\tstylesSpinner.succeed();\n\n\t\t\t// Ensure lib directory exists.\n\t\t\tconst libDir = \"./src/lib\";\n\t\t\tif (!existsSync(path.resolve(libDir))) {\n\t\t\t\tawait fs.mkdir(path.resolve(libDir), { recursive: true });\n\t\t\t}\n\n\t\t\t// Create lib/utils.ts\n\t\t\tconst utilsDestination = \"./src/lib/utils.ts\";\n\n\t\t\tconst utilsSpinner = ora(`Adding utils...`).start();\n\t\t\tawait fs.writeFile(utilsDestination, UTILS, \"utf8\");\n\t\t\tutilsSpinner.succeed();\n\n\t\t\t// Update tailwind.config.js\n\t\t\tconst tailwindDestination = \"./tailwind.config.js\";\n\t\t\tconst tailwindSpinner = ora(\n\t\t\t\t`Updating tailwind.config.js...`\n\t\t\t).start();\n\t\t\tawait fs.writeFile(tailwindDestination, TAILWIND_CONFIG, \"utf8\");\n\t\t\t// Delete tailwind.config.cjs if present\n\t\t\tawait fs.unlink(\"./tailwind.config.cjs\").catch((e) => e); // throws when it DNE\n\t\t\ttailwindSpinner.succeed();\n\n\t\t\t// Update svelte.config.js\n\t\t\tconst svelteConfigSpinner = ora(\n\t\t\t\t`Updating svelte.config.js...`\n\t\t\t).start();\n\n\t\t\tawait addAliases();\n\t\t\tsvelteConfigSpinner.succeed();\n\t\t});\n\n\tprogram\n\t\t.command(\"add\")\n\t\t.description(\"add components to your project\")\n\t\t.argument(\"[components...]\", \"name of components\")\n\t\t.option(\n\t\t\t\"--nodep\",\n\t\t\t\"disable adding & installing dependencies (advanced)\"\n\t\t)\n\t\t.action(async (components: string[], options) => {\n\t\t\tlogger.warn(\n\t\t\t\t\"Running the following command will overwrite existing files.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"Make sure you have committed your changes before proceeding.\"\n\t\t\t);\n\t\t\tlogger.warn(\"\");\n\n\t\t\tconst availableComponents = await getAvailableComponents();\n\n\t\t\tif (!availableComponents?.length) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"An error occurred while fetching components. Please try again.\"\n\t\t\t\t);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tlet selectedComponents = availableComponents.filter((component) =>\n\t\t\t\tcomponents.includes(component.component)\n\t\t\t);\n\n\t\t\tif (!selectedComponents?.length) {\n\t\t\t\tselectedComponents = await promptForComponents(\n\t\t\t\t\tavailableComponents,\n\t\t\t\t\t\"Which component(s) would you like to add?\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst dir = await promptForDestinationDir();\n\n\t\t\tif (!selectedComponents?.length) {\n\t\t\t\tlogger.warn(\"No components selected. Nothing to install.\");\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\t// Create componentPath directory if it doesn't exist.\n\t\t\tconst destinationDir = path.resolve(dir);\n\t\t\tif (!existsSync(destinationDir)) {\n\t\t\t\tconst spinner = ora(`Creating ${dir}...`).start();\n\t\t\t\tawait fs.mkdir(destinationDir, { recursive: true });\n\t\t\t\tspinner.succeed();\n\t\t\t}\n\n\t\t\tlogger.success(\n\t\t\t\t`Installing ${selectedComponents.length} component(s) and dependencies...`\n\t\t\t);\n\t\t\tfor (const component of selectedComponents) {\n\t\t\t\tconst componentSpinner = ora(`${component.name}...`).start();\n\n\t\t\t\t// Write the files.\n\t\t\t\tfor (const file of component.files) {\n\t\t\t\t\t// Replace alias with the project's alias.\n\t\t\t\t\tif (projectInfo?.alias) {\n\t\t\t\t\t\tfile.content = file.content.replace(\n\t\t\t\t\t\t\t/$\\//g,\n\t\t\t\t\t\t\tprojectInfo.alias\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst dirPath = path.join(dir, file.dir);\n\t\t\t\t\tawait fs.mkdir(dirPath, { recursive: true });\n\t\t\t\t\tconst filePath = path.resolve(dirPath, file.name);\n\t\t\t\t\tawait fs.writeFile(filePath, file.content);\n\t\t\t\t}\n\n\t\t\t\t// Install dependencies.\n\t\t\t\tif (component.dependencies?.length && !options.nodep) {\n\t\t\t\t\tawait execa(packageManager, [\n\t\t\t\t\t\tpackageManager === \"npm\" ? \"install\" : \"add\",\n\t\t\t\t\t\t...component.dependencies\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tcomponentSpinner.succeed(component.name);\n\t\t\t}\n\n\t\t\tif (options.nodep)\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`components installed without dependencies, consider adding ${[\n\t\t\t\t\t\t...new Set(\n\t\t\t\t\t\t\tselectedComponents.flatMap(\n\t\t\t\t\t\t\t\t(component) => component.dependencies ?? []\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t].join(\", \")} to your project dependencies`\n\t\t\t\t);\n\t\t});\n\n\tprogram\n\t\t.command(\"update\")\n\t\t.description(\"update components in your project\")\n\t\t.argument(\"[components...]\", \"name of components\")\n\t\t.action(async (components: string[], options) => {\n\t\t\tlogger.warn(\n\t\t\t\t\"Running the following command will overwrite existing files.\"\n\t\t\t);\n\t\t\tlogger.warn(\n\t\t\t\t\"Make sure you have committed your changes before proceeding.\"\n\t\t\t);\n\t\t\tlogger.warn(\"\");\n\n\t\t\tconst availableComponents = await getAvailableComponents();\n\t\t\tif (!availableComponents?.length) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"An error occurred while fetching components. Please try again.\"\n\t\t\t\t);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tconst config = await getConfig();\n\t\t\tif (!config) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t\"'shadcn' config is missing in 'svelte.config.js'.\"\n\t\t\t\t);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tconst dir = config.componentPath;\n\n\t\t\tconst destinationDir = path.resolve(dir);\n\t\t\tif (!existsSync(destinationDir)) {\n\t\t\t\tlogger.error(`componentPath '${dir}' does not exist.`);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tconst userDefinedComponents: typeof availableComponents = [];\n\t\t\tconst files = await fs.readdir(destinationDir, {\n\t\t\t\twithFileTypes: true\n\t\t\t});\n\t\t\tfor (const file of files) {\n\t\t\t\tconst component = availableComponents.find(\n\t\t\t\t\t(comp) => comp.component === file.name\n\t\t\t\t);\n\t\t\t\tif (file.isDirectory() && component) {\n\t\t\t\t\t// is a valid shadcn component\n\t\t\t\t\tuserDefinedComponents.push(component);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet selectedComponents = userDefinedComponents.filter((component) =>\n\t\t\t\tcomponents.includes(component.component)\n\t\t\t);\n\n\t\t\t// If user didn't specify any component arguments\n\t\t\tif (selectedComponents.length === 0) {\n\t\t\t\tselectedComponents = await promptForComponents(\n\t\t\t\t\tuserDefinedComponents,\n\t\t\t\t\t\"Which component(s) would you like to update?\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (selectedComponents === undefined) {\n\t\t\t\tlogger.warn(`No shadcn components detected in '${dir}'.`);\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tif (selectedComponents.length === 0) {\n\t\t\t\tlogger.warn(\"No components selected. Nothing to update.\");\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\n\t\t\tlogger.success(\n\t\t\t\t`Updating ${selectedComponents.length} component(s) and dependencies...`\n\t\t\t);\n\t\t\tfor (const component of selectedComponents) {\n\t\t\t\tconst componentSpinner = ora(`${component.name}...`).start();\n\n\t\t\t\t// Write the files.\n\t\t\t\tfor (const file of component.files) {\n\t\t\t\t\t// Replace alias with the project's alias.\n\t\t\t\t\tif (projectInfo?.alias) {\n\t\t\t\t\t\tfile.content = file.content.replace(\n\t\t\t\t\t\t\t/$\\//g,\n\t\t\t\t\t\t\tprojectInfo.alias\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst dirPath = path.join(dir, file.dir);\n\t\t\t\t\tawait fs.mkdir(dirPath, { recursive: true });\n\t\t\t\t\tconst filePath = path.resolve(dirPath, file.name);\n\t\t\t\t\tawait fs.writeFile(filePath, file.content);\n\t\t\t\t}\n\n\t\t\t\t// Install dependencies.\n\t\t\t\tif (component.dependencies?.length) {\n\t\t\t\t\tawait execa(packageManager, [\n\t\t\t\t\t\tpackageManager === \"npm\" ? \"install\" : \"add\",\n\t\t\t\t\t\t...component.dependencies\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tcomponentSpinner.succeed(component.name);\n\t\t\t}\n\t\t});\n\n\tprogram.parse();\n}\n\nasync function promptForComponents(components: Component[], message: string) {\n\tconst { components: selectedComponents } = await prompts({\n\t\ttype: \"multiselect\",\n\t\tname: \"components\",\n\t\tmessage,\n\t\thint: \"<SPACE> to select. <A> to select all.\",\n\t\tinstructions: false,\n\t\tchoices: components.map((component) => ({\n\t\t\ttitle: component.name,\n\t\t\tvalue: component\n\t\t}))\n\t});\n\n\treturn selectedComponents;\n}\n\nasync function promptForDestinationDir() {\n\tconst config = await getConfig();\n\n\tif (!config) {\n\t\tconst { dir } = await prompts([\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\tname: \"dir\",\n\t\t\t\tmessage: \"Where would you like to install the component(s)?\",\n\t\t\t\tinitial: \"./src/lib/components/ui\"\n\t\t\t}\n\t\t]);\n\t\tawait setConfig(dir);\n\t\treturn dir;\n\t}\n\n\treturn config.componentPath;\n}\n\nmain();\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport fetch from \"node-fetch\";\nimport * as z from \"zod\";\n\nconst baseUrl = process.env.COMPONENTS_BASE_URL ?? \"https://shadcn-svelte.com\";\n\nconst componentSchema = z.object({\n\tcomponent: z.string(),\n\tname: z.string(),\n\tdependencies: z.array(z.string()).optional(),\n\tfiles: z.array(\n\t\tz.object({\n\t\t\tname: z.string(),\n\t\t\tdir: z.string(),\n\t\t\tcontent: z.string()\n\t\t})\n\t)\n});\n\nexport type Component = z.infer<typeof componentSchema>;\n\nconst componentsSchema = z.array(componentSchema);\n\nexport async function getAvailableComponents() {\n\ttry {\n\t\tconst response = await fetch(`${baseUrl}/api/components`);\n\t\tconst components = await response.json();\n\n\t\treturn componentsSchema.parse(components);\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`Failed to fetch components from ${baseUrl}/api/components.`\n\t\t);\n\t}\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport fs from \"fs-extra\";\nimport { type PackageJson } from \"type-fest\";\n\nexport function getPackageInfo() {\n\tconst packageJsonPath = getPackageFilePath(\"../package.json\");\n\n\treturn fs.readJSONSync(packageJsonPath) as PackageJson;\n}\n\nfunction getPackageFilePath(filePath: string) {\n\tlet distPath = fileURLToPath(new URL(`.`, import.meta.url));\n\n\treturn path.resolve(distPath, filePath);\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nexport function getPackageManager() {\n\tconst userAgent = process.env.npm_config_user_agent;\n\n\tif (!userAgent) {\n\t\treturn \"npm\";\n\t}\n\n\tif (userAgent.startsWith(\"yarn\")) {\n\t\treturn \"yarn\";\n\t}\n\n\tif (userAgent.startsWith(\"pnpm\")) {\n\t\treturn \"pnpm\";\n\t}\n\n\treturn \"npm\";\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport { existsSync } from \"fs\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nexport async function getProjectInfo() {\n\tconst info = {\n\t\ttsconfig: null,\n\t\talias: null\n\t};\n\n\ttry {\n\t\tconst tsconfig = await getTsConfig();\n\t\tconst paths = tsconfig?.compilerOptions?.paths;\n\t\tconst alias = paths ? Object.keys(paths)[0].replace(\"*\", \"\") : null;\n\n\t\treturn {\n\t\t\ttsconfig,\n\t\t\talias,\n\t\t\tsrcDir: existsSync(path.resolve(\"./src\")),\n\t\t\tappDir:\n\t\t\t\texistsSync(path.resolve(\"./app\")) ||\n\t\t\t\texistsSync(path.resolve(\"./src/app\"))\n\t\t};\n\t} catch (error) {\n\t\treturn info;\n\t}\n}\n\nexport async function getTsConfig() {\n\ttry {\n\t\tconst tsconfigPath = path.join(\"tsconfig.json\");\n\t\tconst tsconfig = await fs.readJSON(tsconfigPath);\n\n\t\tif (!tsconfig) {\n\t\t\tthrow new Error(\"tsconfig.json is missing\");\n\t\t}\n\n\t\treturn tsconfig;\n\t} catch (error) {\n\t\treturn null;\n\t}\n}\n","// Credit to @shadcn for the original code. It has been slightly modified to fit the needs of this project.\n\nimport chalk from \"chalk\";\n\nexport const logger = {\n\terror(...args: unknown[]) {\n\t\tconsole.log(chalk.red(...args));\n\t},\n\twarn(...args: unknown[]) {\n\t\tconsole.log(chalk.yellow(...args));\n\t},\n\tinfo(...args: unknown[]) {\n\t\tconsole.log(chalk.cyan(...args));\n\t},\n\tsuccess(...args: unknown[]) {\n\t\tconsole.log(chalk.green(...args));\n\t}\n};\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Property } from \"estree\";\nimport type { Node } from \"estree-walker\";\nimport { Comment, parse } from \"acorn\";\nimport { generate } from \"astring\";\nimport { walk } from \"estree-walker\";\nimport prettier from \"prettier\";\n// @ts-expect-error no types\n// had to manually add this package since their package.json is misconfigured\nimport { attachComments } from \"../astravel\";\nimport { ShadConfig, shadConfigSchema } from \"./schemas\";\n\nconst SVELTE_CONFIG_PATH = path.join(process.cwd(), \"svelte.config.js\");\nconst IMPORT_SVELTE_CONFIG_PATH = \"file://\" + SVELTE_CONFIG_PATH;\n\nexport async function getConfig(): Promise<ShadConfig | null> {\n\tconst { default: svelteConfig } = await import(IMPORT_SVELTE_CONFIG_PATH);\n\n\ttry {\n\t\tconst shadConfig = shadConfigSchema.parse(svelteConfig.shadcn);\n\t\treturn shadConfig;\n\t} catch (e) {\n\t\treturn null;\n\t}\n}\n\n/**\n * Parse the svelte.config.js file into an abstract syntax tree (AST),\n * then walk the tree to find the config object and add the shadcn\n * property to it with the componentPath property.\n */\nexport async function setConfig(dir: string = \"./src/lib/components/ui\") {\n\tconst { default: config } = await import(IMPORT_SVELTE_CONFIG_PATH);\n\tif (!config) {\n\t\tthrow new Error(\"Could not find config for svelte.config.js\");\n\t}\n\n\tconst { ast, comments } = await parseSvelteConfig();\n\n\tconst updatedSvelteConfig = walk(ast as Node, {\n\t\tenter(node) {\n\t\t\tif (\n\t\t\t\tnode.type === \"VariableDeclaration\" &&\n\t\t\t\tnode.kind === \"const\" &&\n\t\t\t\tnode.declarations[0].type === \"VariableDeclarator\" &&\n\t\t\t\tnode.declarations[0].id.type === \"Identifier\" &&\n\t\t\t\tnode.declarations[0].id.name === \"config\"\n\t\t\t) {\n\t\t\t\tconst configNode = node.declarations[0];\n\t\t\t\tif (\n\t\t\t\t\tconfigNode.init &&\n\t\t\t\t\tconfigNode.init.type === \"ObjectExpression\"\n\t\t\t\t) {\n\t\t\t\t\tconfigNode.init.properties.push(createConfigNode(dir));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tif (!updatedSvelteConfig) {\n\t\tthrow new Error(\"Could not update svelte.config.js\");\n\t}\n\n\tattachComments(updatedSvelteConfig, comments);\n\tconst updatedSvelteConfigString = generate(updatedSvelteConfig, {\n\t\tcomments: true\n\t});\n\n\treturn formatFile(updatedSvelteConfigString, SVELTE_CONFIG_PATH);\n}\n\n/**\n * Parse the svelte.config.js file into an abstract syntax tree (AST),\n * then walk the tree to find the config object and adds the alias\n * property to it\n */\nexport async function addAliases(dir: string = \"./src/lib/components/ui\") {\n\tconst { ast, comments } = await parseSvelteConfig();\n\n\tconst updatedSvelteConfig = walk(ast as Node, {\n\t\tenter(node) {\n\t\t\tif (\n\t\t\t\tnode.type === \"Property\" &&\n\t\t\t\tnode.key.type === \"Identifier\" &&\n\t\t\t\tnode.key.name === \"kit\" &&\n\t\t\t\tnode.value.type === \"ObjectExpression\"\n\t\t\t) {\n\t\t\t\t// check if `alias` is already defined\n\t\t\t\tconst aliasProp = node.value.properties.find(\n\t\t\t\t\t(n) =>\n\t\t\t\t\t\tn.type === \"Property\" &&\n\t\t\t\t\t\tn.value.type === \"ObjectExpression\" &&\n\t\t\t\t\t\tn.key.type === \"Identifier\" &&\n\t\t\t\t\t\tn.key.name === \"alias\"\n\t\t\t\t) as Property | undefined;\n\n\t\t\t\tif (!aliasProp) {\n\t\t\t\t\t// alias is not defined so we'll add it\n\t\t\t\t\tnode.value.properties.push(createAliasNode());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\taliasProp.type === \"Property\" &&\n\t\t\t\t\taliasProp.value.type === \"ObjectExpression\"\n\t\t\t\t) {\n\t\t\t\t\taliasProp.value.properties.push(...createAliasProperties());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tif (!updatedSvelteConfig) {\n\t\tthrow new Error(\"Could not update svelte.config.js\");\n\t}\n\n\tattachComments(updatedSvelteConfig, comments);\n\tconst updatedSvelteConfigString = generate(updatedSvelteConfig, {\n\t\tcomments: true\n\t});\n\n\treturn formatFile(updatedSvelteConfigString, SVELTE_CONFIG_PATH);\n}\n\nasync function parseSvelteConfig() {\n\tconst { default: config } = await import(IMPORT_SVELTE_CONFIG_PATH);\n\tif (!config) {\n\t\tthrow new Error(\"Could not find config for svelte.config.js\");\n\t}\n\n\tconst svelteConfig = fs.readFileSync(SVELTE_CONFIG_PATH, \"utf8\");\n\n\tconst comments: Comment[] = [];\n\tconst ast = parse(svelteConfig, {\n\t\tecmaVersion: \"latest\",\n\t\tsourceType: \"module\",\n\t\tonComment: comments\n\t});\n\n\treturn { ast, comments };\n}\n\nfunction formatFile(content: string, path: string) {\n\tconst prettierConfigFile = prettier.resolveConfigFile.sync(path);\n\tif (!prettierConfigFile) {\n\t\treturn fs.writeFileSync(path, content);\n\t}\n\n\tconst prettierConfig = prettier.resolveConfig.sync(prettierConfigFile);\n\tif (!prettierConfig) {\n\t\treturn fs.writeFileSync(path, content);\n\t}\n\n\tconst formattedContent = prettier.format(content, {\n\t\t...prettierConfig,\n\t\tparser: \"babel\"\n\t});\n\treturn fs.writeFileSync(path, formattedContent);\n}\n\nfunction createConfigNode(dir: string): Property {\n\treturn {\n\t\ttype: \"Property\",\n\t\tmethod: false,\n\t\tshorthand: false,\n\t\tcomputed: false,\n\t\tkey: {\n\t\t\ttype: \"Identifier\",\n\t\t\tname: \"shadcn\"\n\t\t},\n\t\tvalue: {\n\t\t\ttype: \"ObjectExpression\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"Property\",\n\t\t\t\t\tmethod: false,\n\t\t\t\t\tshorthand: false,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tkey: {\n\t\t\t\t\t\ttype: \"Identifier\",\n\t\t\t\t\t\tname: \"componentPath\"\n\t\t\t\t\t},\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: \"Literal\",\n\t\t\t\t\t\tvalue: dir,\n\t\t\t\t\t\traw: `'${dir}'`\n\t\t\t\t\t},\n\t\t\t\t\tkind: \"init\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tkind: \"init\"\n\t};\n}\n\nfunction createAliasNode(): Property {\n\treturn {\n\t\ttype: \"Property\",\n\t\tmethod: false,\n\t\tshorthand: false,\n\t\tcomputed: false,\n\t\tkey: {\n\t\t\ttype: \"Identifier\",\n\t\t\tname: \"alias\"\n\t\t},\n\t\tvalue: {\n\t\t\ttype: \"ObjectExpression\",\n\t\t\tproperties: createAliasProperties()\n\t\t},\n\t\tkind: \"init\"\n\t};\n}\n\nfunction createAliasProperties(): Property[] {\n\treturn [\n\t\t{\n\t\t\ttype: \"Property\",\n\t\t\tmethod: false,\n\t\t\tshorthand: false,\n\t\t\tcomputed: false,\n\t\t\tkey: {\n\t\t\t\ttype: \"Identifier\",\n\t\t\t\tname: \"$components\"\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\ttype: \"Literal\",\n\t\t\t\tvalue: \"src/lib/components\",\n\t\t\t\traw: '\"src/lib/components\"'\n\t\t\t},\n\t\t\tkind: \"init\"\n\t\t},\n\t\t{\n\t\t\ttype: \"Property\",\n\t\t\tmethod: false,\n\t\t\tshorthand: false,\n\t\t\tcomputed: false,\n\t\t\tkey: {\n\t\t\t\ttype: \"Literal\",\n\t\t\t\tvalue: \"$components/*\",\n\t\t\t\traw: '\"$components/*\"'\n\t\t\t},\n\t\t\tvalue: {\n\t\t\t\ttype: \"Literal\",\n\t\t\t\tvalue: \"src/lib/components/*\",\n\t\t\t\traw: '\"src/lib/components/*\"'\n\t\t\t},\n\t\t\tkind: \"init\"\n\t\t}\n\t];\n}\n","let ForInStatement,\n\tFunctionDeclaration,\n\tRestElement,\n\tBinaryExpression,\n\tArrayExpression,\n\tBlock,\n\tMethodDefinition;\n\nconst ignore = Function.prototype;\n\nclass Found {\n\tconstructor(node, state) {\n\t\tthis.node = node;\n\t\tthis.state = state;\n\t}\n}\n\nexport const defaultTraveler = {\n\tgo(node, state) {\n\t\t/*\n Starts travelling through the specified AST `node` with the provided `state`.\n This method is recursively called by each node handler.\n */\n\t\tif (this[node.type]) {\n\t\t\tthis[node.type](node, state);\n\t\t}\n\t},\n\tfind(predicate, node, state) {\n\t\t/*\n Returns { node, state } for which `predicate(node, state)` returns truthy,\n starting at the specified AST `node` and with the provided `state`.\n Otherwise, returns `undefined`.\n */\n\t\tconst finder = Object.create(this);\n\t\tfinder.go = function (node, state) {\n\t\t\tif (predicate(node, state)) {\n\t\t\t\tthrow new Found(node, state);\n\t\t\t}\n\t\t\tthis[node.type](node, state);\n\t\t};\n\t\ttry {\n\t\t\tfinder.go(node, state);\n\t\t} catch (error) {\n\t\t\tif (error instanceof Found) {\n\t\t\t\treturn error;\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t},\n\tmakeChild(properties = {}) {\n\t\t/*\n Returns a custom AST traveler that inherits from `this` traveler with its own provided `properties` and the property `super` that points to the parent traveler object.\n */\n\t\tconst traveler = Object.create(this);\n\t\ttraveler.super = this;\n\t\tfor (let key in properties) {\n\t\t\ttraveler[key] = properties[key];\n\t\t}\n\t\treturn traveler;\n\t},\n\tProgram: (Block = function (node, state) {\n\t\tconst { body } = node;\n\t\tif (body != null) {\n\t\t\tconst { length } = body;\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tthis.go(body[i], state);\n\t\t\t}\n\t\t}\n\t}),\n\tBlockStatement: Block,\n\tStaticBlock: Block,\n\tEmptyStatement: ignore,\n\tExpressionStatement(node, state) {\n\t\tthis.go(node.expression, state);\n\t},\n\tIfStatement(node, state) {\n\t\tthis.go(node.test, state);\n\t\tthis.go(node.consequent, state);\n\t\tif (node.alternate != null) {\n\t\t\tthis.go(node.alternate, state);\n\t\t}\n\t},\n\tLabeledStatement(node, state) {\n\t\tthis.go(node.label, state);\n\t\tthis.go(node.body, state);\n\t},\n\tBreakStatement(node, state) {\n\t\tif (node.label) {\n\t\t\tthis.go(node.label, state);\n\t\t}\n\t},\n\tContinueStatement(node, state) {\n\t\tif (node.label) {\n\t\t\tthis.go(node.label, state);\n\t\t}\n\t},\n\tWithStatement(node, state) {\n\t\tthis.go(node.object, state);\n\t\tthis.go(node.body, state);\n\t},\n\tSwitchStatement(node, state) {\n\t\tthis.go(node.discriminant, state);\n\t\tconst { cases } = node,\n\t\t\t{ length } = cases;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(cases[i], state);\n\t\t}\n\t},\n\tSwitchCase(node, state) {\n\t\tif (node.test != null) {\n\t\t\tthis.go(node.test, state);\n\t\t}\n\t\tconst statements = node.consequent,\n\t\t\t{ length } = statements;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(statements[i], state);\n\t\t}\n\t},\n\tReturnStatement(node, state) {\n\t\tif (node.argument) {\n\t\t\tthis.go(node.argument, state);\n\t\t}\n\t},\n\tThrowStatement(node, state) {\n\t\tthis.go(node.argument, state);\n\t},\n\tTryStatement(node, state) {\n\t\tthis.go(node.block, state);\n\t\tif (node.handler != null) {\n\t\t\tthis.go(node.handler, state);\n\t\t}\n\t\tif (node.finalizer != null) {\n\t\t\tthis.go(node.finalizer, state);\n\t\t}\n\t},\n\tCatchClause(node, state) {\n\t\tif (node.param != null) {\n\t\t\tthis.go(node.param, state);\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tWhileStatement(node, state) {\n\t\tthis.go(node.test, state);\n\t\tthis.go(node.body, state);\n\t},\n\tDoWhileStatement(node, state) {\n\t\tthis.go(node.body, state);\n\t\tthis.go(node.test, state);\n\t},\n\tForStatement(node, state) {\n\t\tif (node.init != null) {\n\t\t\tthis.go(node.init, state);\n\t\t}\n\t\tif (node.test != null) {\n\t\t\tthis.go(node.test, state);\n\t\t}\n\t\tif (node.update != null) {\n\t\t\tthis.go(node.update, state);\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tForInStatement: (ForInStatement = function (node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t\tthis.go(node.body, state);\n\t}),\n\tDebuggerStatement: ignore,\n\tFunctionDeclaration: (FunctionDeclaration = function (node, state) {\n\t\tif (node.id != null) {\n\t\t\tthis.go(node.id, state);\n\t\t}\n\t\tconst { params } = node;\n\t\tif (params != null) {\n\t\t\tfor (let i = 0, { length } = params; i < length; i++) {\n\t\t\t\tthis.go(params[i], state);\n\t\t\t}\n\t\t}\n\t\tthis.go(node.body, state);\n\t}),\n\tVariableDeclaration(node, state) {\n\t\tconst { declarations } = node,\n\t\t\t{ length } = declarations;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(declarations[i], state);\n\t\t}\n\t},\n\tVariableDeclarator(node, state) {\n\t\tthis.go(node.id, state);\n\t\tif (node.init != null) {\n\t\t\tthis.go(node.init, state);\n\t\t}\n\t},\n\tArrowFunctionExpression(node, state) {\n\t\tconst { params } = node;\n\t\tif (params != null) {\n\t\t\tfor (let i = 0, { length } = params; i < length; i++) {\n\t\t\t\tthis.go(params[i], state);\n\t\t\t}\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tThisExpression: ignore,\n\tArrayExpression: (ArrayExpression = function (node, state) {\n\t\tconst { elements } = node,\n\t\t\t{ length } = elements;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tlet element = elements[i];\n\t\t\tif (element != null) {\n\t\t\t\tthis.go(elements[i], state);\n\t\t\t}\n\t\t}\n\t}),\n\tObjectExpression(node, state) {\n\t\tconst { properties } = node,\n\t\t\t{ length } = properties;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(properties[i], state);\n\t\t}\n\t},\n\tProperty(node, state) {\n\t\tthis.go(node.key, state);\n\t\tif (node.value != null) {\n\t\t\tthis.go(node.value, state);\n\t\t}\n\t},\n\tFunctionExpression: FunctionDeclaration,\n\tSequenceExpression(node, state) {\n\t\tconst { expressions } = node,\n\t\t\t{ length } = expressions;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(expressions[i], state);\n\t\t}\n\t},\n\tUnaryExpression(node, state) {\n\t\tthis.go(node.argument, state);\n\t},\n\tUpdateExpression(node, state) {\n\t\tthis.go(node.argument, state);\n\t},\n\tAssignmentExpression(node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t},\n\tBinaryExpression: (BinaryExpression = function (node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t}),\n\tLogicalExpression: BinaryExpression,\n\tConditionalExpression(node, state) {\n\t\tthis.go(node.test, state);\n\t\tthis.go(node.consequent, state);\n\t\tthis.go(node.alternate, state);\n\t},\n\tNewExpression(node, state) {\n\t\tthis.CallExpression(node, state);\n\t},\n\tCallExpression(node, state) {\n\t\tthis.go(node.callee, state);\n\t\tconst args = node[\"arguments\"],\n\t\t\t{ length } = args;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(args[i], state);\n\t\t}\n\t},\n\tMemberExpression(node, state) {\n\t\tthis.go(node.object, state);\n\t\tthis.go(node.property, state);\n\t},\n\tIdentifier: ignore,\n\tPrivateIdentifier: ignore,\n\tLiteral: ignore,\n\tForOfStatement: ForInStatement,\n\tClassDeclaration(node, state) {\n\t\tif (node.id) {\n\t\t\tthis.go(node.id, state);\n\t\t}\n\t\tif (node.superClass) {\n\t\t\tthis.go(node.superClass, state);\n\t\t}\n\t\tthis.go(node.body, state);\n\t},\n\tClassBody: Block,\n\tImportDeclaration(node, state) {\n\t\tconst { specifiers } = node,\n\t\t\t{ length } = specifiers;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(specifiers[i], state);\n\t\t}\n\t\tthis.go(node.source, state);\n\t},\n\tImportNamespaceSpecifier(node, state) {\n\t\tthis.go(node.local, state);\n\t},\n\tImportDefaultSpecifier(node, state) {\n\t\tthis.go(node.local, state);\n\t},\n\tImportSpecifier(node, state) {\n\t\tthis.go(node.imported, state);\n\t\tthis.go(node.local, state);\n\t},\n\tExportDefaultDeclaration(node, state) {\n\t\tthis.go(node.declaration, state);\n\t},\n\tExportNamedDeclaration(node, state) {\n\t\tif (node.declaration) {\n\t\t\tthis.go(node.declaration, state);\n\t\t}\n\t\tconst { specifiers } = node,\n\t\t\t{ length } = specifiers;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(specifiers[i], state);\n\t\t}\n\t\tif (node.source) {\n\t\t\tthis.go(node.source, state);\n\t\t}\n\t},\n\tExportSpecifier(node, state) {\n\t\tthis.go(node.local, state);\n\t\tthis.go(node.exported, state);\n\t},\n\tExportAllDeclaration(node, state) {\n\t\tthis.go(node.source, state);\n\t},\n\tMethodDefinition: (MethodDefinition = function (node, state) {\n\t\tthis.go(node.key, state);\n\t\tthis.go(node.value, state);\n\t}),\n\tPropertyDefinition: MethodDefinition,\n\tClassExpression(node, state) {\n\t\tthis.ClassDeclaration(node, state);\n\t},\n\tSuper: ignore,\n\tRestElement: (RestElement = function (node, state) {\n\t\tthis.go(node.argument, state);\n\t}),\n\tSpreadElement: RestElement,\n\tYieldExpression(node, state) {\n\t\tif (node.argument) {\n\t\t\tthis.go(node.argument, state);\n\t\t}\n\t},\n\tTaggedTemplateExpression(node, state) {\n\t\tthis.go(node.tag, state);\n\t\tthis.go(node.quasi, state);\n\t},\n\tTemplateLiteral(node, state) {\n\t\tconst { quasis, expressions } = node;\n\t\tfor (let i = 0, { length } = expressions; i < length; i++) {\n\t\t\tthis.go(expressions[i], state);\n\t\t}\n\t\tfor (let i = 0, { length } = quasis; i < length; i++) {\n\t\t\tthis.go(quasis[i], state);\n\t\t}\n\t},\n\tTemplateElement: ignore,\n\tObjectPattern(node, state) {\n\t\tconst { properties } = node,\n\t\t\t{ length } = properties;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tthis.go(properties[i], state);\n\t\t}\n\t},\n\tArrayPattern: ArrayExpression,\n\tAssignmentPattern(node, state) {\n\t\tthis.go(node.left, state);\n\t\tthis.go(node.right, state);\n\t},\n\tMetaProperty(node, state) {\n\t\tthis.go(node.meta, state);\n\t\tthis.go(node.property, state);\n\t},\n\tAwaitExpression(node, state) {\n\t\tthis.go(node.argument, state);\n\t}\n};\n","import { defaultTraveler } from \"./defaultTraveler\";\n\nfunction attachCommentsToNode(\n\ttraveler,\n\tstate,\n\tparent,\n\tchildren,\n\tfindHeadingComments\n) {\n\tlet { index } = state;\n\tconst { comments } = state;\n\tlet comment = comments[index];\n\t// Hack to tackle https://github.com/babel/minify/issues/866\n\tlet boundComments, trailingComments;\n\tif (comment == null) {\n\t\treturn;\n\t}\n\tif (children == null || children.length === 0) {\n\t\t// No children, attach comments to parent\n\t\tboundComments = parent.comments != null ? parent.comments : [];\n\t\twhile (comment != null && comment.end <= parent.end) {\n\t\t\tboundComments.push(comment);\n\t\t\tcomment = comments[++index];\n\t\t}\n\t\tstate.index = index;\n\t\tif (boundComments.length !== 0 && parent.comments == null) {\n\t\t\tparent.comments = boundComments;\n\t\t}\n\t\treturn;\n\t}\n\t// Look for heading block comments not immediately followed by a child\n\tif (findHeadingComments) {\n\t\tboundComments = parent.comments != null ? parent.comments : [];\n\t\tconst { start } = children[0];\n\t\twhile (\n\t\t\tcomment != null &&\n\t\t\t(comment.type[0] === \"B\" || comment.type[0] === \"M\") &&\n\t\t\tcomment.end <= start\n\t\t) {\n\t\t\tboundComments.push(comment);\n\t\t\tcomment = comments[++index];\n\t\t}\n\t\tif (boundComments.length !== 0 && parent.comments == null)\n\t\t\tparent.comments = boundComments;\n\t}\n\t// Attach comments to children\n\tfor (let i = 0, { length } = children; comment != null && i < length; i++) {\n\t\tconst child = children[i];\n\t\tboundComments = [];\n\t\twhile (comment != null && comment.end <= child.start) {\n\t\t\tboundComments.push(comment);\n\t\t\tcomment = comments[++index];\n\t\t}\n\t\t// Check if next comment is line comment and on the same line if location is provided\n\t\tif (\n\t\t\tcomment != null &&\n\t\t\tcomment.loc != null &&\n\t\t\t(comment.type[0] === \"L\" || comment.type[0] === \"S\")\n\t\t) {\n\t\t\tif (comment.loc.start.line === child.loc.end.line) {\n\t\t\t\tboundComments.push(comment);\n\t\t\t\tcomment = comments[++index];\n\t\t\t}\n\t\t}\n\t\tif (boundComments.length !== 0) {\n\t\t\tchild.comments = boundComments;\n\t\t}\n\t\t// Travel through child\n\t\tstate.index = index;\n\t\ttraveler[child.type](child, state);\n\t\tindex = state.index;\n\t\tcomment = comments[index];\n\t}\n\t// Look for remaining comments\n\ttrailingComments = [];\n\twhile (comment != null && comment.end <= parent.end) {\n\t\ttrailingComments.push(comment);\n\t\tcomment = comments[++index];\n\t}\n\tif (trailingComments.length !== 0) {\n\t\tparent.trailingComments = trailingComments;\n\t}\n\tstate.index = index;\n}\n\nfunction Block(node, state) {\n\tattachCommentsToNode(this, state, node, node.body, true);\n}\n\nlet traveler = defaultTraveler.makeChild({\n\tProgram: Block,\n\tBlockStatement: Block,\n\tClassBody: Block,\n\tObjectExpression(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.properties, true);\n\t},\n\tArrayExpression(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.elements, true);\n\t},\n\tSwitchStatement(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.cases, false);\n\t},\n\tSwitchCase(node, state) {\n\t\tattachCommentsToNode(this, state, node, node.consequent, false);\n\t}\n\t// TODO: Consider ArrayExpression ?\n});\n\nexport function attachComments(node, comments) {\n\t/*\n Modifies in-place the AST starting at `node` by attaching the provided `comments` and returns that AST.\n */\n\ttraveler[node.type](node, {\n\t\tcomments,\n\t\tindex: 0\n\t});\n\treturn node;\n}\n","import { z } from \"zod\";\n\nexport const shadConfigSchema = z.object({\n\tcomponentPath: z.string()\n});\n\nexport type ShadConfig = z.infer<typeof shadConfigSchema>;\n","export const STYLES = `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 222.2 47.4% 11.2%;\n \n --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 222.2 47.4% 11.2%;\n \n --card: 0 0% 100%;\n --card-foreground: 222.2 47.4% 11.2%;\n \n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n \n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n \n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n \n --accent: 210 40% 96.1%;\n --accent-foreground: 222.2 47.4% 11.2%;\n \n --destructive: 0 92% 38%;\n\t\t--destructive-foreground: 210 40% 98%;\n \n --ring: 215 20.2% 65.1%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 224 71% 4%;\n --foreground: 213 31% 91%;\n \n --muted: 223 47% 11%;\n --muted-foreground: 215.4 16.3% 56.9%;\n \n --popover: 224 71% 4%;\n --popover-foreground: 215 20.2% 65.1%;\n \n --card: 224 71% 4%;\n --card-foreground: 213 31% 91%;\n \n --border: 216 34% 17%;\n --input: 216 34% 17%;\n \n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 1.2%;\n \n --secondary: 222.2 47.4% 11.2%;\n --secondary-foreground: 210 40% 98%;\n \n --accent: 216 34% 17%;\n --accent-foreground: 210 40% 98%;\n \n --destructive: 359 51% 48%;\n\t\t--destructive-foreground: 210 40% 98%;\n \n --ring: 216 34% 17%;\n \n --radius: 0.5rem;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n font-feature-settings: \"rlig\" 1, \"calt\" 1;\n }\n}`;\n\nexport const UTILS = `import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n \nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n`;\n\nexport const TAILWIND_CONFIG = `import { fontFamily } from \"tailwindcss/defaultTheme\";\nimport tailwindcssAnimate from \"tailwindcss-animate\";\n\n/** @type {import('tailwindcss').Config} */\nconst config = {\n\tdarkMode: [\"class\"],\n\tcontent: [\"./src/**/*.{html,js,svelte,ts}\"],\n\ttheme: {\n\t\tcontainer: {\n\t\t\tcenter: true,\n\t\t\tpadding: \"2rem\",\n\t\t\tscreens: {\n\t\t\t\t\"2xl\": \"1400px\"\n\t\t\t}\n\t\t},\n\t\textend: {\n\t\t\tcolors: {\n\t\t\t\tborder: \"hsl(var(--border))\",\n\t\t\t\tinput: \"hsl(var(--input))\",\n\t\t\t\tring: \"hsl(var(--ring))\",\n\t\t\t\tbackground: \"hsl(var(--background))\",\n\t\t\t\tforeground: \"hsl(var(--foreground))\",\n\t\t\t\tprimary: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--primary))\",\n\t\t\t\t\tforeground: \"hsl(var(--primary-foreground))\"\n\t\t\t\t},\n\t\t\t\tsecondary: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--secondary))\",\n\t\t\t\t\tforeground: \"hsl(var(--secondary-foreground))\"\n\t\t\t\t},\n\t\t\t\tdestructive: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--destructive))\",\n\t\t\t\t\tforeground: \"hsl(var(--destructive-foreground))\"\n\t\t\t\t},\n\t\t\t\tmuted: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--muted))\",\n\t\t\t\t\tforeground: \"hsl(var(--muted-foreground))\"\n\t\t\t\t},\n\t\t\t\taccent: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--accent))\",\n\t\t\t\t\tforeground: \"hsl(var(--accent-foreground))\"\n\t\t\t\t},\n\t\t\t\tpopover: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--popover))\",\n\t\t\t\t\tforeground: \"hsl(var(--popover-foreground))\"\n\t\t\t\t},\n\t\t\t\tcard: {\n\t\t\t\t\tDEFAULT: \"hsl(var(--card))\",\n\t\t\t\t\tforeground: \"hsl(var(--card-foreground))\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tborderRadius: {\n\t\t\t\tlg: \"var(--radius)\",\n\t\t\t\tmd: \"calc(var(--radius) - 2px)\",\n\t\t\t\tsm: \"calc(var(--radius) - 4px)\"\n\t\t\t},\n\t\t\tfontFamily: {\n\t\t\t\tsans: [...fontFamily.sans]\n\t\t\t}\n\t\t}\n\t},\n\tplugins: [tailwindcssAnimate]\n};\n\nexport default config;\n`;\n"],"mappings":"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","names":["existsSync","fs","path","path","fs","fs","path","node","state","traveler","traveler","Block","z","path","fs","fs","existsSync","path"]}
|