smart-registry 1.14.0 → 1.15.1
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 +1 -1
- package/dist/bin/index.js +14 -12
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -135,6 +135,7 @@ Options:
|
|
|
135
135
|
-o, --output <path> destination directory for json files (default: "./public/r")
|
|
136
136
|
-c, --cwd <cwd> the working directory (default: "./")
|
|
137
137
|
-i, --ignore <pattern> ignore files matching the pattern (default: none)
|
|
138
|
+
-u, --with-utils include @/lib/utils in the registry items if exists (default: false)
|
|
138
139
|
-v, --version display version
|
|
139
140
|
-h, --help display help
|
|
140
141
|
|
|
@@ -146,7 +147,6 @@ Codemods:
|
|
|
146
147
|
--codemod-radix migrate to unify "@radix-ui/react-*" imports to "radix-ui"
|
|
147
148
|
|
|
148
149
|
Cleanup:
|
|
149
|
-
--no-utils remove @/lib/utils from the registry items (default: false)
|
|
150
150
|
--remove-prefix remove given prefix from the registry item names (default: none)
|
|
151
151
|
|
|
152
152
|
Author:
|
package/dist/bin/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
3
|
-
`).filter(
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
var fe=Object.defineProperty,ue=Object.defineProperties;var he=Object.getOwnPropertyDescriptors;var Q=Object.getOwnPropertySymbols;var ye=Object.prototype.hasOwnProperty,be=Object.prototype.propertyIsEnumerable;var X=(r,t,i)=>t in r?fe(r,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[t]=i,k=(r,t)=>{for(var i in t||(t={}))ye.call(t,i)&&X(r,i,t[i]);if(Q)for(var i of Q(t))be.call(t,i)&&X(r,i,t[i]);return r},L=(r,t)=>ue(r,he(t));import H from"node:fs";import v from"node:path";import{parseArgs as Pe}from"node:util";import{execSync as T}from"node:child_process";import z,{existsSync as ve}from"node:fs";import{readFile as xe}from"node:fs/promises";import F from"node:path";import{glob as Y}from"tinyglobby";var ee=async({cwd:r})=>{function t(l,o){let s=l.toLowerCase(),p=o.toLowerCase();if(s===p&&l!==o){let g=`${l}.tmp-case-rename`;T(`git mv "${l}" "${g}"`,{stdio:"inherit"}),T(`git mv "${g}" "${o}"`,{stdio:"inherit"})}else T(`git mv "${l}" "${o}"`,{stdio:"inherit"})}let i=F.resolve(r,".gitignore"),c=ve(i)?(await xe(i,"utf8")).split(`
|
|
3
|
+
`).filter(l=>l.trim()&&!l.startsWith("#")).map(l=>l.replace(/^\//,"").replace(/^/,"**/")):[];c.push("tailwind.config.js","tailwind.config.ts");let e=await Y(["**/*"],{cwd:r,ignore:c});for(let l of e){let o=F.resolve(r,l),g=l.split("/").map(d=>{let h=F.extname(d);return`${F.basename(d,h).replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}${h}`}).join("/");if(g!==l){let d=F.resolve(r,g);await z.promises.mkdir(F.dirname(d),{recursive:!0}),t(o,d)}}function n(l){return l.split("/").map((o,s)=>o==="."||o===".."||s===0&&o.startsWith("@")?o:o.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()).join("/")}let m=await Y(["**/*.{js,jsx,ts,tsx,css,scss}"],{cwd:r,ignore:c});for(let l of m){let o=F.resolve(r,l),s=await z.promises.readFile(o,"utf8");s=s.replace(/(from\s+['"`])([^'"`]+)(['"`])/g,(p,g,d,h)=>`${g}${n(d)}${h}`),s=s.replace(/(vi\.(?:mock|importActual)\(\s*['"`])([^'"`]+)(['"`])/g,(p,g,d,h)=>`${g}${n(d)}${h}`),s=s.replace(/(url\(\s*['"`]?)([^)'"`]+)(['"`]?\s*\))/g,(p,g,d,h)=>`${g}${n(d)}${h}`),await z.promises.writeFile(o,s,"utf8")}console.log("\u2705 Filenames, import paths, and CSS url() assets converted to kebab-case via git mv (with case-only fallback).")};import _,{existsSync as se}from"node:fs";import{readFile as $e}from"node:fs/promises";import V from"node:path";import{detect as we}from"@antfu/ni";async function te(r,{withFallback:t}={withFallback:!1}){let i=await we({programmatic:!0,cwd:r});if(i==="yarn@berry")return"yarn";if(i==="pnpm@6")return"pnpm";if(i==="bun")return"bun";if(i==="deno")return"deno";if(!t)return i!=null?i:"npm";let c=process.env.npm_config_user_agent||"";return c.startsWith("yarn")?"yarn":c.startsWith("pnpm")?"pnpm":c.startsWith("bun")?"bun":"npm"}import{execa as re}from"execa";import{glob as ke}from"tinyglobby";var ie=async({cwd:r})=>{let t=V.resolve(r,".gitignore"),i=se(t)?(await $e(t,"utf8")).split(`
|
|
4
|
+
`).filter(o=>o.trim()&&!o.startsWith("#")).map(o=>o.replace(/^\//,"").replace(/^/,"**/")):[],c=await ke(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx"],{cwd:r,ignore:i}),e=new Set,n=c.map(async o=>{let s=V.resolve(r,o),p=await _.promises.readFile(s,"utf-8"),g=p.replace(/import \* as (\w+Primitive) from "@radix-ui\/react-([\w-]+)"/g,(d,h,b)=>(e.add(`@radix-ui/react-${b}`),`import { ${h.replace("Primitive","")} as ${h} } 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(p)&&(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")),_.promises.writeFile(s,g,"utf-8")});await Promise.all(n);let m=V.resolve(r,"registry.json");if(se(m)){let o=await _.promises.readFile(m,"utf-8"),s=JSON.parse(o),p=d=>{for(let h in d)h==="dependencies"||h==="devDependencies"?d[h]=Array.from(new Set(d[h].map(b=>e.has(b)?"radix-ui":b))):typeof d[h]=="object"&&d[h]!==null&&p(d[h])};p(s);let g=JSON.stringify(s,null,2);await _.promises.writeFile(m,g,"utf-8")}let l=await te(r);e.size&&await re(l,[l==="npm"?"uninstall":"remove",...Array.from(e)],{cwd:r}),await re(l,[l==="npm"?"install":"add","radix-ui"],{cwd:r}),console.log(`
|
|
5
|
+
Codemod ran successfully. Please run the command again without the --codemod-radix flag to generate the registry.`)};var ne=["registry/**","src/registry/**",["blocks/**","components/**","helpers/**","hooks/**","lib/**","ui/**","utils/**"],["src/blocks/**","src/components/**","src/helpers/**","src/hooks/**","src/lib/**","src/ui/**","src/utils/**"]],A={default:["$schema","name","homepage","items"],items:{default:["$schema","name","type","title","description","author","dependencies","devDependencies","registryDependencies","files","tailwind","cssVars","meta","docs","categories"],type:{default:["registry:style","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","registry:style"]}}}};import B from"node:fs";import K from"node:path";import Se from"strip-json-comments";var oe=async r=>{let t={},i=["tsconfig.json","jsconfig.json"].find(c=>B.existsSync(K.resolve(r,c)));if(i){let c=await B.promises.readFile(K.resolve(r,i),"utf8"),{compilerOptions:e}=JSON.parse(Se(c,{trailingCommas:!0}));e.paths&&(t=Object.entries(e.paths).reduce((n,[m,[l]])=>(m.endsWith("*")&&l.endsWith("*")&&(n[m.replace(/\*$/,"")]=l.replace(/\*$/,"")),n),{}))}return t["@/"]||(t["@/"]=B.existsSync(K.resolve(r,"src"))?"./src/":"./"),t=Object.entries(t).sort(([c],[e])=>e.length-c.length).reduce((c,[e,n])=>(c[e]=n,c),{}),t};import E from"node:fs";import j from"node:path";import je from"node:path";var w=({cwd:r,aliases:t,filepath:i})=>{var l;let c=i;for(let o in t)i=i.replace(t[o].replaceAll("./","").replaceAll("../",""),"");let e=i.startsWith("registry/")?i.replace(/^registry\//,"").replace(/^(?:([^\/]*)\/)?blocks\//,(o,s)=>`blocks/${s?s+"/":""}`).replace(/^(?:([^\/]*)\/)?charts\//,(o,s)=>`charts/${s?s+"/":""}`).replace(/^(?:([^\/]*)\/)?components\/ui\//,(o,s)=>`${s?s+"/":""}ui/`).replace(/^(?:([^\/]*)\/)?components\//,(o,s)=>`components/${s?s+"/":""}`).replace(/^(?:([^\/]*)\/)?hooks\//,(o,s)=>`hooks/${s?s+"/":""}`).replace(/^(?:([^\/]*)\/)?lib\//,(o,s)=>`lib/${s?s+"/":""}`).replace(/^(?:([^\/]*)\/)?ui\//,(o,s)=>`components/ui/${s?s+"/":""}`).replace(/\/default\//,"/").replace(/^default\//,"").replace(/\.\.\//g,"").replace(/\.\//g,"").replace(/^charts\//,"components/charts/"):i.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,"-");e=e.startsWith("blocks/")&&e.includes("components/")?e.replace(/^blocks\//,"").replace(/(?:([^\/]*)\/)?components\//,(o,s)=>`components/${s?s+"/":""}`).replace(/.*?(components\/)/,"$1"):e;let m=e.endsWith("page.tsx")?"registry:page":e.endsWith(".css")?"registry:style":((l=e.match(/^(blocks|components\/charts|components\/ui|components|hooks|lib|utils|helpers)/))==null?void 0:l[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";return e=e.startsWith("blocks/")&&e.endsWith("page.tsx")?e.replace(/^blocks\//,"app/"):e,{type:m,name:n,import:"@/"+e.replace(r+je.sep,"").replace(/\.[^/.]+$/,"").replace(/\/index$/,""),target:c.split("/").length>1?e:`~/${e}`,path:i}};var ae=async({cwd:r,aliases:t,registryFiles:i})=>{let c=j.resolve(r,"registry.json"),e={$schema:"https://ui.shadcn.com/schema/registry.json",name:"nrjdalal",homepage:"https://nrjdalal.com",items:[]};E.existsSync(c)&&(e=k({},JSON.parse(await E.promises.readFile(c,"utf8"))));let n=[];for(let s of i)w({cwd:r,aliases:t,filepath:s}).type==="registry:ui"&&n.push({type:"registry:ui",path:s});let m=null,l=null,o=E.existsSync(j.relative(process.cwd(),j.resolve(r,"app/globals.css")))?j.relative(process.cwd(),j.resolve(r,"app/globals.css")):E.existsSync(j.relative(process.cwd(),j.resolve(r,"src/app/globals.css")))?j.relative(process.cwd(),j.resolve(r,"src/app/globals.css")):null;if(o){let s=await E.promises.readFile(o,"utf8"),p=s.match(/:root\s*{([^}]*)}/);m=p?p[1].replace(/\/\*[\s\S]*?\*\//g,"").split(";").map(d=>d.trim()).filter(d=>d.length).map(d=>{let[h,b]=d.split(":").map(R=>R.trim());return{name:h.replace(/^--/,""),value:b}}):null;let g=s.match(/\.dark\s*{([^}]*)}/);l=g?g[1].replace(/\/\*[\s\S]*?\*\//g,"").split(";").map(d=>d.trim()).filter(d=>d.length).map(d=>{let[h,b]=d.split(":").map(R=>R.trim());return{name:h.replace(/^--/,""),value:b}}):null}return m&&l&&e.items.push({name:"style",type:"registry:style",cssVars:{light:Object.fromEntries(m.map(s=>[s.name,s.value])),dark:Object.fromEntries(l.map(s=>[s.name,s.value]))}}),n.length&&e.items.push({name:"ui",type:"registry:ui",files:n}),e};import Re from"node:fs";import Fe from"node:path";import{glob as Oe}from"tinyglobby";var D=async({cwd:r,patterns:t=["**",".**"],ignore:i=[]})=>{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),i=typeof i=="string"?i.split(",").map(e=>e.trim()):i,i=i.filter(Boolean);let c=await Oe(t,{cwd:r,ignore:i.filter(e=>!t.includes(e))});for(let e of t)if(!c.includes(e)&&!e.endsWith("**")&&!e.endsWith(".**"))try{let n=Fe.resolve(r,e);(await Re.promises.stat(n)).isFile()&&c.push(e)}catch(n){continue}return[...new Set(c)]};var le=async({cwd:r,patterns:t,ignore:i,patternsOnly:c})=>{let e=[];if(!c){for(let n of ne)if(e=await D({cwd:r,patterns:n,ignore:i}),e.length)break}if(t.length&&(e=e.concat(await D({cwd:r,patterns:t,ignore:i}))),!e.length)throw new Error("No files/directories found to build the registry from!");return e=e.sort((n,m)=>n.localeCompare(m,void 0,{numeric:!0,sensitivity:"base"})).filter(n=>!n.startsWith("registry/registry")&&!n.startsWith("registry/index")&&!n.startsWith("src/registry/registry")&&!n.startsWith("src/registry/index")),e};import pe from"node:fs";import ce from"node:path";var C={imports:/import\s+type\s+[\s\S]+?from\s+['"][^'"]+['"]|import\s+['"][^'"]+['"]|import\s+[\s\S]+?from\s+['"][^'"]+['"]/g};var q=async({cwd:r,aliases:t,filepaths:i,resolved:c})=>{c=c!=null?c:new Set;let e={dependencies:[],devDependencies:[],files:[],content:{}};for(let n of i){if(c.has(n))continue;c.add(n),e.files.push(n),e.content[n]||(e.content[n]=await pe.promises.readFile(ce.resolve(r,n),"utf8"));let{dependencies:m,devDependencies:l,files:o,transformations:s}=await Z({cwd:r,aliases:t,filepath:n,content:e.content[n]});o.forEach(p=>e.files.push(p)),m.forEach(p=>e.dependencies.push(p)),l.forEach(p=>e.devDependencies.push(p))}for(let n of e.files){let{dependencies:m,devDependencies:l,files:o,content:s}=await q({cwd:r,aliases:t,filepaths:[n],resolved:c});e.content[n]||(e.content[n]=s[n]||await pe.promises.readFile(ce.resolve(r,n),"utf8")),o.forEach(p=>e.files.push(p)),m.forEach(p=>e.dependencies.push(p)),l.forEach(p=>e.devDependencies.push(p))}e.dependencies=[...new Set(e.dependencies)].sort(),e.devDependencies=[...new Set(e.devDependencies)].sort(),e.files=[...new Set(e.files)].sort();for(let n of e.files){let{transformations:m}=await Z({cwd:r,aliases:t,filepath:n,content:e.content[n]});e.content[n]=e.content[n].replace(C.imports,l=>{let o=l.match(/['"](.*)['"]/);return o&&m[o[1]]?l.replace(o[1],m[o[1]].import):l})}return e};import me from"node:fs";import M from"node:path";var We=async({cwd:r,current:t,aliases:i})=>{t=t.replace(new RegExp(`^${Object.keys(i).find(e=>t.startsWith(e.replace(/\.\//g,"").replace(/\.\.\//g,"")))}`),i[Object.keys(i).find(e=>t.startsWith(e.replace(/\.\//g,"").replace(/\.\.\//g,"")))]),t=t.replace(/^\.\//g,"");let c=await D({cwd:r,patterns:t});return t=c.find(e=>e.startsWith(t+"."))||c.find(e=>e.startsWith(t+"/index"))||t,t.replace(r+"/","")},De=async({cwd:r,filepath:t,current:i})=>{i=M.relative(r,M.resolve(r,M.dirname(t),i));let c=await D({cwd:r,patterns:i});return i=c.find(e=>e.startsWith(i+"."))||c.find(e=>e.startsWith(i+"/index"))||i,i.replace(r+"/","")},Z=async({cwd:r,aliases:t,filepath:i,content:c})=>{let e={dependencies:[],devDependencies:[],files:[],transformations:{}},n=c.match(C.imports)||[];if(!n.length)return e;n=n.map(m=>{var l;return(l=m.match(/['"](.*)['"]/))==null?void 0:l[1].replace(/\/\//g,"/")});for(let m of n){let l=m;if(Object.keys(t).some(s=>m.startsWith(s.replace(/\.\//g,"").replace(/\.\.\//g,""))))m=await We({cwd:r,aliases:t,current:m}),e.transformations[l]=w({cwd:r,aliases:t,filepath:m}),e.files.push(m);else if(m.startsWith("."))m=await De({cwd:r,filepath:i,current:m}),e.transformations[l]=w({cwd:r,aliases:t,filepath:m}),e.files.push(m);else{let s=M.resolve(r,"package.json"),p={};if(me.existsSync(s)){let g=JSON.parse(await me.promises.readFile(s,"utf8"));p=k({},g.devDependencies)}if(m.startsWith("@")){let g=m.split("/").slice(0,2).join("/");p[g]?e.devDependencies.push(g):e.dependencies.push(g)}else{let g=m.split("/")[0];p[g]?e.devDependencies.push(g):e.dependencies.push(g)}}}return e};import{green as Ae}from"yoctocolors";var J="smart-registry",G="1.15.1";var I={name:"Neeraj Dalal",email:"admin@nrjdalal.com",url:"https://nrjdalal.com"};var ge=`Version:
|
|
6
|
+
${J}@${G}
|
|
6
7
|
|
|
7
8
|
Usage:
|
|
8
|
-
$ ${
|
|
9
|
+
$ ${J} [files/directories] ... [options]
|
|
9
10
|
|
|
10
11
|
Arguments:
|
|
11
12
|
files/directories files or directories to extend the registry (optional)
|
|
@@ -14,6 +15,7 @@ Options:
|
|
|
14
15
|
-o, --output <path> destination directory for json files (default: "./public/r")
|
|
15
16
|
-c, --cwd <cwd> the working directory (default: "./")
|
|
16
17
|
-i, --ignore <pattern> ignore files matching the pattern (default: none)
|
|
18
|
+
-u, --with-utils include @/lib/utils in the registry items if exists (default: false)
|
|
17
19
|
-v, --version display version
|
|
18
20
|
-h, --help display help
|
|
19
21
|
|
|
@@ -23,15 +25,15 @@ With disabled automatic detection:
|
|
|
23
25
|
|
|
24
26
|
Codemods:
|
|
25
27
|
--codemod-radix migrate to unify "@radix-ui/react-*" imports to "radix-ui"
|
|
28
|
+
--codemod-camel-to-kebab rename camelCase filenames to kebab-case and update all import paths (default: false)
|
|
26
29
|
|
|
27
30
|
Cleanup:
|
|
28
|
-
--no-utils remove @/lib/utils from the registry items (default: false)
|
|
29
31
|
--remove-prefix remove given prefix from the registry item names (default: none)
|
|
30
32
|
|
|
31
33
|
Author:
|
|
32
|
-
${I.name} <${I.email}> (${I.url})`,
|
|
33
|
-
`),(
|
|
34
|
-
`);let
|
|
35
|
-
- Master (shadcn-compatible) "registry.json" file created at: ${
|
|
36
|
-
${
|
|
37
|
-
`),process.exit(1)}};
|
|
34
|
+
${I.name} <${I.email}> (${I.url})`,Ee=r=>{try{return Pe(r)}catch(t){throw new Error(`Error parsing arguments: ${t.message}`)}},_e=async()=>{var r,t,i,c,e,n,m,l;try{let{positionals:o,values:s}=Ee({allowPositionals:!0,options:{output:{type:"string",short:"o",default:"public/r"},cwd:{type:"string",short:"c"},ignore:{type:"string",short:"i",default:""},"with-utils":{type:"boolean",short:"u",default:!1},"patterns-only":{type:"boolean",short:"p",default:!1},"registry-only":{type:"boolean",short:"r",default:!1},"codemod-radix":{type:"boolean"},"codemod-camel-to-kebab":{type:"boolean"},"remove-prefix":{type:"string",default:""},help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"}}});o.length||(s.version&&(console.log(`${J}@${G}`),process.exit(0)),s.help&&(console.log(ge),process.exit(0)));let p=v.resolve((r=s.cwd)!=null?r:process.cwd());s["codemod-radix"]&&(await ie({cwd:p}),process.exit(0)),s["codemod-camel-to-kebab"]&&(await ee({cwd:p}),process.exit(0));let g=await oe(p),d=s["registry-only"]?[]:await le({cwd:p,patterns:o,ignore:s.ignore,patternsOnly:s["patterns-only"]}),h=await ae({cwd:p,aliases:g,registryFiles:d}),b=[],R=((t=h.items)==null?void 0:t.map(u=>u.name))||[],O=L(k({},h),{items:[]});for(let u of[...d,...R])try{if((i=O.items)!=null&&i.find(a=>a.name===u||a.name===w({cwd:p,aliases:g,filepath:u}).name))continue;let y=((c=h.items)==null?void 0:c.find(a=>a.name===u||a.name===w({cwd:p,aliases:g,filepath:u}).name))||{},S=await q({cwd:p,aliases:g,filepaths:[...R.includes(u)?[]:[u],...((e=y==null?void 0:y.files)==null?void 0:e.map(a=>a.path))||[]]}),W={dependencies:[...new Set([...S.dependencies,...(y==null?void 0:y.dependencies)||[]])].filter((a,$,x)=>!x.some(P=>P!==a&&P.startsWith(a+"@"))).sort(),devDependencies:[...new Set([...S.devDependencies,...(y==null?void 0:y.devDependencies)||[]])].filter((a,$,x)=>!x.some(P=>P!==a&&P.startsWith(a+"@"))).sort(),registryDependencies:[...new Set([...(y==null?void 0:y.registryDependencies)||[]])].sort()},f=k(L(k(k(k({$schema:"https://ui.shadcn.com/schema/registry-item.json",name:w({cwd:p,aliases:g,filepath:u}).name.replace(new RegExp(`^${s["remove-prefix"]||""}-?`),""),type:y.type||w({cwd:p,aliases:g,filepath:u}).type||"registry:file"},W.dependencies.length&&{dependencies:W.dependencies}),W.devDependencies.length&&{devDependencies:W.devDependencies}),W.registryDependencies.length&&{registryDependencies:W.registryDependencies}),{files:S.files.map(a=>({type:a.endsWith(".css")?"registry:theme":w({cwd:p,aliases:g,filepath:a}).type||"registry:file",target:w({cwd:p,aliases:g,filepath:a}).target||a,content:S.content[a],path:a}))}),Object.fromEntries(Object.entries(y).filter(([a])=>!["$schema","name","type","dependencies","devDependencies","registryDependencies","files"].includes(a))));f.files.length&&(f.files.length>1&&!s["with-utils"]&&(f.files=f.files.filter(a=>a.target!=="lib/utils.ts"),f.dependencies=f.dependencies.filter(a=>!["clsx","tailwind-merge"].includes(a))),f.files.some(a=>a.path===u)?f.files=f.files.sort((a,$)=>{if(a.path===u)return-1;if($.path===u)return 1;let x=A.items.files.type.default;return x.indexOf(a.type)-x.indexOf($.type)}):f.files=[f.files[0],...f.files.slice(1).sort((a,$)=>{let x=A.items.files.type.default;return x.indexOf(a.type)-x.indexOf($.type)})]),f.dependencies&&(f.dependencies=f.dependencies.filter(a=>a!=="react"));for(let a in f)(Array.isArray(f[a])&&f[a].length===0||typeof f[a]=="object"&&f[a]!==null&&Object.keys(f[a]).length===0)&&delete f[a];f=Object.keys(f).sort((a,$)=>{let x=A.items.default;return x.indexOf(a)-x.indexOf($)}).reduce((a,$)=>(a[$]=f[$],a),{});let N=v.resolve(p,s.output,f.name+".json");console.log(`${u==="ui"||u==="style"?`- \u{1F525} 'registry:${u}' pack`.padEnd(Math.max(...d.map(a=>v.relative(process.cwd(),v.resolve(p,a)).length))+4," "):"- "+v.relative(process.cwd(),v.resolve(p,u)).padEnd(Math.max(...d.map(a=>v.relative(process.cwd(),v.resolve(p,a)).length))+2," ")} ${(n=S.dependencies)!=null&&n.length?"\u{1F4E6}"+String(S.dependencies.length).padEnd(2," "):" "} ${((m=f.files)==null?void 0:m.length)-1?"\u{1F4C4}"+String(f.files.length).padEnd(2," "):" "} ${v.relative(process.cwd(),N)}`),await H.promises.mkdir(v.dirname(N),{recursive:!0}),await H.promises.writeFile(N,JSON.stringify(f,null,2)+`
|
|
35
|
+
`),(l=f.files)==null||l.forEach(a=>{delete a.content}),delete f.$schema,O.items.push(f)}catch(y){b.push(u+": "+y.message);continue}O.items.sort((u,y)=>u.name.localeCompare(y.name,void 0,{numeric:!0,sensitivity:"base"})).sort((u,y)=>{let S=A.items.type.default;return S.indexOf(u.type)-S.indexOf(y.type)}),await H.promises.writeFile(v.resolve(p,s.output,"registry.json"),JSON.stringify(O,null,2)+`
|
|
36
|
+
`);let de=O.items.reduce((u,y)=>(u[y.type]=(u[y.type]||0)+1,u),{});console.log(),console.table(Object.entries(de).map(([u,y])=>({Type:u,Items:y}))),console.log(`
|
|
37
|
+
- Master (shadcn-compatible) "registry.json" file created at: ${Ae(v.relative(process.cwd(),v.resolve(p,s.output,"registry.json")))} with ${O.items.length} items`),b.length&&(console.log(),b.forEach(u=>console.error(`\x1B[31m- ${u}\x1B[0m`))),process.exit(0)}catch(o){console.error(ge),console.error(`
|
|
38
|
+
${o.message}
|
|
39
|
+
`),process.exit(1)}};_e();
|