smart-registry 0.25.0 → 0.26.0

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/README.md CHANGED
@@ -13,7 +13,9 @@ A `zero-configuration` (no registry.json required), [shadcn add](https://ui.shad
13
13
 
14
14
  ## What is Zero-Configuration?
15
15
 
16
- Simplify your `registry.json` by removing properties like `registryDependencies`, `dependencies`, and `files`. If you don't need to add custom properties or extend default ones, you can even delete the `registry.json` file entirely.
16
+ Simplify your `registry.json` by removing properties like `dependencies`, `devDependencies`, `registryDependencies`, and `files`.
17
+
18
+ If you don't need to add custom properties or extend default ones, you can even delete the `registry.json` file entirely.
17
19
 
18
20
  ```diff
19
21
  {
@@ -103,7 +105,9 @@ Manual maintenance of `registry.json` files can lead to errors due to missing de
103
105
 
104
106
  ### Automatic Detection
105
107
 
106
- If your project contains a `registry`, `components`, or `src/components` directory, `Smart Registry` will automatically detect and generate the necessary registry files. For more details, refer to the [directory structure](#directory-structure) section.
108
+ If your project contains a `registry`, `components`, or `src/components` directory, `Smart Registry` will automatically detect and generate the necessary registry files.
109
+
110
+ For more details, refer to the [directory structure](#directory-structure) section.
107
111
 
108
112
  ```bash
109
113
  npx smart-registry
package/dist/bin/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  var ne=Object.defineProperty,oe=Object.defineProperties;var ae=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var pe=Object.prototype.hasOwnProperty,ce=Object.prototype.propertyIsEnumerable;var V=(r,t,s)=>t in r?ne(r,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[t]=s,w=(r,t)=>{for(var s in t||(t={}))pe.call(t,s)&&V(r,s,t[s]);if(B)for(var s of B(t))ce.call(t,s)&&V(r,s,t[s]);return r},E=(r,t)=>oe(r,ae(t));import z from"node:fs";import v from"node:path";import{parseArgs as ve}from"node:util";import D,{existsSync as L}from"node:fs";import{readFile as me}from"node:fs/promises";import J from"node:path";import{detect as le}from"@antfu/ni";async function q(r,{withFallback:t}={withFallback:!1}){let s=await le({programmatic:!0,cwd:r});if(s==="yarn@berry")return"yarn";if(s==="pnpm@6")return"pnpm";if(s==="bun")return"bun";if(s==="deno")return"deno";if(!t)return s!=null?s:"npm";let o=process.env.npm_config_user_agent||"";return o.startsWith("yarn")?"yarn":o.startsWith("pnpm")?"pnpm":o.startsWith("bun")?"bun":"npm"}import{execa as T}from"execa";import{glob as ge}from"tinyglobby";var U=async({cwd:r})=>{let t=J.resolve(r,".gitignore"),s=L(t)?(await me(t,"utf8")).split(`
3
3
  `).filter(p=>p.trim()&&!p.startsWith("#")).map(p=>p.replace(/^\//,"").replace(/^/,"**/")):[],o=await ge(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx"],{cwd:r,ignore:s}),e=new Set,n=o.map(async p=>{let d=J.resolve(r,p),l=await D.promises.readFile(d,"utf-8"),g=l.replace(/import \* as (\w+Primitive) from "@radix-ui\/react-([\w-]+)"/g,(b,u,m)=>(e.add(`@radix-ui/react-${m}`),`import { ${u.replace("Primitive","")} as ${u} } from "radix-ui"`)).replace(/Sheet\s+as\s+SheetPrimitive/g,"Dialog as SheetPrimitive");return/import\s+\{\s+Slot\s+\}\s+from\s+"@radix-ui\/react-slot"/.test(l)&&(g=g.replace(/import\s+\{\s+Slot\s+\}\s+from\s+"@radix-ui\/react-slot"/,()=>(e.add("@radix-ui/react-slot"),"import { Slot as SlotPrimitive } from 'radix-ui'")).replace(/typeof\s+Slot\b/g,"typeof SlotPrimitive.Slot").replace(/\?\s+Slot\s+:/g,"? SlotPrimitive.Slot :").replace(/<Slot\b/g,"<SlotPrimitive.Slot")),D.promises.writeFile(d,g,"utf-8")});await Promise.all(n);let i=J.resolve(r,"registry.json");if(L(i)){let p=await D.promises.readFile(i,"utf-8"),d=JSON.parse(p),l=b=>{for(let u in b)u==="dependencies"||u==="devDependencies"?b[u]=Array.from(new Set(b[u].map(m=>e.has(m)?"radix-ui":m))):typeof b[u]=="object"&&b[u]!==null&&l(b[u])};l(d);let g=JSON.stringify(d,null,2);await D.promises.writeFile(i,g,"utf-8")}let a=await q(r);e.size&&await T(a,[a==="npm"?"uninstall":"remove",...Array.from(e)],{cwd:r}),await T(a,[a==="npm"?"install":"add","radix-ui"],{cwd:r}),console.log(`
4
- Codemod ran successfully. Please run the command again without the --codemod-radix flag to generate the registry.`)};var G=["registry/**",["blocks/**","components/**","helpers/**","hooks/**","lib/**","ui/**","utils/**"],["src/blocks/**","src/components/**","src/helpers/**","src/hooks/**","src/lib/**","src/ui/**","src/utils/**"]],R={default:["$schema","name","homepage","items"],items:{default:["$schema","name","type","description","title","author","dependencies","devDependencies","registryDependencies","files","tailwind","cssVars","meta","docs","categories"],type:{default:["registry:ui","registry:hook","registry:lib","registry:theme","registry:page","registry:file","registry:component","registry:block"]},files:{default:["type","target","content","path"],type:{default:["registry:block","registry:component","registry:file","registry:page","registry:theme","registry:lib","registry:hook","registry:ui"]}}}};import _ from"node:fs";import N from"node:path";import de from"strip-json-comments";var H=async r=>{let t={},s=["tsconfig.json","jsconfig.json"].find(o=>_.existsSync(N.resolve(r,o)));if(s){let o=await _.promises.readFile(N.resolve(r,s),"utf8"),{compilerOptions:e}=JSON.parse(de(o,{trailingCommas:!0}));e.paths&&(t=Object.entries(e.paths).reduce((n,[i,[a]])=>(i.endsWith("*")&&a.endsWith("*")&&(n[i.replace(/\*$/,"")]=a.replace(/\*$/,"")),n),{}))}return t["@/"]||(t["@/"]=_.existsSync(N.resolve(r,"src"))?"./src/":"./"),t=Object.entries(t).sort(([o],[e])=>e.length-o.length).reduce((o,[e,n])=>(o[e]=n,o),{}),t};import K from"node:fs";import ue from"node:path";import fe from"node:path";var y=({cwd:r,aliases:t,filepath:s})=>{var i;let o=s;for(let a in t)s=s.replace(t[a].replaceAll("./","").replaceAll("../",""),"");let e=s.startsWith("registry/")?s.replace(/^registry\//,"").replace(/^(?:([^\/]*)\/)?blocks\//,(a,p)=>`blocks/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?charts\//,(a,p)=>`charts/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?components\/ui\//,(a,p)=>`${p?p+"/":""}ui/`).replace(/^(?:([^\/]*)\/)?components\//,(a,p)=>`components/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?hooks\//,(a,p)=>`hooks/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?lib\//,(a,p)=>`lib/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?ui\//,(a,p)=>`components/ui/${p?p+"/":""}`).replace(/\/default\//,"/").replace(/^default\//,"").replace(/\.\.\//g,"").replace(/\.\//g,"").replace(/^charts\//,"components/charts/"):s.replace(/\/default\//,"/").replace(/^default\//,"").replace(/\.\.\//g,"").replace(/\.\//g,""),n=e.toLowerCase().replace(/^(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)\//,"").replace(/\/(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)\//,"/").replace(/\.[^\/.]+$/,"").replace(/\/index$/,"").replace(/\/page$/,"").replace(/\/route$/,"").replace(/\/\[.*\]$/,"").replace(/(\b\w+)\b\/\1\b/g,"$1").replace(/\//g,"-");return{type:e.endsWith("page.tsx")?"registry:page":((i=e.match(/^(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)/))==null?void 0:i[1].replace("blocks","registry:block").replace("components/charts","registry:component").replace("components/ui","registry:ui").replace("components","registry:component").replace("hooks","registry:hook").replace("lib","registry:lib").replace("utils","registry:lib").replace("helpers","registry:lib"))||"registry:file",name:n,import:"@/"+e.replace(r+fe.sep,"").replace(/\.[^/.]+$/,"").replace(/\/index$/,""),target:o.split("/").length>1?e:`~/${e}`,path:s}};var Q=async({cwd:r,aliases:t,registryFiles:s})=>{let o=ue.resolve(r,"registry.json"),e={$schema:"https://ui.shadcn.com/schema/registry.json",name:"nrjdalal",homepage:"https://nrjdalal.com",items:[]};K.existsSync(o)&&(e=w({},JSON.parse(await K.promises.readFile(o,"utf8"))));let n=[];for(let i of s)y({cwd:r,aliases:t,filepath:i}).type==="registry:ui"&&n.push({type:"registry:ui",path:i});return n.length&&e.items.push({name:"ui",type:"registry:ui",files:n}),e};import X from"node:fs";import Y from"node:path";import{glob as he}from"tinyglobby";var j=async({cwd:r,patterns:t=["**",".**"],ignore:s=[]})=>{t=Array.isArray(t)?t:[t],t=t.map(e=>e.replace(/^'|'$/g,"").replace(/^"|"$/g,"").trim()),t=[...t,...t.flatMap(e=>e.includes("*")?[]:[e+".**",e+"**"])],t=t.filter(Boolean),s=typeof s=="string"?s.split(",").map(e=>e.trim()):s,s=s.filter(Boolean);let o=await he(t,{cwd:r,ignore:s.filter(e=>!t.includes(e))});for(let e of t)if(!o.includes(e)&&!e.endsWith("**")&&!e.endsWith(".**"))try{let n=Y.resolve(r,e),i=await X.promises.stat(n);if(i.isDirectory()){let a=(await X.promises.readdir(n)).map(p=>Y.resolve(e,p));o.push(...a)}else i.isFile()&&o.push(e)}catch(n){continue}return[...new Set(o)]};var Z=async({cwd:r,patterns:t,ignore:s,patternsOnly:o})=>{let e=[];if(!o){for(let n of G)if(e=await j({cwd:r,patterns:n,ignore:s}),e.length)break}if(t.length&&(e=e.concat(await j({cwd:r,patterns:t,ignore:s}))),!e.length)throw new Error("No files/directories found to build the registry from!");return e=e.sort((n,i)=>n.localeCompare(i,void 0,{numeric:!0,sensitivity:"base"})),e};import ee from"node:fs";import te from"node:path";var F={imports:/import\s+type\s+[\s\S]+?from\s+['"][^'"]+['"]|import\s+['"][^'"]+['"]|import\s+[\s\S]+?from\s+['"][^'"]+['"]/g};var I=async({cwd:r,aliases:t,filepaths:s,resolved:o})=>{o=o!=null?o:new Set;let e={dependencies:[],devDependencies:[],files:[],content:{}};for(let n of s){if(o.has(n))continue;o.add(n),e.files.push(n),e.content[n]||(e.content[n]=await ee.promises.readFile(te.resolve(r,n),"utf8"));let{dependencies:i,devDependencies:a,files:p,transformations:d}=await se({cwd:r,aliases:t,filepath:n,content:e.content[n]});e.content[n]=e.content[n].replace(F.imports,l=>{let g=l.match(/['"](.*)['"]/);return g&&d[g[1]]?l.replace(g[1],d[g[1]].import):l}),p.forEach(l=>e.files.push(l)),i.forEach(l=>e.dependencies.push(l)),a.forEach(l=>e.devDependencies.push(l))}for(let n of e.files){let{dependencies:i,devDependencies:a,files:p,content:d}=await I({cwd:r,aliases:t,filepaths:[n],resolved:o});e.content[n]||(e.content[n]=d[n]||await ee.promises.readFile(te.resolve(r,n),"utf8")),p.forEach(l=>e.files.push(l)),i.forEach(l=>e.dependencies.push(l)),a.forEach(l=>e.devDependencies.push(l))}return e.dependencies=[...new Set(e.dependencies)].sort(),e.devDependencies=[...new Set(e.devDependencies)].sort(),e.files=[...new Set(e.files)].sort(),e};import re from"node:fs";import O from"node:path";var ye=async({cwd:r,current:t,aliases:s})=>{t=t.replace(new RegExp(`^${Object.keys(s).find(e=>t.startsWith(e.replace(/\.\//g,"").replace(/\.\.\//g,"")))}`),s[Object.keys(s).find(e=>t.startsWith(e.replace(/\.\//g,"").replace(/\.\.\//g,"")))]),t=t.replace(/\.\//g,"").replace(/\.\.\//g,"");let o=await j({cwd:r,patterns:t});return t=o.find(e=>e.startsWith(t+"."))||o.find(e=>e.startsWith(t+"/index"))||t,t.replace(r+"/","")},xe=async({cwd:r,filepath:t,current:s})=>{s=O.relative(r,O.resolve(r,O.dirname(t),s));let o=await j({cwd:r,patterns:s});return s=o.find(e=>e.startsWith(s+"."))||o.find(e=>e.startsWith(s+"/index"))||s,s.replace(r+"/","")},se=async({cwd:r,aliases:t,filepath:s,content:o})=>{let e={dependencies:[],devDependencies:[],files:[],transformations:{}},n=o.match(F.imports)||[];if(!n.length)return e;n=n.map(i=>{var a;return(a=i.match(/['"](.*)['"]/))==null?void 0:a[1].replace(/\/\//g,"/")});for(let i of n){let a=i;if(Object.keys(t).some(d=>i.startsWith(d.replace(/\.\//g,"").replace(/\.\.\//g,""))))i=await ye({cwd:r,aliases:t,current:i}),e.transformations[a]=y({cwd:r,aliases:t,filepath:i}),e.files.push(i);else if(i.startsWith("."))i=await xe({cwd:r,filepath:s,current:i}),e.transformations[a]=y({cwd:r,aliases:t,filepath:i}),e.files.push(i);else{let d=O.resolve(r,"package.json"),l={};if(re.existsSync(d)){let g=JSON.parse(await re.promises.readFile(d,"utf8"));l=w({},g.devDependencies)}if(i.startsWith("@")){let g=i.split("/").slice(0,2).join("/");l[g]?e.devDependencies.push(g):e.dependencies.push(g)}else{let g=i.split("/")[0];l[g]?e.devDependencies.push(g):e.dependencies.push(g)}}}return e};var P="smart-registry",C="0.25.0";var W={name:"Neeraj Dalal",email:"admin@nrjdalal.com",url:"https://nrjdalal.com"};var ie=`Version:
4
+ Codemod ran successfully. Please run the command again without the --codemod-radix flag to generate the registry.`)};var G=["registry/**",["blocks/**","components/**","helpers/**","hooks/**","lib/**","ui/**","utils/**"],["src/blocks/**","src/components/**","src/helpers/**","src/hooks/**","src/lib/**","src/ui/**","src/utils/**"]],R={default:["$schema","name","homepage","items"],items:{default:["$schema","name","type","description","title","author","dependencies","devDependencies","registryDependencies","files","tailwind","cssVars","meta","docs","categories"],type:{default:["registry:ui","registry:hook","registry:lib","registry:theme","registry:page","registry:file","registry:component","registry:block"]},files:{default:["type","target","content","path"],type:{default:["registry:block","registry:component","registry:file","registry:page","registry:theme","registry:lib","registry:hook","registry:ui"]}}}};import _ from"node:fs";import N from"node:path";import de from"strip-json-comments";var H=async r=>{let t={},s=["tsconfig.json","jsconfig.json"].find(o=>_.existsSync(N.resolve(r,o)));if(s){let o=await _.promises.readFile(N.resolve(r,s),"utf8"),{compilerOptions:e}=JSON.parse(de(o,{trailingCommas:!0}));e.paths&&(t=Object.entries(e.paths).reduce((n,[i,[a]])=>(i.endsWith("*")&&a.endsWith("*")&&(n[i.replace(/\*$/,"")]=a.replace(/\*$/,"")),n),{}))}return t["@/"]||(t["@/"]=_.existsSync(N.resolve(r,"src"))?"./src/":"./"),t=Object.entries(t).sort(([o],[e])=>e.length-o.length).reduce((o,[e,n])=>(o[e]=n,o),{}),t};import K from"node:fs";import ue from"node:path";import fe from"node:path";var y=({cwd:r,aliases:t,filepath:s})=>{var i;let o=s;for(let a in t)s=s.replace(t[a].replaceAll("./","").replaceAll("../",""),"");let e=s.startsWith("registry/")?s.replace(/^registry\//,"").replace(/^(?:([^\/]*)\/)?blocks\//,(a,p)=>`blocks/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?charts\//,(a,p)=>`charts/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?components\/ui\//,(a,p)=>`${p?p+"/":""}ui/`).replace(/^(?:([^\/]*)\/)?components\//,(a,p)=>`components/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?hooks\//,(a,p)=>`hooks/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?lib\//,(a,p)=>`lib/${p?p+"/":""}`).replace(/^(?:([^\/]*)\/)?ui\//,(a,p)=>`components/ui/${p?p+"/":""}`).replace(/\/default\//,"/").replace(/^default\//,"").replace(/\.\.\//g,"").replace(/\.\//g,"").replace(/^charts\//,"components/charts/"):s.replace(/\/default\//,"/").replace(/^default\//,"").replace(/\.\.\//g,"").replace(/\.\//g,""),n=e.toLowerCase().replace(/^(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)\//,"").replace(/\/(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)\//,"/").replace(/\.[^\/.]+$/,"").replace(/\/index$/,"").replace(/\/page$/,"").replace(/\/route$/,"").replace(/\/\[.*\]$/,"").replace(/(\b\w+)\b\/\1\b/g,"$1").replace(/\//g,"-");return{type:e.endsWith("page.tsx")?"registry:page":((i=e.match(/^(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)/))==null?void 0:i[1].replace("blocks","registry:block").replace("components/charts","registry:component").replace("components/ui","registry:ui").replace("components","registry:component").replace("hooks","registry:hook").replace("lib","registry:lib").replace("utils","registry:lib").replace("helpers","registry:lib"))||"registry:file",name:n,import:"@/"+e.replace(r+fe.sep,"").replace(/\.[^/.]+$/,"").replace(/\/index$/,""),target:o.split("/").length>1?e:`~/${e}`,path:s}};var Q=async({cwd:r,aliases:t,registryFiles:s})=>{let o=ue.resolve(r,"registry.json"),e={$schema:"https://ui.shadcn.com/schema/registry.json",name:"nrjdalal",homepage:"https://nrjdalal.com",items:[]};K.existsSync(o)&&(e=w({},JSON.parse(await K.promises.readFile(o,"utf8"))));let n=[];for(let i of s)y({cwd:r,aliases:t,filepath:i}).type==="registry:ui"&&n.push({type:"registry:ui",path:i});return n.length&&e.items.push({name:"ui",type:"registry:ui",files:n}),e};import X from"node:fs";import Y from"node:path";import{glob as he}from"tinyglobby";var j=async({cwd:r,patterns:t=["**",".**"],ignore:s=[]})=>{t=Array.isArray(t)?t:[t],t=t.map(e=>e.replace(/^'|'$/g,"").replace(/^"|"$/g,"").trim()),t=[...t,...t.flatMap(e=>e.includes("*")?[]:[e+".**",e+"**"])],t=t.filter(Boolean),s=typeof s=="string"?s.split(",").map(e=>e.trim()):s,s=s.filter(Boolean);let o=await he(t,{cwd:r,ignore:s.filter(e=>!t.includes(e))});for(let e of t)if(!o.includes(e)&&!e.endsWith("**")&&!e.endsWith(".**"))try{let n=Y.resolve(r,e),i=await X.promises.stat(n);if(i.isDirectory()){let a=(await X.promises.readdir(n)).map(p=>Y.resolve(e,p));o.push(...a)}else i.isFile()&&o.push(e)}catch(n){continue}return[...new Set(o)]};var Z=async({cwd:r,patterns:t,ignore:s,patternsOnly:o})=>{let e=[];if(!o){for(let n of G)if(e=await j({cwd:r,patterns:n,ignore:s}),e.length)break}if(t.length&&(e=e.concat(await j({cwd:r,patterns:t,ignore:s}))),!e.length)throw new Error("No files/directories found to build the registry from!");return e=e.sort((n,i)=>n.localeCompare(i,void 0,{numeric:!0,sensitivity:"base"})),e};import ee from"node:fs";import te from"node:path";var F={imports:/import\s+type\s+[\s\S]+?from\s+['"][^'"]+['"]|import\s+['"][^'"]+['"]|import\s+[\s\S]+?from\s+['"][^'"]+['"]/g};var I=async({cwd:r,aliases:t,filepaths:s,resolved:o})=>{o=o!=null?o:new Set;let e={dependencies:[],devDependencies:[],files:[],content:{}};for(let n of s){if(o.has(n))continue;o.add(n),e.files.push(n),e.content[n]||(e.content[n]=await ee.promises.readFile(te.resolve(r,n),"utf8"));let{dependencies:i,devDependencies:a,files:p,transformations:d}=await se({cwd:r,aliases:t,filepath:n,content:e.content[n]});e.content[n]=e.content[n].replace(F.imports,l=>{let g=l.match(/['"](.*)['"]/);return g&&d[g[1]]?l.replace(g[1],d[g[1]].import):l}),p.forEach(l=>e.files.push(l)),i.forEach(l=>e.dependencies.push(l)),a.forEach(l=>e.devDependencies.push(l))}for(let n of e.files){let{dependencies:i,devDependencies:a,files:p,content:d}=await I({cwd:r,aliases:t,filepaths:[n],resolved:o});e.content[n]||(e.content[n]=d[n]||await ee.promises.readFile(te.resolve(r,n),"utf8")),p.forEach(l=>e.files.push(l)),i.forEach(l=>e.dependencies.push(l)),a.forEach(l=>e.devDependencies.push(l))}return e.dependencies=[...new Set(e.dependencies)].sort(),e.devDependencies=[...new Set(e.devDependencies)].sort(),e.files=[...new Set(e.files)].sort(),e};import re from"node:fs";import O from"node:path";var ye=async({cwd:r,current:t,aliases:s})=>{t=t.replace(new RegExp(`^${Object.keys(s).find(e=>t.startsWith(e.replace(/\.\//g,"").replace(/\.\.\//g,"")))}`),s[Object.keys(s).find(e=>t.startsWith(e.replace(/\.\//g,"").replace(/\.\.\//g,"")))]),t=t.replace(/\.\//g,"").replace(/\.\.\//g,"");let o=await j({cwd:r,patterns:t});return t=o.find(e=>e.startsWith(t+"."))||o.find(e=>e.startsWith(t+"/index"))||t,t.replace(r+"/","")},xe=async({cwd:r,filepath:t,current:s})=>{s=O.relative(r,O.resolve(r,O.dirname(t),s));let o=await j({cwd:r,patterns:s});return s=o.find(e=>e.startsWith(s+"."))||o.find(e=>e.startsWith(s+"/index"))||s,s.replace(r+"/","")},se=async({cwd:r,aliases:t,filepath:s,content:o})=>{let e={dependencies:[],devDependencies:[],files:[],transformations:{}},n=o.match(F.imports)||[];if(!n.length)return e;n=n.map(i=>{var a;return(a=i.match(/['"](.*)['"]/))==null?void 0:a[1].replace(/\/\//g,"/")});for(let i of n){let a=i;if(Object.keys(t).some(d=>i.startsWith(d.replace(/\.\//g,"").replace(/\.\.\//g,""))))i=await ye({cwd:r,aliases:t,current:i}),e.transformations[a]=y({cwd:r,aliases:t,filepath:i}),e.files.push(i);else if(i.startsWith("."))i=await xe({cwd:r,filepath:s,current:i}),e.transformations[a]=y({cwd:r,aliases:t,filepath:i}),e.files.push(i);else{let d=O.resolve(r,"package.json"),l={};if(re.existsSync(d)){let g=JSON.parse(await re.promises.readFile(d,"utf8"));l=w({},g.devDependencies)}if(i.startsWith("@")){let g=i.split("/").slice(0,2).join("/");l[g]?e.devDependencies.push(g):e.dependencies.push(g)}else{let g=i.split("/")[0];l[g]?e.devDependencies.push(g):e.dependencies.push(g)}}}return e};var P="smart-registry",C="0.26.0";var W={name:"Neeraj Dalal",email:"admin@nrjdalal.com",url:"https://nrjdalal.com"};var ie=`Version:
5
5
  ${P}@${C}
6
6
 
7
7
  Usage:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smart-registry",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "A zero-configuration (no registry.json required), shadcn add / open in v0 compatible registry builder.",
5
5
  "keywords": [
6
6
  "components",