@alessiofrittoli/node-scripts
Version:
Utility library with common Node.js scripts
4 lines • 2.66 kB
JavaScript
;var i=require('fs'),f=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var i__default=/*#__PURE__*/_interopDefault(i);var f__default=/*#__PURE__*/_interopDefault(f);var p=()=>process.env.INIT_CWD||process.cwd();var h=r=>JSON.parse(i__default.default.readFileSync(f__default.default.resolve(r,"package.json")).toString()),u=({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__default.default.resolve(n,t);if(i__default.default.existsSync(s)){let a=i__default.default.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__default.default.writeFileSync(s,d),console.log({package:e,message:`The "${t}" file already exists and it has been edited with new type references.`});return}catch(g){throw new Error(`An error occured while editing "${t}" in your project. Some global types may not work as expected.`,{cause:g})}}let l=[o,c].join(`
`);try{return i__default.default.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__default.default.resolve(n,o),s=JSON.parse(i__default.default.readFileSync(c).toString());s.include||(s.include=[]);let{include:l}=s;if(Array.isArray(l)&&!l.includes(t)){l.push(t);try{i__default.default.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})}},O=r=>{let{outputFile:n="alessiofrittoli-env.d.ts"}=r,{name:e}=r,t=p();try{if(!u({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);}};exports.addTypesReference=O;exports.createReferenceFile=w;exports.updateTsConfig=x;