rn-shadcn 0.1.1 → 0.1.3

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 CHANGED
@@ -4,11 +4,11 @@
4
4
  import { Command } from "commander";
5
5
 
6
6
  // src/commands/init.ts
7
- import { mkdirp, pathExists as pathExists3, writeFile as writeFile2 } from "fs-extra";
7
+ import fs3 from "fs-extra";
8
8
  import { resolve as resolve3 } from "path";
9
9
 
10
10
  // src/utils/config.ts
11
- import { readFile, writeFile, pathExists } from "fs-extra";
11
+ import fs from "fs-extra";
12
12
  import { resolve } from "path";
13
13
 
14
14
  // src/utils/logger.ts
@@ -31,6 +31,7 @@ function spinner(message) {
31
31
  }
32
32
 
33
33
  // src/utils/config.ts
34
+ var { readFile, writeFile, pathExists } = fs;
34
35
  var CONFIG_FILE = "components.json";
35
36
  async function readConfig(cwd) {
36
37
  const configPath = resolve(cwd, CONFIG_FILE);
@@ -38,7 +39,7 @@ async function readConfig(cwd) {
38
39
  if (!exists) {
39
40
  error(`components.json not found.`);
40
41
  console.log("Run:");
41
- console.log(" npx react-native-windcn init");
42
+ console.log(" npx rn-shadcn init");
42
43
  process.exit(1);
43
44
  }
44
45
  const content = await readFile(configPath, "utf-8");
@@ -87,14 +88,46 @@ function validateComponentName(name, available) {
87
88
  }
88
89
 
89
90
  // src/utils/packageManager.ts
90
- import { pathExists as pathExists2 } from "fs-extra";
91
+ import fs2 from "fs-extra";
91
92
  import { resolve as resolve2 } from "path";
92
93
  import { execSync } from "child_process";
93
- async function detectPackageManager(cwd) {
94
+ import { createInterface } from "readline/promises";
95
+ import { stdin as input, stdout as output } from "process";
96
+ var { pathExists: pathExists2 } = fs2;
97
+ async function detectFromLockfile(cwd) {
94
98
  if (await pathExists2(resolve2(cwd, "pnpm-lock.yaml"))) return "pnpm";
95
99
  if (await pathExists2(resolve2(cwd, "yarn.lock"))) return "yarn";
96
100
  if (await pathExists2(resolve2(cwd, "bun.lockb"))) return "bun";
97
- return "npm";
101
+ if (await pathExists2(resolve2(cwd, "package-lock.json"))) return "npm";
102
+ return null;
103
+ }
104
+ async function promptPackageManager() {
105
+ const rl = createInterface({ input, output });
106
+ const pmLabels = {
107
+ bun: "bun",
108
+ npm: "npm",
109
+ pnpm: "pnpm",
110
+ yarn: "yarn"
111
+ };
112
+ while (true) {
113
+ const answer = await rl.question(
114
+ " Package manager not detected. Choose one (bun/npm/pnpm/yarn): "
115
+ );
116
+ const pm = answer.trim().toLowerCase();
117
+ if (pmLabels[pm]) {
118
+ rl.close();
119
+ return pm;
120
+ }
121
+ console.log(` "${pm}" is not valid. Enter bun, npm, pnpm, or yarn.`);
122
+ }
123
+ }
124
+ async function detectPackageManager(cwd) {
125
+ const detected = await detectFromLockfile(cwd);
126
+ if (detected) return detected;
127
+ info("No lock file found.");
128
+ const chosen = await promptPackageManager();
129
+ info(`Using ${chosen}`);
130
+ return chosen;
98
131
  }
99
132
  function pmInstallCmd(pm) {
100
133
  switch (pm) {
@@ -115,8 +148,9 @@ function installDependencies(deps, pm, cwd) {
115
148
  }
116
149
 
117
150
  // src/commands/init.ts
151
+ var { mkdirp, pathExists: pathExists3, writeFile: writeFile2 } = fs3;
118
152
  function defaultRegistry() {
119
- return "https://username.github.io/react-native-windcn-registry";
153
+ return "https://devusimple.github.io/rn-shadcn-registry";
120
154
  }
121
155
  function defaultComponentsDir() {
122
156
  return "src/components/ui";
@@ -167,8 +201,9 @@ async function init(cwd) {
167
201
  }
168
202
 
169
203
  // src/commands/add.ts
170
- import { mkdirp as mkdirp2, writeFile as writeFile3 } from "fs-extra";
204
+ import fs4 from "fs-extra";
171
205
  import { resolve as resolve4 } from "path";
206
+ var { mkdirp: mkdirp2, writeFile: writeFile3 } = fs4;
172
207
  async function add(names, cwd) {
173
208
  const config = await readConfig(cwd);
174
209
  const spinner2 = spinner("Fetching registry index...");
@@ -221,11 +256,11 @@ async function add(names, cwd) {
221
256
  }
222
257
  }
223
258
  if (componentDeps.size > 0) {
224
- const depSpinner = spinner("Installing npm dependencies...");
259
+ const depSpinner = spinner(`Installing dependencies with ${pm}...`);
225
260
  depSpinner.start();
226
261
  try {
227
262
  installDependencies([...componentDeps], pm, cwd);
228
- depSpinner.succeed("npm dependencies installed.");
263
+ depSpinner.succeed("Dependencies installed.");
229
264
  } catch {
230
265
  depSpinner.fail("Failed to install some dependencies.");
231
266
  }
@@ -284,7 +319,7 @@ async function info2(name, cwd) {
284
319
 
285
320
  // src/index.ts
286
321
  var program = new Command();
287
- program.name("react-native-windcn").description("shadcn-style CLI for React Native UI components").version("0.1.0");
322
+ program.name("rn-shadcn").description("shadcn-style CLI for React Native UI components").version("0.1.0");
288
323
  program.command("init").description("Initialize configuration").action(() => {
289
324
  init(process.cwd());
290
325
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/commands/init.ts","../src/utils/config.ts","../src/utils/logger.ts","../src/utils/registry.ts","../src/utils/packageManager.ts","../src/commands/add.ts","../src/commands/list.ts","../src/commands/info.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander'\nimport { init } from './commands/init.js'\nimport { add } from './commands/add.js'\nimport { listComponents } from './commands/list.js'\nimport { info } from './commands/info.js'\n\nconst program = new Command()\n\nprogram\n .name('react-native-windcn')\n .description('shadcn-style CLI for React Native UI components')\n .version('0.1.0')\n\nprogram\n .command('init')\n .description('Initialize configuration')\n .action(() => {\n init(process.cwd())\n })\n\nprogram\n .command('add')\n .description('Install components')\n .argument('<names...>', 'component names')\n .action((names: string[]) => {\n add(names, process.cwd())\n })\n\nprogram\n .command('list')\n .description('Show all available components')\n .action(() => {\n listComponents(process.cwd())\n })\n\nprogram\n .command('info')\n .description('Show component metadata')\n .argument('<name>', 'component name')\n .action((name: string) => {\n info(name, process.cwd())\n })\n\nprogram.parse()\n","import { mkdirp, pathExists, writeFile } from 'fs-extra'\nimport { resolve } from 'node:path'\nimport { writeConfig, configExists } from '../utils/config.js'\nimport { fetchComponentRegistry, downloadComponentFile } from '../utils/registry.js'\nimport { detectPackageManager, installDependencies } from '../utils/packageManager.js'\nimport type { Config } from '../types/registry.js'\nimport * as logger from '../utils/logger.js'\n\nfunction defaultRegistry(): string {\n return 'https://username.github.io/react-native-windcn-registry'\n}\n\nfunction defaultComponentsDir(): string {\n return 'src/components/ui'\n}\n\nexport async function init(cwd: string): Promise<void> {\n const spinner = logger.spinner('Initializing...')\n spinner.start()\n\n try {\n if (await configExists(cwd)) {\n spinner.fail('components.json already exists.')\n return\n }\n\n const pkgPath = resolve(cwd, 'package.json')\n if (!(await pathExists(pkgPath))) {\n spinner.fail('package.json not found. Are you in a project directory?')\n return\n }\n\n const componentsDir = defaultComponentsDir()\n const registry = defaultRegistry()\n\n await mkdirp(resolve(cwd, componentsDir))\n\n const config: Config = {\n registry,\n componentsDir,\n }\n\n await writeConfig(cwd, config)\n\n // Install cn utility and base deps\n try {\n const cnMeta = await fetchComponentRegistry(registry, 'cn')\n const libDir = resolve(cwd, 'src', 'lib')\n await mkdirp(libDir)\n\n for (const file of cnMeta.files) {\n const content = await downloadComponentFile(registry, file.source)\n await writeFile(resolve(cwd, file.target), content, 'utf-8')\n }\n\n const pm = await detectPackageManager(cwd)\n if (cnMeta.dependencies.length > 0) {\n installDependencies(cnMeta.dependencies, pm, cwd)\n }\n } catch {\n logger.warning('Could not install base dependencies. Run `npm install clsx tailwind-merge` manually.')\n }\n\n spinner.succeed('Initialized project.')\n logger.info(`Components directory: ${componentsDir}`)\n logger.info(`Registry: ${registry}`)\n } catch (err) {\n spinner.fail('Initialization failed.')\n throw err\n }\n}\n","import { readFile, writeFile, pathExists } from 'fs-extra'\nimport { resolve } from 'node:path'\nimport type { Config } from '../types/registry.js'\nimport * as logger from './logger.js'\n\nconst CONFIG_FILE = 'components.json'\n\nexport async function readConfig(cwd: string): Promise<Config> {\n const configPath = resolve(cwd, CONFIG_FILE)\n const exists = await pathExists(configPath)\n\n if (!exists) {\n logger.error(`components.json not found.`)\n console.log('Run:')\n console.log(' npx react-native-windcn init')\n process.exit(1)\n }\n\n const content = await readFile(configPath, 'utf-8')\n return JSON.parse(content) as Config\n}\n\nexport async function writeConfig(cwd: string, config: Config): Promise<void> {\n const configPath = resolve(cwd, CONFIG_FILE)\n await writeFile(configPath, JSON.stringify(config, null, 2))\n}\n\nexport async function configExists(cwd: string): Promise<boolean> {\n return pathExists(resolve(cwd, CONFIG_FILE))\n}\n","import chalk from 'chalk'\nimport ora from 'ora'\n\nexport function info(message: string): void {\n console.log(chalk.blue('ℹ'), message)\n}\n\nexport function success(message: string): void {\n console.log(chalk.green('✔'), message)\n}\n\nexport function warning(message: string): void {\n console.log(chalk.yellow('⚠'), message)\n}\n\nexport function error(message: string): void {\n console.log(chalk.red('✖'), message)\n}\n\nexport function spinner(message: string) {\n return ora({ text: message, color: 'blue' })\n}\n","import type { ComponentRegistry, RegistryIndex } from '../types/registry.js'\n\nfunction registryUrl(base: string, path: string): string {\n const baseUrl = base.replace(/\\/+$/, '')\n const cleanPath = path.startsWith('/') ? path.slice(1) : path\n return `${baseUrl}/${cleanPath}`\n}\n\nasync function fetchJson<T>(url: string): Promise<T> {\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`Registry returned ${response.status}`)\n }\n\n return response.json() as Promise<T>\n}\n\nexport async function fetchRegistryIndex(baseUrl: string): Promise<RegistryIndex> {\n const url = registryUrl(baseUrl, 'registry/index.json')\n return fetchJson<RegistryIndex>(url)\n}\n\nexport async function fetchComponentRegistry(\n baseUrl: string,\n name: string,\n): Promise<ComponentRegistry> {\n const url = registryUrl(baseUrl, `registry/${name}.json`)\n return fetchJson<ComponentRegistry>(url)\n}\n\nexport async function downloadComponentFile(\n baseUrl: string,\n sourcePath: string,\n): Promise<string> {\n const url = registryUrl(baseUrl, sourcePath)\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`Failed to download file: ${response.status}`)\n }\n\n return response.text()\n}\n\nexport function validateComponentName(\n name: string,\n available: string[],\n): string | null {\n const match = available.find((c) => c === name)\n return match ?? null\n}\n","import { pathExists } from 'fs-extra'\nimport { resolve } from 'node:path'\nimport { execSync } from 'node:child_process'\nimport type { PackageManager } from '../types/registry.js'\n\nexport async function detectPackageManager(cwd: string): Promise<PackageManager> {\n if (await pathExists(resolve(cwd, 'pnpm-lock.yaml'))) return 'pnpm'\n if (await pathExists(resolve(cwd, 'yarn.lock'))) return 'yarn'\n if (await pathExists(resolve(cwd, 'bun.lockb'))) return 'bun'\n return 'npm'\n}\n\nfunction pmInstallCmd(pm: PackageManager): string {\n switch (pm) {\n case 'pnpm': return 'pnpm add'\n case 'yarn': return 'yarn add'\n case 'bun': return 'bun add'\n default: return 'npm install'\n }\n}\n\nexport function installDependencies(\n deps: string[],\n pm: PackageManager,\n cwd: string,\n): void {\n if (deps.length === 0) return\n\n const cmd = `${pmInstallCmd(pm)} ${deps.join(' ')}`\n execSync(cmd, { cwd, stdio: 'inherit' })\n}\n","import { mkdirp, writeFile } from 'fs-extra'\nimport { resolve } from 'node:path'\nimport { readConfig } from '../utils/config.js'\nimport {\n fetchRegistryIndex,\n fetchComponentRegistry,\n downloadComponentFile,\n validateComponentName,\n} from '../utils/registry.js'\nimport { detectPackageManager, installDependencies } from '../utils/packageManager.js'\nimport * as logger from '../utils/logger.js'\n\nexport async function add(names: string[], cwd: string): Promise<void> {\n const config = await readConfig(cwd)\n\n const spinner = logger.spinner('Fetching registry index...')\n spinner.start()\n\n let index\n try {\n index = await fetchRegistryIndex(config.registry)\n } catch {\n spinner.fail('Unable to connect to registry.')\n return\n }\n\n spinner.succeed('Registry index loaded.')\n\n const notFound: string[] = []\n const toInstall: string[] = []\n const componentDeps = new Set<string>()\n\n for (const name of names) {\n const valid = validateComponentName(name, index.components)\n if (!valid) {\n notFound.push(name)\n continue\n }\n toInstall.push(name)\n }\n\n if (notFound.length > 0) {\n for (const name of notFound) {\n logger.error(`Component \"${name}\" does not exist.`)\n }\n }\n\n if (toInstall.length === 0) {\n return\n }\n\n const pm = await detectPackageManager(cwd)\n\n for (const name of toInstall) {\n const step = logger.spinner(`Installing ${name}...`)\n step.start()\n\n try {\n const meta = await fetchComponentRegistry(config.registry, name)\n\n for (const dep of meta.dependencies) {\n componentDeps.add(dep)\n }\n\n for (const file of meta.files) {\n const content = await downloadComponentFile(config.registry, file.source)\n const targetPath = resolve(cwd, file.target)\n await mkdirp(resolve(targetPath, '..'))\n await writeFile(targetPath, content, 'utf-8')\n }\n\n step.succeed(`Installed ${name}.`)\n } catch {\n step.fail(`Failed to install ${name}.`)\n }\n }\n\n if (componentDeps.size > 0) {\n const depSpinner = logger.spinner('Installing npm dependencies...')\n depSpinner.start()\n\n try {\n installDependencies([...componentDeps], pm, cwd)\n depSpinner.succeed('npm dependencies installed.')\n } catch {\n depSpinner.fail('Failed to install some dependencies.')\n }\n }\n\n logger.success('Done.')\n}\n","import { readConfig } from '../utils/config.js'\nimport { fetchRegistryIndex } from '../utils/registry.js'\nimport * as logger from '../utils/logger.js'\n\nexport async function listComponents(cwd: string): Promise<void> {\n const config = await readConfig(cwd)\n\n const spinner = logger.spinner('Fetching registry index...')\n spinner.start()\n\n let index\n try {\n index = await fetchRegistryIndex(config.registry)\n } catch {\n spinner.fail('Unable to connect to registry.')\n return\n }\n\n spinner.succeed('Available components:')\n for (const name of index.components) {\n console.log(` ${name}`)\n }\n}\n","import { readConfig } from '../utils/config.js'\nimport { fetchComponentRegistry } from '../utils/registry.js'\nimport * as logger from '../utils/logger.js'\n\nexport async function info(name: string, cwd: string): Promise<void> {\n const config = await readConfig(cwd)\n\n const spinner = logger.spinner(`Fetching ${name}...`)\n spinner.start()\n\n let meta\n try {\n meta = await fetchComponentRegistry(config.registry, name)\n } catch {\n spinner.fail(`Component \"${name}\" does not exist.`)\n return\n }\n\n spinner.stop()\n console.log(`\\n name: ${meta.name}`)\n console.log(` description: ${meta.description}`)\n\n if (meta.dependencies.length > 0) {\n console.log(` dependencies:`)\n for (const dep of meta.dependencies) {\n console.log(` - ${dep}`)\n }\n }\n\n if (meta.files.length > 0) {\n console.log(` files:`)\n for (const file of meta.files) {\n console.log(` - ${file.source} → ${file.target}`)\n }\n }\n\n console.log('')\n}\n"],"mappings":"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","names":["pathExists","writeFile","resolve","pathExists","resolve","spinner","resolve","pathExists","writeFile","mkdirp","writeFile","resolve","spinner","resolve","mkdirp","writeFile","spinner","info","spinner","info"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/commands/init.ts","../src/utils/config.ts","../src/utils/logger.ts","../src/utils/registry.ts","../src/utils/packageManager.ts","../src/commands/add.ts","../src/commands/list.ts","../src/commands/info.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander'\nimport { init } from './commands/init.js'\nimport { add } from './commands/add.js'\nimport { listComponents } from './commands/list.js'\nimport { info } from './commands/info.js'\n\nconst program = new Command()\n\nprogram\n .name('rn-shadcn')\n .description('shadcn-style CLI for React Native UI components')\n .version('0.1.0')\n\nprogram\n .command('init')\n .description('Initialize configuration')\n .action(() => {\n init(process.cwd())\n })\n\nprogram\n .command('add')\n .description('Install components')\n .argument('<names...>', 'component names')\n .action((names: string[]) => {\n add(names, process.cwd())\n })\n\nprogram\n .command('list')\n .description('Show all available components')\n .action(() => {\n listComponents(process.cwd())\n })\n\nprogram\n .command('info')\n .description('Show component metadata')\n .argument('<name>', 'component name')\n .action((name: string) => {\n info(name, process.cwd())\n })\n\nprogram.parse()\n","import fs from 'fs-extra'\nconst { mkdirp, pathExists, writeFile } = fs\nimport { resolve } from 'node:path'\nimport { writeConfig, configExists } from '../utils/config.js'\nimport { fetchComponentRegistry, downloadComponentFile } from '../utils/registry.js'\nimport { detectPackageManager, installDependencies } from '../utils/packageManager.js'\nimport type { Config } from '../types/registry.js'\nimport * as logger from '../utils/logger.js'\n\nfunction defaultRegistry(): string {\n return 'https://devusimple.github.io/rn-shadcn-registry'\n}\n\nfunction defaultComponentsDir(): string {\n return 'src/components/ui'\n}\n\nexport async function init(cwd: string): Promise<void> {\n const spinner = logger.spinner('Initializing...')\n spinner.start()\n\n try {\n if (await configExists(cwd)) {\n spinner.fail('components.json already exists.')\n return\n }\n\n const pkgPath = resolve(cwd, 'package.json')\n if (!(await pathExists(pkgPath))) {\n spinner.fail('package.json not found. Are you in a project directory?')\n return\n }\n\n const componentsDir = defaultComponentsDir()\n const registry = defaultRegistry()\n\n await mkdirp(resolve(cwd, componentsDir))\n\n const config: Config = {\n registry,\n componentsDir,\n }\n\n await writeConfig(cwd, config)\n\n // Install cn utility and base deps\n try {\n const cnMeta = await fetchComponentRegistry(registry, 'cn')\n const libDir = resolve(cwd, 'src', 'lib')\n await mkdirp(libDir)\n\n for (const file of cnMeta.files) {\n const content = await downloadComponentFile(registry, file.source)\n await writeFile(resolve(cwd, file.target), content, 'utf-8')\n }\n\n const pm = await detectPackageManager(cwd)\n if (cnMeta.dependencies.length > 0) {\n installDependencies(cnMeta.dependencies, pm, cwd)\n }\n } catch {\n logger.warning('Could not install base dependencies. Run `npm install clsx tailwind-merge` manually.')\n }\n\n spinner.succeed('Initialized project.')\n logger.info(`Components directory: ${componentsDir}`)\n logger.info(`Registry: ${registry}`)\n } catch (err) {\n spinner.fail('Initialization failed.')\n throw err\n }\n}\n","import fs from 'fs-extra'\nconst { readFile, writeFile, pathExists } = fs\nimport { resolve } from 'node:path'\nimport type { Config } from '../types/registry.js'\nimport * as logger from './logger.js'\n\nconst CONFIG_FILE = 'components.json'\n\nexport async function readConfig(cwd: string): Promise<Config> {\n const configPath = resolve(cwd, CONFIG_FILE)\n const exists = await pathExists(configPath)\n\n if (!exists) {\n logger.error(`components.json not found.`)\n console.log('Run:')\n console.log(' npx rn-shadcn init')\n process.exit(1)\n }\n\n const content = await readFile(configPath, 'utf-8')\n return JSON.parse(content) as Config\n}\n\nexport async function writeConfig(cwd: string, config: Config): Promise<void> {\n const configPath = resolve(cwd, CONFIG_FILE)\n await writeFile(configPath, JSON.stringify(config, null, 2))\n}\n\nexport async function configExists(cwd: string): Promise<boolean> {\n return pathExists(resolve(cwd, CONFIG_FILE))\n}\n","import chalk from 'chalk'\nimport ora from 'ora'\n\nexport function info(message: string): void {\n console.log(chalk.blue('ℹ'), message)\n}\n\nexport function success(message: string): void {\n console.log(chalk.green('✔'), message)\n}\n\nexport function warning(message: string): void {\n console.log(chalk.yellow('⚠'), message)\n}\n\nexport function error(message: string): void {\n console.log(chalk.red('✖'), message)\n}\n\nexport function spinner(message: string) {\n return ora({ text: message, color: 'blue' })\n}\n","import type { ComponentRegistry, RegistryIndex } from '../types/registry.js'\n\nfunction registryUrl(base: string, path: string): string {\n const baseUrl = base.replace(/\\/+$/, '')\n const cleanPath = path.startsWith('/') ? path.slice(1) : path\n return `${baseUrl}/${cleanPath}`\n}\n\nasync function fetchJson<T>(url: string): Promise<T> {\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`Registry returned ${response.status}`)\n }\n\n return response.json() as Promise<T>\n}\n\nexport async function fetchRegistryIndex(baseUrl: string): Promise<RegistryIndex> {\n const url = registryUrl(baseUrl, 'registry/index.json')\n return fetchJson<RegistryIndex>(url)\n}\n\nexport async function fetchComponentRegistry(\n baseUrl: string,\n name: string,\n): Promise<ComponentRegistry> {\n const url = registryUrl(baseUrl, `registry/${name}.json`)\n return fetchJson<ComponentRegistry>(url)\n}\n\nexport async function downloadComponentFile(\n baseUrl: string,\n sourcePath: string,\n): Promise<string> {\n const url = registryUrl(baseUrl, sourcePath)\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`Failed to download file: ${response.status}`)\n }\n\n return response.text()\n}\n\nexport function validateComponentName(\n name: string,\n available: string[],\n): string | null {\n const match = available.find((c) => c === name)\n return match ?? null\n}\n","import fs from 'fs-extra'\nconst { pathExists } = fs\nimport { resolve } from 'node:path'\nimport { execSync } from 'node:child_process'\nimport { createInterface } from 'node:readline/promises'\nimport { stdin as input, stdout as output } from 'node:process'\nimport type { PackageManager } from '../types/registry.js'\nimport * as logger from './logger.js'\n\nasync function detectFromLockfile(cwd: string): Promise<PackageManager | null> {\n if (await pathExists(resolve(cwd, 'pnpm-lock.yaml'))) return 'pnpm'\n if (await pathExists(resolve(cwd, 'yarn.lock'))) return 'yarn'\n if (await pathExists(resolve(cwd, 'bun.lockb'))) return 'bun'\n if (await pathExists(resolve(cwd, 'package-lock.json'))) return 'npm'\n return null\n}\n\nasync function promptPackageManager(): Promise<PackageManager> {\n const rl = createInterface({ input, output })\n const pmLabels: Record<PackageManager, string> = {\n bun: 'bun',\n npm: 'npm',\n pnpm: 'pnpm',\n yarn: 'yarn',\n }\n\n while (true) {\n const answer = await rl.question(\n ' Package manager not detected. Choose one (bun/npm/pnpm/yarn): ',\n )\n const pm = answer.trim().toLowerCase() as PackageManager\n if (pmLabels[pm]) {\n rl.close()\n return pm\n }\n console.log(` \"${pm}\" is not valid. Enter bun, npm, pnpm, or yarn.`)\n }\n}\n\nexport async function detectPackageManager(cwd: string): Promise<PackageManager> {\n const detected = await detectFromLockfile(cwd)\n if (detected) return detected\n\n logger.info('No lock file found.')\n const chosen = await promptPackageManager()\n logger.info(`Using ${chosen}`)\n return chosen\n}\n\nfunction pmInstallCmd(pm: PackageManager): string {\n switch (pm) {\n case 'pnpm': return 'pnpm add'\n case 'yarn': return 'yarn add'\n case 'bun': return 'bun add'\n default: return 'npm install'\n }\n}\n\nexport function installDependencies(\n deps: string[],\n pm: PackageManager,\n cwd: string,\n): void {\n if (deps.length === 0) return\n\n const cmd = `${pmInstallCmd(pm)} ${deps.join(' ')}`\n execSync(cmd, { cwd, stdio: 'inherit' })\n}\n","import fs from 'fs-extra'\nconst { mkdirp, writeFile } = fs\nimport { resolve } from 'node:path'\nimport { readConfig } from '../utils/config.js'\nimport {\n fetchRegistryIndex,\n fetchComponentRegistry,\n downloadComponentFile,\n validateComponentName,\n} from '../utils/registry.js'\nimport { detectPackageManager, installDependencies } from '../utils/packageManager.js'\nimport * as logger from '../utils/logger.js'\n\nexport async function add(names: string[], cwd: string): Promise<void> {\n const config = await readConfig(cwd)\n\n const spinner = logger.spinner('Fetching registry index...')\n spinner.start()\n\n let index\n try {\n index = await fetchRegistryIndex(config.registry)\n } catch {\n spinner.fail('Unable to connect to registry.')\n return\n }\n\n spinner.succeed('Registry index loaded.')\n\n const notFound: string[] = []\n const toInstall: string[] = []\n const componentDeps = new Set<string>()\n\n for (const name of names) {\n const valid = validateComponentName(name, index.components)\n if (!valid) {\n notFound.push(name)\n continue\n }\n toInstall.push(name)\n }\n\n if (notFound.length > 0) {\n for (const name of notFound) {\n logger.error(`Component \"${name}\" does not exist.`)\n }\n }\n\n if (toInstall.length === 0) {\n return\n }\n\n const pm = await detectPackageManager(cwd)\n\n for (const name of toInstall) {\n const step = logger.spinner(`Installing ${name}...`)\n step.start()\n\n try {\n const meta = await fetchComponentRegistry(config.registry, name)\n\n for (const dep of meta.dependencies) {\n componentDeps.add(dep)\n }\n\n for (const file of meta.files) {\n const content = await downloadComponentFile(config.registry, file.source)\n const targetPath = resolve(cwd, file.target)\n await mkdirp(resolve(targetPath, '..'))\n await writeFile(targetPath, content, 'utf-8')\n }\n\n step.succeed(`Installed ${name}.`)\n } catch {\n step.fail(`Failed to install ${name}.`)\n }\n }\n\n if (componentDeps.size > 0) {\n const depSpinner = logger.spinner(`Installing dependencies with ${pm}...`)\n depSpinner.start()\n\n try {\n installDependencies([...componentDeps], pm, cwd)\n depSpinner.succeed('Dependencies installed.')\n } catch {\n depSpinner.fail('Failed to install some dependencies.')\n }\n }\n\n logger.success('Done.')\n}\n","import { readConfig } from '../utils/config.js'\nimport { fetchRegistryIndex } from '../utils/registry.js'\nimport * as logger from '../utils/logger.js'\n\nexport async function listComponents(cwd: string): Promise<void> {\n const config = await readConfig(cwd)\n\n const spinner = logger.spinner('Fetching registry index...')\n spinner.start()\n\n let index\n try {\n index = await fetchRegistryIndex(config.registry)\n } catch {\n spinner.fail('Unable to connect to registry.')\n return\n }\n\n spinner.succeed('Available components:')\n for (const name of index.components) {\n console.log(` ${name}`)\n }\n}\n","import { readConfig } from '../utils/config.js'\nimport { fetchComponentRegistry } from '../utils/registry.js'\nimport * as logger from '../utils/logger.js'\n\nexport async function info(name: string, cwd: string): Promise<void> {\n const config = await readConfig(cwd)\n\n const spinner = logger.spinner(`Fetching ${name}...`)\n spinner.start()\n\n let meta\n try {\n meta = await fetchComponentRegistry(config.registry, name)\n } catch {\n spinner.fail(`Component \"${name}\" does not exist.`)\n return\n }\n\n spinner.stop()\n console.log(`\\n name: ${meta.name}`)\n console.log(` description: ${meta.description}`)\n\n if (meta.dependencies.length > 0) {\n console.log(` dependencies:`)\n for (const dep of meta.dependencies) {\n console.log(` - ${dep}`)\n }\n }\n\n if (meta.files.length > 0) {\n console.log(` files:`)\n for (const file of meta.files) {\n console.log(` - ${file.source} → ${file.target}`)\n }\n }\n\n console.log('')\n}\n"],"mappings":"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","names":["fs","resolve","fs","resolve","pathExists","fs","resolve","pathExists","writeFile","fs","spinner","resolve","fs","resolve","mkdirp","writeFile","fs","spinner","resolve","spinner","info","spinner","info"]}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "rn-shadcn",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "shadcn-style CLI for React Native UI components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "bin": {
10
- "react-native-windcn": "./dist/index.js"
10
+ "rn-shadcn": "./dist/index.js"
11
11
  },
12
12
  "files": [
13
13
  "dist"