UNPKG

4.11 kBJavaScriptView Raw
1Object.defineProperty(exports,"__esModule",{value:!0});const e=require("tslib"),a=require("fs-extra"),n=require("inquirer"),t=require("lodash"),r=require("path"),c=require("@navch/cli-utils"),s=require("@navch/common"),i=require("./prompt-scoped-package");function prepareAddReference(i,o){let p;return{prepare:()=>e.__awaiter(this,void 0,void 0,function*(){p=yield n.prompt({type:"list",name:"category",message:`Select dependency category for ${o.packageName}`,choices:[{name:"dependencies",value:"",checked:!0},{name:"peerDependencies",value:"--peer"}]})}),execute:n=>e.__awaiter(this,void 0,void 0,function*(){n.text+=c.theme`\n• {package ${o.packageName}}`;const e=`^${(yield o.readPackageJSON()).version}`,d=`${o.packageName}@${e}`,g=["yarn add",Object.values(p).filter(s.isTruthy),d].join(" ");if(n.text+=c.theme` {command (${g})}`,"--peer"===p.category){const n=yield i.readPackageJSON();t.set(n,["peerDependencies",o.packageName],e),yield a.writeJson(i.packageJSONPath,n,{spaces:2}),yield i.exec("yarn")}else yield i.exec(g);if(a.statSync(i.tsconfigPath).isFile()){const e=yield a.readJson(i.tsconfigPath),n={path:r.relative(i.packagePath,o.packagePath)},c=t.find(e.references,e=>t.isEqual(e,n));null==e.references&&(e.references=[]),c||(e.references.push(n),yield a.writeJson(i.tsconfigPath,e,{spaces:2}))}})}}function prepareRemoveReference(n,s){return{prepare:t.noop,execute:i=>e.__awaiter(this,void 0,void 0,function*(){const e=["yarn remove",s.packageName].join(" ");if(i.text+=c.theme`\n• {package ${s.packageName}} `+c.theme`{command (${e})}`,yield n.exec(e),a.statSync(n.tsconfigPath).isFile()){const e=yield a.readJson(n.tsconfigPath),o=r.relative(n.packagePath,s.packagePath);null==e.references?i.text+=c.theme`\n {error No 'references' entry found from} `+c.theme`{path ${n.tsconfigPath}}`:(t.remove(e.references,e=>t.isEqual(e,{path:o})),yield a.writeJson(n.tsconfigPath,e,{spaces:2}))}})}}exports.managePackageReference=function managePackageReference(a){return e.__awaiter(this,void 0,void 0,function*(){const r=yield a.ws.getPackages(),s=yield i.promptScopedPackage({packages:r}),o=yield function getGroupedPackages(a,n){return e.__awaiter(this,void 0,void 0,function*(){const e=yield n.readPackageJSON(),t=yield a.ws.getPackages(),r=Object.keys(e.dependencies||{}),c=Object.keys(e.devDependencies||{}),s=Object.keys(e.peerDependencies||{}),i={dependencies:new Array,devDependencies:new Array,peerDependencies:new Array,none:new Array};return t.filter(e=>e.packageName!==n.packageName).forEach(e=>{switch(!0){case r.includes(e.packageName):return i.dependencies.push(e);case c.includes(e.packageName):return i.devDependencies.push(e);case s.includes(e.packageName):return i.peerDependencies.push(e);default:return i.none.push(e)}}),i})}(a,s);if(r.length<=1)throw new Error("Workspace have only one package.");const p=t.max(r.map(e=>e.packageName.length)),d=r.map(e=>o.none.find(a=>a.packageName===e.packageName)?{kind:"add",name:e.packageName,hint:c.theme`{succeed Add reference}`,stages:prepareAddReference(s,e)}:{kind:"remove",name:e.packageName,hint:c.theme`{warn Remove reference}`,stages:prepareRemoveReference(s,e)}),{selected:g}=yield n.prompt({type:"checkbox",name:"selected",message:"Select packages to update",pageSize:1e3,choices:t.flatten(Object.entries(o).filter(([,e])=>e.length>0).map(([e,a])=>[new n.Separator(c.theme.separator(e)),...a.map(e=>{const a=t.padEnd(e.packageName,p),n=c.theme.package(a),r=d.find(a=>a.name===e.packageName);return{name:`${n}${r.hint}`,short:e.packageName,value:r}}),new n.Separator(" ")])),validate:e=>!(e.length<1)||"You must choose at lease one package!"});for(const e of g)yield e.stages.prepare();const m=g.filter(e=>"add"===e.kind),l=g.filter(e=>"remove"===e.kind);if(m.length>0){const e=a.ws.progress(c.theme`Adding references to {package ${s.packageName}}`);for(const a of m)yield a.stages.execute(e);e.succeed()}if(l.length>0){const e=a.ws.progress(c.theme`Removing references from {package ${s.packageName}}`);for(const a of l)yield a.stages.execute(e);e.succeed()}})};
2//# sourceMappingURL=manage-package-reference.js.map
\No newline at end of file