UNPKG

@alessiofrittoli/node-scripts

Version:
4 lines 2.31 kB
import i from'fs';import f from'path';var u=()=>process.env.INIT_CWD||process.cwd();var h=r=>JSON.parse(i.readFileSync(f.resolve(r,"package.json")).toString()),p=({root:r,name:n})=>{try{return !h(r).name.endsWith(n)}catch(e){throw new Error("Couldn't check if script is running in an external project.",{cause:e})}};var w=r=>{let{root:n}=r,{name:e}=r,{outputFile:t}=r,o=`/// <reference types="${e}" /> `,c="// NOTE: This file should not be edited",s=f.resolve(n,t);if(i.existsSync(s)){let a=i.readFileSync(s);if(a.toString().split(` `).includes(o.replace(/\n/g,""))){console.log({package:e,message:`The "${t}" file already exists and it includes the needed type references.`});return}let d=Buffer.concat([Buffer.from(o),a]);try{i.writeFileSync(s,d),console.log({package:e,message:`The "${t}" file already exists and it has been edited with new type references.`});return}catch(m){throw new Error(`An error occured while editing "${t}" in your project. Some global types may not work as expected.`,{cause:m})}}let l=[o,c].join(` `);try{return i.writeFileSync(s,Buffer.from(l)),console.log({package:e,message:`"${t}" has been created at the root of your project.`}),!0}catch(a){throw new Error(`An error occurred while creating "${t}" at the root of your project. Some global types may not work as expected.`,{cause:a})}},x=r=>{let{root:n}=r,{name:e}=r,{outputFile:t}=r,o="tsconfig.json";try{let c=f.resolve(n,o),s=JSON.parse(i.readFileSync(c).toString());s.include||(s.include=[]);let{include:l}=s;if(Array.isArray(l)&&!l.includes(t)){l.push(t);try{i.writeFileSync(c,Buffer.from(JSON.stringify(s,void 0," "))),console.log({package:e,message:`"${t}" added to \`include\` property of your "${o}" file.`});}catch(a){throw new Error(`Couldn't update your "${o}" file. You should manually update it by adding ${t} in the \`include\` array.`,{cause:a})}}}catch(c){throw new Error(`An error occured while updating your "${o}" file.`,{cause:c})}},A=r=>{let{outputFile:n="alessiofrittoli-env.d.ts"}=r,{name:e}=r,t=u();try{if(!p({name:e,root:t})){console.log({package:e,message:`Skip "postinstall" script. Running in ${e}`});return}w({name:e,root:t,outputFile:n}),x({root:t,name:e,outputFile:n});}catch(o){console.error(o),process.exit(1);}};export{A as addTypesReference,w as createReferenceFile,x as updateTsConfig};