@ycmd/commands
Version:
LSK.js CLI Creds is the easiest way to manage GitHub / Gitlab secrets and credentials
12 lines (10 loc) • 5.35 kB
JavaScript
import { existsSync } from 'node:fs';
import { writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import { omitNull, mapValues } from '@lsk4/algos';
import { createCommand, shellParallel, readJson, getCwdInfo, findBin, shell } from 'ycmd';
var B=createCommand({command:"fix [opts]",describe:"fix package configurations",builder:n=>n.options({sort:{describe:"Sort the configuration",type:"boolean",default:!1},workspace:{describe:"Operate on the entire workspace",type:"boolean",default:!1},scripts:{describe:"Fix scripts in package.json",type:"boolean",default:!1},packageSafe:{describe:"Ensure package safety",type:"boolean",default:!1},package:{describe:"Apply fixes to package configurations",type:"boolean",default:!1},eslint:{describe:"Apply ESLint fixes",type:"boolean",default:!1}}),async main({isRoot:n,args:t,log:p,cwd:r,ctx:a}){n&&await shellParallel(`ycmd fix ${t.join(" ")}`,{ctx:a});let y=await import('sort-package-json'),k=["--sort","--workspace","--scripts","--packageSafe"];t.length||(t=k),(t.includes("--package")||t.includes("--eslint"))&&(t=[...t,...k]);let w=join(r,"package.json"),e=await readJson(w);(t.includes("--deps")||t.includes("--workspace"))&&(e.dependencies=omitNull(mapValues(e.dependencies||{},i=>{if(i.startsWith("workspace:")){let s=i.slice(10);return s[0]==="^"?s:`^${s}`}return i.startsWith("link:")?i.slice(5):i})),Object.keys(e.dependencies||{}).length||delete e.dependencies,Object.keys(e.devDependencies||{}).length||delete e.devDependencies);let b=await getCwdInfo({cwd:r}),{isLib:o,isTs:l,isBabel:g,isApp:h}=b,{rootPath:$=r}=b,x=join($,"package.json"),c=await readJson(x);if(t.includes("--temp")&&(delete e.__debug,delete e.scripts?.["test:watch"]),t.includes("--prepack")&&(e.scripts||(o&&(e.scripts={dev:" ycmd dev",build:" ycmd build",test:" ycmd test",prepack:" ycmd prepack",release:" ycmd release"}),h&&(e.scripts={dev:" ycmd dev",build:" ycmd build",test:" ycmd test",prepack:" ycmd prepack",release:" ycmd release",start:" ycmd start"})),!e.scripts.prepack&&!n&&(e.scripts.prepack=" ycmd prepack")),t.includes("--packageSafe")){let i="/////========================/////";e["//"]=`//////${i}${i}${i}`,e["///"]=`/////${i}${i}${i}`,e["////"]=`////${i}${i}${i}`,(!e.scripts||t.includes("--scripts"))&&(o&&(e.scripts={dev:" ycmd dev",build:" ycmd build",test:" ycmd test",prepack:" ycmd prepack",release:" ycmd release",...e.scripts||{}}),h&&(e.scripts={start:" ycmd start",build:" ycmd build",test:" ycmd test",prepack:" ycmd prepack",release:" ycmd release",...e.scripts||{}})),e.eslintConfig||(e.eslintConfig={extends:"@lskjs/eslint-config"}),e.jest||(e.jest={preset:"@lskjs/jest-config"}),e.prettier||(e.prettier="@lskjs/eslint-config/prettier"),Object.keys(e.dependencies||{}).length||delete e.dependencies,Object.keys(e.devDependencies||{}).length||delete e.devDependencies,(!e.author||e.author.includes("Igor Suvorov"))&&(e.author="Igor Suvorov <hi@isuvorov.com> (https://github.com/isuvorov)"),e.license||(c.license?e.license=c.license:e.private===!1&&(e.license="MIT")),(e.access||e.private===!1)&&(delete e.access,e.private=!1,e.publishConfig||(e.publishConfig={access:"public",registry:"https://registry.npmjs.org/"}));}if(t.includes("--package")){let i=r.replace($,"");if(c.repository?.includes("github.com")&&(n||(e.repository=`${c.repository}/tree/master/${i}`),e.bugs=`${c.repository}/issues`,e.homepage||(e.homepage=e.repository)),o&&!n){let s=l||g?"./lib":existsSync(`${r}/src`)?"./src":".";e.main||(e.main=`${s}/index.js`),l&&!e.types&&(e.main=`${s}/index.d.ts`),e.exports||(e.exports={".":omitNull({import:`${s}/index.mjs`,types:l?`${s}/index.d.ts`:null,default:`${s}/index.js`}),"./*":omitNull({import:`${s}/*.mjs`,types:l?`${s}/*.d.ts`:null,default:`${s}/*.js`})}),!e["size-limit"]&&o&&!g&&(e["size-limit"]=[{path:`${s}/index.js`,limit:"1kb"}]),e.private===void 0&&(c.private!==void 0?e.private=c.private:p.error("!private")),!e.private&&!e.description&&p.error("!description"),(!e.private&&!e.keywords||!e.keywords.length)&&p.error("!keywords"),e.files||(e.files=["lib","README.md","LICENCE"]);}}if(t.includes("--sort")){let i=["name","version","type","description","author","contributors","private","workspaces","scripts","dependencies","devDependencies","peerDependencies","optionalDependencies","//","prettier","eslintConfig","jest","files","browser","bin","main","types","typings","exports","imports","size-limit","///","productName","repository","homepage","bugs","engines","license","publishConfig","keywords","////"],s=["start","dev","build","test","prepack","release","release:ci"];e=y(e,{sortOrder:i}),e.scripts&&(e.scripts=y(e.scripts,{sortOrder:s}));}if(await writeFile(`${r}/package.json`,`${JSON.stringify(e,null,2)}
`),t.includes("--eslint")){let i=["inherit","ignore","ignore"],s=`${findBin("eslint")} --fix`;existsSync(`${r}/src`)?await shell(`${s} src`,{ctx:a}):await shell(`${s} .`,{ctx:a,stdio:i}).catch(d=>{p.trace("[eslint err] in .",d);}),existsSync(`${r}/tests`)&&await shell(`${s} tests`,{ctx:a,stdio:i}).catch(d=>{p.trace("[eslint err] in test",d);});}}});
export { B as default };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=fix.js.map