UNPKG

@jpapini/webpack-config

Version:
1 lines 46 kB
{"version":3,"sources":["../src/utils/find-project-root.util.ts","../src/utils/shortern-path.util.ts","../src/utils/find-file-path.util.ts","../src/contexts/base.context.ts","../src/contexts/nest-app.context.ts","../src/contexts/react-app.context.ts","../src/enums/build-type.enum.ts","../src/enums/node-env.enum.ts","../src/context.factory.ts","../src/utils/dotenv.util.ts","../src/load-env-vars.ts","../src/constants.ts","../src/presets/base.preset.ts","../src/presets/nest-app.preset.ts","../src/presets/react-app.preset.ts","../src/utils/merge-config.util.ts","../src/utils/merge-presets.util.ts","../src/create-build-configuration.ts"],"names":["fs","path","logger","colors","require","config","webpack","createRequire"],"mappings":";;;;;;;;;;;;;;;;;AAKA,SAAS,gBAAiB,CAAA,UAAA,GAAa,OAAQ,CAAA,GAAA,EAAe,EAAA;AAC1D,EAAA,IAAI,GAAM,GAAA,UAAA;AAEV,EAAA,OAAO,QAAQ,GAAK,EAAA;AAChB,IAAI,IAAAA,GAAA,CAAG,WAAW,IAAK,CAAA,IAAA,CAAK,KAAK,MAAM,CAAC,GAAU,OAAA,GAAA;AAClD,IAAM,GAAA,GAAA,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA;AAG1B,EAAA,MAAM,IAAI,KAAA,CAAM,CAAyC,sCAAA,EAAA,UAAU,CAAE,CAAA,CAAA;AACzE;AAEO,IAAM,eAAA,GAAkB,WAAW,gBAAgB,CAAA;;;ACdnD,SAAS,YAAA,CAAa,cAAsB,UAA6B,EAAA;AAC5E,EAAM,MAAA,OAAA,GAAU,gBAAgB,UAAU,CAAA;AAC1C,EAAO,OAAA,YAAA,CAAa,OAAQ,CAAA,OAAA,EAAS,QAAQ,CAAA;AACjD;;;ACAO,SAAS,YAAA,CAAa,YAAoB,QAAiC,EAAA;AAC9E,EAAA,MAAM,YAAeC,GAAAA,IAAAA,CAAK,IAAK,CAAA,UAAA,EAAY,QAAQ,CAAA;AACnD,EAAA,OAAOD,GAAG,CAAA,UAAA,CAAW,YAAY,CAAA,GAAI,YAAe,GAAA,IAAA;AACxD;AAEO,SAAS,mBAAA,CAAoB,YAAoB,QAA0B,EAAA;AAC9E,EAAA,MAAM,YAAeC,GAAAA,IAAAA,CAAK,IAAK,CAAA,UAAA,EAAY,QAAQ,CAAA;AACnD,EAAI,IAAA,CAACD,GAAG,CAAA,UAAA,CAAW,YAAY,CAAA;AAC3B,IAAA,MAAM,IAAI,KAAM,CAAA,CAAA,gBAAA,EAAmB,aAAa,YAAc,EAAA,UAAU,CAAC,CAAE,CAAA,CAAA;AAC/E,EAAO,OAAA,YAAA;AACX;;;ACoBO,IAAe,cAAf,MAAqE;AAAA,EAC9D,UAAA;AAAA,EACA,GAAA;AAAA,EAEA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EAEA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EAEA,QAAA;AAAA,EACA,QAAA;AAAA,EAEA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EAEA,UAAA;AAAA,EAEA,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EAEV,YAAY,OAAyC,EAAA;AACjD,IAAA,IAAA,CAAK,aAAa,OAAQ,CAAA,SAAA;AAC1B,IAAA,IAAA,CAAK,MAAM,OAAQ,CAAA,EAAA;AAEnB,IAAK,IAAA,CAAA,WAAA,GAAc,eAAgB,CAAA,OAAA,CAAQ,OAAO,CAAA;AAClD,IAAA,IAAA,CAAK,WAAW,OAAQ,CAAA,OAAA;AACxB,IAAA,IAAA,CAAK,UAAUC,IAAK,CAAA,IAAA,CAAK,QAAQ,OAAS,EAAA,OAAA,CAAQ,UAAU,MAAM,CAAA;AAClE,IAAA,IAAA,CAAK,YAAYA,IAAK,CAAA,IAAA;AAAA,MAClB,OAAQ,CAAA,OAAA;AAAA,MACR,QAAQ,QAAY,IAAA;AAAA,KACxB;AAEA,IAAA,IAAA,CAAK,YAAe,GAAA,mBAAA,CAAoB,OAAQ,CAAA,OAAA,EAAS,cAAc,CAAA;AACvE,IAAA,IAAA,CAAK,aAAgB,GAAA,mBAAA,CAAoB,OAAQ,CAAA,OAAA,EAAS,eAAe,CAAA;AACzE,IAAA,IAAA,CAAK,UAAa,GAAA,mBAAA,CAAoB,OAAQ,CAAA,OAAA,EAAS,QAAQ,SAAS,CAAA;AAExE,IAAA,IAAA,CAAK,WAAW,OAAQ,CAAA,OAAA;AACxB,IAAK,IAAA,CAAA,QAAA,GAAW,OAAQ,CAAA,OAAA,IAAW,EAAC;AAEpC,IAAA,IAAA,CAAK,gBAAgB,OAAQ,CAAA,YAAA;AAC7B,IAAA,IAAA,CAAK,eAAe,OAAQ,CAAA,WAAA;AAC5B,IAAA,IAAA,CAAK,eAAe,OAAQ,CAAA,WAAA;AAE5B,IAAA,IAAA,CAAK,aAAa,OAAQ,CAAA,SAAA;AAC1B,IAAK,IAAA,CAAA,UAAA,CAAW,YAAY,IAAK,CAAA,UAAA,CAAW,SAAS,QAAS,CAAA,GAAG,IAAI,EAAK,GAAA,GAAA;AAE1E,IAAK,IAAA,CAAA,OAAA,GAAU,QAAQ,MAAU,IAAA,KAAA;AACjC,IAAK,IAAA,CAAA,gBAAA,GAAmB,OAAQ,CAAA,eAAA,IAAmB,EAAC;AACpD,IAAK,IAAA,CAAA,eAAA,GAAkB,OAAQ,CAAA,cAAA,IAAkB,EAAC;AAAA;AACtD,EAEA,IAAW,SAAwB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,UAAA;AAAA;AAChB,EACA,IAAW,EAAa,GAAA;AACpB,IAAA,OAAO,IAAK,CAAA,GAAA;AAAA;AAChB,EAEA,IAAW,UAAqB,GAAA;AAC5B,IAAA,OAAO,IAAK,CAAA,WAAA;AAAA;AAChB,EACA,IAAW,OAAkB,GAAA;AACzB,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AAChB,EACA,IAAW,MAAiB,GAAA;AACxB,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AAChB,EACA,IAAW,QAAmB,GAAA;AAC1B,IAAA,OAAO,IAAK,CAAA,SAAA;AAAA;AAChB,EAEA,IAAW,WAAsB,GAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,YAAA;AAAA;AAChB,EACA,IAAW,YAAuB,GAAA;AAC9B,IAAA,OAAO,IAAK,CAAA,aAAA;AAAA;AAChB,EACA,IAAW,SAAoB,GAAA;AAC3B,IAAA,OAAO,IAAK,CAAA,UAAA;AAAA;AAChB,EAEA,IAAW,OAAmB,GAAA;AAC1B,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AAChB,EACA,IAAW,OAA8C,GAAA;AACrD,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AAChB,EAEA,IAAW,YAAwB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,aAAA;AAAA;AAChB,EACA,IAAW,WAAuB,GAAA;AAC9B,IAAA,OAAO,IAAK,CAAA,YAAA;AAAA;AAChB,EACA,IAAW,WAAuB,GAAA;AAC9B,IAAA,OAAO,IAAK,CAAA,YAAA;AAAA;AAChB,EAEA,IAAW,SAAiB,GAAA;AACxB,IAAA,OAAO,IAAK,CAAA,UAAA;AAAA;AAChB,EAEA,IAAW,MAAkB,GAAA;AACzB,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AAChB,EAEA,IAAW,eAAsC,GAAA;AAC7C,IAAA,OAAO,IAAK,CAAA,gBAAA;AAAA;AAChB,EAEA,IAAW,cAA0C,GAAA;AACjD,IAAA,OAAO,IAAK,CAAA,eAAA;AAAA;AAChB,EAEO,KAAc,GAAA;AACjB,IAAA,MAAA,CAAO,KAAK,KAAO,EAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,EAAE,CAAC,CAAA;AAEvC,IAAA,MAAA,CAAO,KAAK,mBAAqB,EAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AAC1D,IAAO,MAAA,CAAA,IAAA,CAAK,eAAe,MAAO,CAAA,IAAA,CAAK,KAAK,SAAU,CAAA,QAAA,EAAU,CAAC,CAAA;AAEjE,IAAO,MAAA,CAAA,IAAA;AAAA,MACH,mBAAA;AAAA,MACA,IAAA,CAAK,eAAe,MAAO,CAAA,KAAA,CAAM,KAAK,CAAI,GAAA,MAAA,CAAO,OAAO,IAAI;AAAA,KAChE;AACA,IAAO,MAAA,CAAA,IAAA;AAAA,MACH,aAAA;AAAA,MACA,IAAA,CAAK,cAAc,MAAO,CAAA,KAAA,CAAM,SAAS,CAAI,GAAA,MAAA,CAAO,OAAO,UAAU;AAAA,KACzE;AACA,IAAO,MAAA,CAAA,IAAA;AAAA,MACH,aAAA;AAAA,MACA,IAAA,CAAK,cAAc,MAAO,CAAA,KAAA,CAAM,SAAS,CAAI,GAAA,MAAA,CAAO,OAAO,UAAU;AAAA,KACzE;AAEA,IAAA,MAAA,CAAO,KAAK,cAAgB,EAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA;AACxD,IAAO,MAAA,CAAA,IAAA,CAAK,WAAa,EAAA,MAAA,CAAO,IAAK,CAAA,YAAA,CAAa,KAAK,OAAS,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AAC9E,IAAO,MAAA,CAAA,IAAA,CAAK,aAAe,EAAA,MAAA,CAAO,IAAK,CAAA,YAAA,CAAa,KAAK,MAAQ,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AAC/E,IAAO,MAAA,CAAA,IAAA,CAAK,YAAc,EAAA,MAAA,CAAO,IAAK,CAAA,YAAA,CAAa,KAAK,QAAU,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AAEhF,IAAO,MAAA,CAAA,IAAA,CAAK,gBAAkB,EAAA,MAAA,CAAO,IAAK,CAAA,YAAA,CAAa,KAAK,WAAa,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AACvF,IAAO,MAAA,CAAA,IAAA,CAAK,gBAAkB,EAAA,MAAA,CAAO,IAAK,CAAA,YAAA,CAAa,KAAK,YAAc,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AACxF,IAAO,MAAA,CAAA,IAAA,CAAK,aAAe,EAAA,MAAA,CAAO,IAAK,CAAA,YAAA,CAAa,KAAK,SAAW,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AAElF,IAAO,MAAA,CAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAO,KAAM,CAAA,KAAK,CAAI,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,CAAC,CAAA;AAAA;AAEvF,CAAA;AC7KO,IAAM,cAAA,GAAN,cAA6B,WAAuC,CAAA;AAAA,EAC7D,YAAA;AAAA,EAEV,WAAY,CAAA,EAAE,WAAa,EAAA,GAAG,SAAkC,EAAA;AAC5D,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAA,IAAA,CAAK,eAAe,WAAe,IAAA,SAAA;AAAA;AACvC,EAEA,IAAW,WAAsB,GAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,YAAA;AAAA;AAChB,EAEgB,KAAc,GAAA;AAC1B,IAAA,KAAA,CAAM,KAAM,EAAA;AAEZ,IAAAC,MAAAA,CAAO,IAAK,CAAA,kBAAA,EAAoBC,MAAO,CAAA,IAAA,CAAK,YAAa,CAAA,IAAA,CAAK,WAAa,EAAA,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA;AAAA;AAEjG,CAAA;ACjBO,IAAM,eAAA,GAAN,cAA8B,WAAwC,CAAA;AAAA,EAC/D,iBAAA;AAAA,EAEV,WAAY,CAAA,EAAE,gBAAkB,EAAA,GAAG,SAAmC,EAAA;AAClE,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAA,IAAA,CAAK,iBAAoB,GAAA,YAAA;AAAA,MACrB,OAAQ,CAAA,OAAA;AAAA,MACR,gBAAoB,IAAA;AAAA,KACxB;AAAA;AACJ,EAEA,IAAW,gBAAkC,GAAA;AACzC,IAAA,OAAO,IAAK,CAAA,iBAAA;AAAA;AAChB,EAEgB,KAAc,GAAA;AAC1B,IAAA,KAAA,CAAM,KAAM,EAAA;AAEZ,IAAAD,MAAO,CAAA,IAAA;AAAA,MACH,qBAAA;AAAA,MACA,IAAK,CAAA,gBAAA,GACCC,MAAO,CAAA,IAAA,CAAK,YAAa,CAAA,IAAA,CAAK,gBAAkB,EAAA,IAAA,CAAK,OAAO,CAAC,CAC7DA,GAAAA,MAAAA,CAAO,OAAO,WAAW;AAAA,KACnC;AAAA;AAER,CAAA;;;ACvCO,IAAM,SAAY,GAAA;AAAA,EACrB,SAAW,EAAA,WAAA;AAAA,EACX,QAAU,EAAA;AACd;;;ACHO,IAAM,OAAU,GAAA;AAAA,EACnB,WAAa,EAAA,aAAA;AAAA,EACb,UAAY,EAAA,YAAA;AAAA,EACZ,IAAM,EAAA;AACV;;;ACEO,SAAS,eAAe,OAAsC,EAAA;AACjE,EAAA,QAAQ,IAAM;AAAA,IACV,KAAK,OAAQ,CAAA,SAAA,KAAc,SAAU,CAAA,QAAA;AACjC,MAAO,OAAA,IAAI,eAAe,OAAO,CAAA;AAAA,IACrC,KAAK,OAAQ,CAAA,SAAA,KAAc,SAAU,CAAA,SAAA;AACjC,MAAO,OAAA,IAAI,gBAAgB,OAAO,CAAA;AAAA,IACtC;AACI,MAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA;AAAA;AAErD;ACVO,SAAS,UAAW,CAAA,OAAA,EAAiB,WAAwB,GAAA,CAAC,MAAM,CAAa,EAAA;AACpF,EAAA,MAAM,iBAA2B,EAAC;AAElC,EAAA,WAAA,CACK,IAAI,CAAC,IAAA,KAASF,KAAK,IAAK,CAAA,OAAA,EAAS,IAAI,CAAC,CAAA,CACtC,OAAO,CAAC,IAAA,KAASD,IAAG,UAAW,CAAA,IAAI,CAAC,CACpC,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACf,IAAO,MAAA,CAAA,EAAE,IAAM,EAAA,IAAA,EAAM,CAAA;AACrB,IAAA,cAAA,CAAe,KAAK,IAAI,CAAA;AAAA,GAC3B,CAAA;AAEL,EAAO,OAAA,cAAA;AACX;;;ACVO,SAAS,WAAA,CAAY,SAAiB,GAAkB,EAAA;AAC3D,EAAM,MAAA,cAAA,GAAiB,WAAW,OAAO,CAAA;AAEzC,EAAAE,MAAAA,CAAO,KAAK,qCAAqC,CAAA;AACjD,EAAI,IAAA,cAAA,CAAe,WAAW,CAAG,EAAA;AAC7B,IAAAA,OAAO,GAAI,CAAA,KAAA,EAAOC,MAAO,CAAA,GAAA,CAAI,4BAA4B,CAAC,CAAA;AAAA,GACvD,MAAA;AACH,IAAe,cAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC7B,MAAAD,MAAAA,CAAO,IAAI,KAAOC,EAAAA,MAAAA,CAAO,KAAK,YAAa,CAAA,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAAA,KAC7D,CAAA;AAAA;AAGL,EAAA,OAAA,CAAQ,IAAI,QAAa,KAA2C,OAAQ,CAAA,UAAA;AAE5E,EAAI,IAAA,CAAE,OAAO,MAAO,CAAA,OAAO,EAAe,QAAS,CAAA,OAAA,CAAQ,GAAI,CAAA,QAAQ,CAAG,EAAA;AACtE,IAAA,MAAM,IAAI,KAAA;AAAA,MACN,CAAA,kBAAA,EAAqB,OAAQ,CAAA,GAAA,CAAI,QAAQ,CAAA,oBAAA,EAAuB,MAAO,CAAA,MAAA,CAAO,OAAO,CAAA,CAAE,IAAK,CAAA,IAAI,CAAC,CAAA;AAAA,KACrG;AAAA;AAGJ,EAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,CAAI,YAAkB,MAAA,IAAI,MAAM,6CAA6C,CAAA;AAE1F,EAAI,IAAA,SAAA;AACJ,EAAI,IAAA;AACA,IAAA,SAAA,GAAY,IAAI,GAAA,CAAI,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,GACtC,CAAA,MAAA;AACJ,IAAA,MAAM,IAAI,KAAM,CAAA,CAAA,oBAAA,EAAuB,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAuB,qBAAA,CAAA,CAAA;AAAA;AAGxF,EAAO,OAAA;AAAA,IACH,OAAA,EAAS,QAAQ,GAAI,CAAA,QAAA;AAAA,IACrB;AAAA,GACJ;AACJ;;;ACxCO,IAAM,YAAe,GAAA,yBAAA;AACrB,IAAM,eAAkB,GAAA,4BAAA;AACxB,IAAM,aAAgB,GAAA,UAAA;AACtB,IAAM,0BAA6B,GAAA,2BAAA;AACnC,IAAM,2BAA8B,GAAA,4BAAA;;;ACO3C,IAAM,EAAE,iBAAmB,EAAA,sBAAA,EAA2B,GAAA,OAAA;AAEtD,IAAMC,QAAAA,GAAU,aAAc,CAAA,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAEtC,IAAM,gBAAA,GAA+B,CAAC,OAAA,EAASC,OAAW,KAAA;AAC7D,EAAO,OAAA;AAAA,IACH,UAAY,EAAA,MAAA;AAAA,IAEZ,SAAS,OAAQ,CAAA,OAAA;AAAA,IAEjB,IAAA,EAAM,OAAQ,CAAA,YAAA,GAAe,YAAe,GAAA,aAAA;AAAA,IAE5C,OAAS,EAAA;AAAA,MACL,UAAA,EAAY,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,MACzB,cAAgB,EAAA;AAAA,QACZ,KAAA,EAAO,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,QACpB,MAAA,EAAQ,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,QACvB,MAAA,EAAQ,CAAC,MAAA,EAAQ,MAAM;AAAA,OAC3B;AAAA,MACA,OAAA,EAAS,CAAC,IAAI,mBAAA,CAAoB,EAAE,UAAY,EAAA,OAAA,CAAQ,YAAa,EAAC,CAAC;AAAA,KAC3E;AAAA,IAEA,MAAQ,EAAA;AAAA,MACJ,UAAA,EAAYA,OAAO,CAAA,IAAA,IAAQ,OAAQ,CAAA,EAAA;AAAA,MACnC,gBAAA,EAAkBA,OAAO,CAAA,IAAA,IAAQ,OAAQ,CAAA,EAAA;AAAA,MACzC,MAAM,OAAQ,CAAA,MAAA;AAAA,MACd,KAAO,EAAA,IAAA;AAAA,MACP,aAAA,EAAe,OAAQ,CAAA,YAAA,GAAe,0BAA6B,GAAA;AAAA,KACvE;AAAA,IAEA,YAAA,EAAc,EAAE,QAAA,EAAU,KAAM,EAAA;AAAA,IAChC,KAAA,EAAO,EAAE,YAAA,EAAc,IAAK,EAAA;AAAA,IAE5B,MAAQ,EAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACH;AAAA,UACI,IAAM,EAAA,YAAA;AAAA,UACN,OAAA,EAAS,CAAC,SAAA,EAAW,iBAAiB,CAAA;AAAA,UACtC,GAAK,EAAA;AAAA,YACD,QAAQ,MACF,GAAA;AAAA,cACI,MAAA,EAAQD,QAAQ,CAAA,OAAA,CAAQ,YAAY,CAAA;AAAA,cACpC,OAAS,EAAA;AAAA,gBACL,GAAG,OAAQ,CAAA,eAAA;AAAA,gBACX,MAAQ,EAAA,KAAA;AAAA,gBACR,MAAQ,EAAA;AAAA,kBACJ,GAAG,QAAQ,eAAgB,CAAA,MAAA;AAAA,kBAC3B,IAAM,EAAA;AAAA,iBACV;AAAA,gBACA,GAAK,EAAA;AAAA,kBACD,GAAG,QAAQ,eAAgB,CAAA,GAAA;AAAA,kBAC3B,MAAQ,EAAA;AAAA,oBACJ,GAAG,OAAQ,CAAA,eAAA,CAAgB,GAAK,EAAA,MAAA;AAAA,oBAChC,MAAQ,EAAA;AAAA,mBACZ;AAAA,kBACA,SAAW,EAAA;AAAA,oBACP,GAAG,OAAQ,CAAA,eAAA,CAAgB,GAAK,EAAA,SAAA;AAAA,oBAChC,uBAAyB,EAAA;AAAA,mBAC7B;AAAA,kBACA,cAAgB,EAAA,IAAA;AAAA,kBAChB,eAAiB,EAAA;AAAA;AACrB;AACJ,aAEJ,GAAA;AAAA,cACI,MAAA,EAAQA,QAAQ,CAAA,OAAA,CAAQ,WAAW,CAAA;AAAA,cACnC,OAAS,EAAA;AAAA,gBACL,GAAG,OAAQ,CAAA;AAAA;AACf;AACJ;AACV;AACJ;AACJ,KACJ;AAAA,IAEA,OAAS,EAAA;AAAA,MACL,IAAI,iBAAkB,CAAA;AAAA,QAClB,GAAG,OAAQ,CAAA,OAAA;AAAA,QACX,UAAU,OAAQ,CAAA,OAAA;AAAA,QAClB,UAAA,EAAY,OAAQ,CAAA,SAAA,CAAU,QAAS;AAAA,OAC1C,CAAA;AAAA,MACD,GAAI,QAAQ,YACN,GAAA;AAAA,QACI,IAAI,sBAAuB,CAAA;AAAA,UACvB,SAAA,EAAWC,OAAO,CAAA,IAAA,IAAQ,OAAQ,CAAA,EAAA;AAAA,UAClC,QAAU,EAAA,YAAA;AAAA,UACV,SAAW,EAAA;AAAA,SACd,CAAA;AAAA,QACD,IAAI,oBAAqB,CAAA;AAAA,UACrB,YAAc,EAAA,QAAA;AAAA,UACd,iBAAmB,EAAA,IAAA;AAAA,UACnB,gBAAgBJ,IAAK,CAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,EAAQ,YAAY,aAAa,CAAA;AAAA,UACnE,eAAeA,IAAK,CAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,EAAQ,YAAY,YAAY,CAAA;AAAA,UACjE,YAAc,EAAA;AAAA,SACjB;AAAA,UAEL;AAAC,KACX,CAAE,OAAO,OAAO,CAAA;AAAA,IAEhB,KAAA,EAAO,CAAC,OAAA,CAAQ,YACV,GAAA;AAAA,MACI,IAAM,EAAA,YAAA;AAAA,MACN,gBAAgB,OAAQ,CAAA;AAAA,KAE5B,GAAA;AAAA,GACV;AACJ,CAAA;AC1GA,IAAM,EAAE,4BAA+BK,GAAAA,OAAAA;AAEvC,IAAMF,QAAAA,GAAUG,aAAc,CAAA,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAEtC,IAAM,mBAAA,GAAkC,CAAC,OAAY,KAAA;AACxD,EAAA,IAAI,EAAE,OAAmB,YAAA,cAAA,CAAA,EAAuB,MAAA,IAAI,MAAM,iBAAiB,CAAA;AAE3E,EAAO,OAAA;AAAA,IACH,UAAY,EAAA,UAAA;AAAA,IAEZ,OAAA,EAAS,OAAQ,CAAA,YAAA,GAAe,KAAQ,GAAA,mBAAA;AAAA,IAExC,MAAQ,EAAA,MAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACF,SAAW,EAAA,KAAA;AAAA,MACX,UAAY,EAAA;AAAA,KAChB;AAAA,IAEA,gBAAA,EAAkB,EAAE,IAAA,EAAM,IAAK,EAAA;AAAA,IAC/B,SAAW,EAAA;AAAA,MACP,aAAA;AAAA,QACI,QAAQ,WAAc,GAAA,EAAE,WAAW,CAAC,sBAAsB,GAAM,GAAA;AAAA;AACpE,KACJ;AAAA,IAEA,KAAA,EAAO,CAAC,GAAI,OAAQ,CAAA,WAAA,GAAc,CAAC,sBAAsB,CAAI,GAAA,EAAK,EAAA,OAAA,CAAQ,SAAS,CAAA;AAAA,IAEnF,MAAQ,EAAA;AAAA,MACJ,UAAU,OAAQ,CAAA;AAAA,KACtB;AAAA,IAEA,MAAQ,EAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACH;AAAA,UACI,IAAM,EAAA,YAAA;AAAA,UACN,GAAK,EAAA;AAAA,YACD,QAAQ,MACF,GAAA;AAAA,cACI,MAAA,EAAQH,QAAQ,CAAA,OAAA,CAAQ,YAAY,CAAA;AAAA,cACpC,OAAS,EAAA;AAAA,gBACL,GAAK,EAAA;AAAA,kBACD,MAAQ,EAAA,QAAA;AAAA,kBACR,MAAQ,EAAA;AAAA,oBACJ,MAAQ,EAAA,YAAA;AAAA,oBACR,UAAY,EAAA,IAAA;AAAA,oBACZ,aAAe,EAAA;AAAA,mBACnB;AAAA,kBACA,SAAW,EAAA;AAAA,oBACP,eAAiB,EAAA,IAAA;AAAA,oBACjB,iBAAmB,EAAA;AAAA;AACvB;AACJ;AACJ,aAEJ,GAAA;AAAA,cACI,MAAA,EAAQA,QAAQ,CAAA,OAAA,CAAQ,WAAW,CAAA;AAAA,cACnC,SAAS;AAAC;AACd;AACV;AACJ;AACJ,KACJ;AAAA,IAEA,OAAA,EAAS,QAAQ,WACX,GAAA;AAAA,MACI,IAAI,0BAA2B,EAAA;AAAA,MAC/B,IAAI,sBAAuB,CAAA;AAAA,QACvB,MAAM,OAAQ,CAAA,WAAA;AAAA,QACd,WAAa,EAAA;AAAA,OAChB;AAAA,QAEL;AAAC,GACX;AACJ,CAAA;ACnEA,IAAMA,QAAAA,GAAUG,aAAc,CAAA,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAEtC,IAAM,oBAAA,GAAmC,CAAC,OAAY,KAAA;AACzD,EAAA,IAAI,EAAE,OAAmB,YAAA,eAAA,CAAA,EAAwB,MAAA,IAAI,MAAM,iBAAiB,CAAA;AAE5E,EAAO,OAAA;AAAA,IACH,UAAY,EAAA,WAAA;AAAA,IAEZ,OAAA,EAAS,OAAQ,CAAA,YAAA,GAAe,KAAQ,GAAA,iBAAA;AAAA,IAExC,MAAQ,EAAA,KAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACF,SAAW,EAAA,IAAA;AAAA,MACX,UAAY,EAAA;AAAA,KAChB;AAAA,IAEA,OAAS,EAAA;AAAA,MACL,UAAA,EAAY,CAAC,MAAA,EAAQ,MAAM;AAAA,KAC/B;AAAA,IAEA,gBAAA,EAAkB,EAAE,GAAA,EAAK,IAAK,EAAA;AAAA,IAE9B,YAAc,EAAA;AAAA,MACV,UAAU,OAAQ,CAAA,YAAA;AAAA,MAClB,SAAW,EAAA,eAAA;AAAA,MACX,YAAc,EAAA,QAAA;AAAA,MACd,WAAa,EAAA;AAAA,QACT,MAAQ,EAAA;AAAA;AACZ,KACJ;AAAA,IAEA,KAAA,EAAO,CAAC,OAAA,CAAQ,SAAS,CAAA;AAAA,IAEzB,MAAQ,EAAA;AAAA,MACJ,QAAA,EAAU,OAAQ,CAAA,YAAA,GAAe,0BAA6B,GAAA,WAAA;AAAA,MAC9D,UAAA,EAAY,OAAQ,CAAA,SAAA,CAAU,QAAS;AAAA,KAC3C;AAAA,IAEA,MAAQ,EAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACH;AAAA,UACI,IAAM,EAAA,YAAA;AAAA,UACN,GAAK,EAAA;AAAA,YACD,QAAQ,MACF,GAAA;AAAA,cACI,MAAA,EAAQH,QAAQ,CAAA,OAAA,CAAQ,YAAY,CAAA;AAAA,cACpC,OAAS,EAAA;AAAA,gBACL,QAAQ,OAAQ,CAAA,YAAA;AAAA,gBAChB,GAAK,EAAA;AAAA,kBACD,MAAQ,EAAA,KAAA;AAAA,kBACR,MAAQ,EAAA;AAAA,oBACJ,MAAQ,EAAA,YAAA;AAAA,oBACR,GAAK,EAAA;AAAA,mBACT;AAAA,kBACA,SAAW,EAAA;AAAA,oBACP,KAAO,EAAA;AAAA,sBACH,OAAS,EAAA,WAAA;AAAA,sBACT,SAAS,OAAQ,CAAA;AAAA;AACrB;AACJ;AACJ;AACJ,aAEJ,GAAA;AAAA,cACI,MAAA,EAAQA,QAAQ,CAAA,OAAA,CAAQ,WAAW,CAAA;AAAA,cACnC,SAAS;AAAC;AACd;AACV,SACJ;AAAA,QACA;AAAA,UACI,IAAM,EAAA,aAAA;AAAA,UACN,GAAK,EAAA;AAAA,YACD,oBAAqB,CAAA,MAAA;AAAA,YACrB;AAAA,cACI,MAAA,EAAQA,QAAQ,CAAA,OAAA,CAAQ,YAAY;AAAA,aACxC;AAAA,YACA;AAAA,cACI,MAAA,EAAQA,QAAQ,CAAA,OAAA,CAAQ,gBAAgB,CAAA;AAAA,cACxC,OAAS,EAAA;AAAA,gBACL,cAAA,EAAgBA,QAAQ,CAAA,OAAA,CAAQ,SAAS,CAAA;AAAA,gBACzC,cAAgB,EAAA;AAAA,kBACZ,OAAS,EAAA,CAACA,QAAQ,CAAA,OAAA,CAAQ,sBAAsB,CAAC;AAAA;AACrD;AACJ;AACJ;AACJ,SACJ;AAAA,QACA;AAAA,UACI,IAAM,EAAA,eAAA;AAAA,UACN,GAAK,EAAA;AAAA,YACD;AAAA,cACI,MAAA,EAAQA,QAAQ,CAAA,OAAA,CAAQ,YAAY;AAAA;AACxC;AACJ;AACJ;AACJ,KACJ;AAAA,IAEA,OAAS,EAAA;AAAA,MACL,IAAI,oBAAqB,CAAA;AAAA,QACrB,QAAA,EAAU,OAAQ,CAAA,YAAA,GAAe,2BAA8B,GAAA;AAAA,OAClE,CAAA;AAAA,MACD,GAAI,OAAA,CAAQ,gBACN,GAAA,CAAC,IAAI,iBAAA,CAAkB,EAAE,QAAA,EAAU,OAAQ,CAAA,gBAAA,EAAkB,CAAC,IAC9D,EAAC;AAAA,MACP,GAAI,OAAA,CAAQ,WACN,GAAA,CAAC,IAAI,yBAA0B,CAAA,EAAE,OAAS,EAAA,EAAE,iBAAiB,KAAM,EAAA,EAAG,CAAC,IACvE;AAAC,KACX;AAAA,IAEA,GAAI,QAAQ,WACN,GAAA;AAAA,MACI,SAAW,EAAA;AAAA,QACP,kBAAoB,EAAA,IAAA;AAAA,QACpB,IAAA,EAAM,OAAQ,CAAA,SAAA,CAAU,QAAY,IAAA,MAAA;AAAA,QACpC,IAAA,EAAM,OAAQ,CAAA,SAAA,CAAU,IAAQ,IAAA,MAAA;AAAA,QAChC,GAAK,EAAA,IAAA;AAAA,QACL,OAAS,EAAA;AAAA,UACL,6BAA+B,EAAA,GAAA;AAAA,UAC/B,8BAAgC,EAAA,wCAAA;AAAA,UAChC,8BACI,EAAA;AAAA;AACR;AACJ,QAEJ;AAAC,GACX;AACJ,CAAA;AC9IO,IAAM,cAAc,cAAe,CAAA;AAAA,EACtC,MAAQ,EAAA;AAAA,IACJ,KAAO,EAAA;AAAA,MACH,IAAM,EAAA,OAAA;AAAA,MACN,GAAK,EAAA;AAAA,QACD,MAAQ,EAAA,OAAA;AAAA,QACR,OAAS,EAAA;AAAA;AACb;AACJ;AAER,CAAC;;;ACPM,SAAS,YAAA,CAAa,SAAsB,OAAuB,EAAA;AACtE,EAAA,MAAM,gBAA0B,EAAC;AAEjC,EAAA,MAAMC,OAA+B,GAAA,OAAA,CAAQ,MAAO,CAAA,CAAC,KAAK,UAAe,KAAA;AACrE,IAAA,MAAM,EAAE,UAAY,EAAA,GAAG,QAAW,GAAA,UAAA,CAAW,SAAS,GAAG,CAAA;AACzD,IAAA,aAAA,CAAc,KAAK,UAAU,CAAA;AAC7B,IAAO,OAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AAAA,GAClC,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,EAAE,MAAAA,EAAAA,OAAAA,EAAQ,aAAc,EAAA;AACnC;;;ACKO,SAAS,wBAAA,CACZ,SACA,UACF,EAAA;AACE,EAAA,OAAO,eAAgB,GAAiD,EAAA;AACpE,IAAA,MAAM,EAAE,OAAA,EAAS,SAAU,EAAA,GAAI,YAAY,OAAO,CAAA;AAClD,IAAM,MAAA,OAAA,GAAU,MAAM,UAAW,EAAA;AAEjC,IAAA,MAAM,cAAiC,GAAA;AAAA,MACnC,GAAG,OAAA;AAAA,MACH,OAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA,EAAc,YAAY,OAAQ,CAAA,WAAA;AAAA,MAClC,WAAA,EAAa,KAAK,aAAiB,IAAA,KAAA;AAAA,MACnC,WAAA,EAAa,KAAK,aAAiB,IAAA,KAAA;AAAA,MACnC;AAAA,KACJ;AAEA,IAAM,MAAA,OAAA,GAAU,eAAe,cAAc,CAAA;AAC7C,IAAA,OAAA,CAAQ,KAAM,EAAA;AAEd,IAAA,MAAM,EAAE,aAAe,EAAA,MAAA,EAAAA,OAAO,EAAA,GAAI,aAAa,OAAS,EAAA;AAAA,MACpD,gBAAA;AAAA,MACA,GAAI,OAAmB,YAAA,cAAA,GAAiB,CAAC,mBAAmB,IAAI,EAAC;AAAA,MACjE,GAAI,OAAmB,YAAA,eAAA,GAAkB,CAAC,oBAAoB,IAAI;AAAC,KACtE,CAAA;AAED,IAAAH,MAAAA,CAAO,KAAK,iBAAiB,CAAA;AAC7B,IAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,UAAe,KAAA;AAClC,MAAAA,OAAO,GAAI,CAAA,KAAA,EAAOC,MAAO,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA,KAC5C,CAAA;AAED,IAAOE,OAAAA,OAAAA;AAAA,GACX;AACJ","file":"index.mjs","sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport memoizeOne from 'memoize-one';\n\nfunction _findProjectRoot(currentDir = process.cwd()): string {\n let dir = currentDir;\n\n while (dir !== '/') {\n if (fs.existsSync(path.join(dir, '.git'))) return dir;\n dir = path.dirname(dir);\n }\n\n throw new Error(`Project root not found for directory: ${currentDir}`);\n}\n\nexport const findProjectRoot = memoizeOne(_findProjectRoot);\n","import { findProjectRoot } from './find-project-root.util';\n\nexport function shorternPath(absolutePath: string, currentDir?: string): string {\n const rootDir = findProjectRoot(currentDir);\n return absolutePath.replace(rootDir, '<root>');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { shorternPath } from './shortern-path.util';\n\nexport function findFilePath(currentDir: string, filePath: string): string | null {\n const resolvedPath = path.join(currentDir, filePath);\n return fs.existsSync(resolvedPath) ? resolvedPath : null;\n}\n\nexport function findFilePathOrThrow(currentDir: string, filePath: string): string {\n const resolvedPath = path.join(currentDir, filePath);\n if (!fs.existsSync(resolvedPath))\n throw new Error(`File not found: ${shorternPath(resolvedPath, currentDir)}`);\n return resolvedPath;\n}\n","import path from 'node:path';\n\nimport { colors, logger } from '@jpapini/logger';\nimport type { Config as SwcConfig } from '@swc/types';\nimport type { Options as TsLoaderConfig } from 'ts-loader';\n\nimport type { BuildType, NodeEnv } from '~/enums';\nimport { findFilePathOrThrow } from '~/utils/find-file-path.util';\nimport { findProjectRoot } from '~/utils/find-project-root.util';\nimport { shorternPath } from '~/utils/shortern-path.util';\n\nexport type BaseContextOptions<TBuildType extends BuildType = BuildType> = {\n buildType: TBuildType;\n id: string;\n\n rootDir: string;\n outDir?: string | undefined;\n cacheDir?: string | undefined;\n\n entryFile: string;\n\n nodeEnv: NodeEnv;\n envVars?: Record<string, string | undefined> | undefined;\n\n isProduction: boolean;\n isWatchMode: boolean;\n isDevServer: boolean;\n\n publicUrl: URL;\n\n useSWC?: boolean | undefined;\n swcLoaderConfig?: Partial<SwcConfig> | undefined;\n tsLoaderConfig?: Partial<TsLoaderConfig> | undefined;\n};\n\nexport abstract class BaseContext<TBuildType extends BuildType = BuildType> {\n protected _buildType: TBuildType;\n protected _id: string;\n\n protected _projectDir: string;\n protected _rootDir: string;\n protected _outDir: string;\n protected _cacheDir: string;\n\n protected _pkgJsonFile: string;\n protected _tsconfigFile: string;\n protected _entryFile: string;\n\n protected _nodeEnv: NodeEnv;\n protected _envVars: Record<string, string | undefined>;\n\n protected _isProduction: boolean;\n protected _isWatchMode: boolean;\n protected _isDevServer: boolean;\n\n protected _publicUrl: URL;\n\n protected _useSWC: boolean;\n protected _swcLoaderConfig: Partial<SwcConfig>;\n protected _tsLoaderConfig: Partial<TsLoaderConfig>;\n\n constructor(options: BaseContextOptions<TBuildType>) {\n this._buildType = options.buildType;\n this._id = options.id;\n\n this._projectDir = findProjectRoot(options.rootDir);\n this._rootDir = options.rootDir;\n this._outDir = path.join(options.rootDir, options.outDir ?? 'dist');\n this._cacheDir = path.join(\n options.rootDir,\n options.cacheDir ?? 'node_modules/.cache/webpack',\n );\n\n this._pkgJsonFile = findFilePathOrThrow(options.rootDir, 'package.json');\n this._tsconfigFile = findFilePathOrThrow(options.rootDir, 'tsconfig.json');\n this._entryFile = findFilePathOrThrow(options.rootDir, options.entryFile);\n\n this._nodeEnv = options.nodeEnv;\n this._envVars = options.envVars ?? {};\n\n this._isProduction = options.isProduction;\n this._isWatchMode = options.isWatchMode;\n this._isDevServer = options.isDevServer;\n\n this._publicUrl = options.publicUrl;\n this._publicUrl.pathname += this._publicUrl.pathname.endsWith('/') ? '' : '/';\n\n this._useSWC = options.useSWC ?? false;\n this._swcLoaderConfig = options.swcLoaderConfig ?? {};\n this._tsLoaderConfig = options.tsLoaderConfig ?? {};\n }\n\n public get buildType(): TBuildType {\n return this._buildType;\n }\n public get id(): string {\n return this._id;\n }\n\n public get projectDir(): string {\n return this._projectDir;\n }\n public get rootDir(): string {\n return this._rootDir;\n }\n public get outDir(): string {\n return this._outDir;\n }\n public get cacheDir(): string {\n return this._cacheDir;\n }\n\n public get pkgJsonFile(): string {\n return this._pkgJsonFile;\n }\n public get tsconfigFile(): string {\n return this._tsconfigFile;\n }\n public get entryFile(): string {\n return this._entryFile;\n }\n\n public get nodeEnv(): NodeEnv {\n return this._nodeEnv;\n }\n public get envVars(): Record<string, string | undefined> {\n return this._envVars;\n }\n\n public get isProduction(): boolean {\n return this._isProduction;\n }\n public get isWatchMode(): boolean {\n return this._isWatchMode;\n }\n public get isDevServer(): boolean {\n return this._isDevServer;\n }\n\n public get publicUrl(): URL {\n return this._publicUrl;\n }\n\n public get useSWC(): boolean {\n return this._useSWC;\n }\n\n public get swcLoaderConfig(): Partial<SwcConfig> {\n return this._swcLoaderConfig;\n }\n\n public get tsLoaderConfig(): Partial<TsLoaderConfig> {\n return this._tsLoaderConfig;\n }\n\n public print(): void {\n logger.info('ID:', colors.blue(this.id));\n\n logger.info('Node environment:', colors.blue(this.nodeEnv));\n logger.info('Public URL:', colors.blue(this.publicUrl.toString()));\n\n logger.info(\n 'Production build:',\n this.isProduction ? colors.green('YES') : colors.yellow('NO'),\n );\n logger.info(\n 'Watch mode:',\n this.isWatchMode ? colors.green('ENABLED') : colors.yellow('DISABLED'),\n );\n logger.info(\n 'Dev server:',\n this.isDevServer ? colors.green('ENABLED') : colors.yellow('DISABLED'),\n );\n\n logger.info('Project dir:', colors.blue(this.projectDir));\n logger.info('Root dir:', colors.blue(shorternPath(this.rootDir, this.rootDir)));\n logger.info('Output dir:', colors.blue(shorternPath(this.outDir, this.rootDir)));\n logger.info('Cache dir:', colors.blue(shorternPath(this.cacheDir, this.rootDir)));\n\n logger.info('Manifest file:', colors.blue(shorternPath(this.pkgJsonFile, this.rootDir)));\n logger.info('TSConfig file:', colors.blue(shorternPath(this.tsconfigFile, this.rootDir)));\n logger.info('Entry file:', colors.blue(shorternPath(this.entryFile, this.rootDir)));\n\n logger.info('Use SWC:', this.useSWC ? colors.green('YES') : colors.yellow('NO'));\n }\n}\n","import { colors, logger } from '@jpapini/logger';\n\nimport type { BuildType } from '~/enums';\nimport { shorternPath } from '~/utils/shortern-path.util';\n\nimport { BaseContext } from './base.context';\nimport type { BaseContextOptions } from './base.context';\n\nexport type NestAppContextOptions = BaseContextOptions<typeof BuildType.NEST_APP> & {\n outFilename?: string | undefined;\n};\n\nexport class NestAppContext extends BaseContext<typeof BuildType.NEST_APP> {\n protected _outFilename: string;\n\n constructor({ outFilename, ...options }: NestAppContextOptions) {\n super(options);\n\n this._outFilename = outFilename ?? 'main.js';\n }\n\n public get outFilename(): string {\n return this._outFilename;\n }\n\n public override print(): void {\n super.print();\n\n logger.info('Output filename:', colors.blue(shorternPath(this.outFilename, this.rootDir)));\n }\n}\n","import { colors, logger } from '@jpapini/logger';\n\nimport type { BuildType } from '~/enums';\nimport { findFilePath } from '~/utils/find-file-path.util';\nimport { shorternPath } from '~/utils/shortern-path.util';\n\nimport { BaseContext } from './base.context';\nimport type { BaseContextOptions } from './base.context';\n\nexport type ReactAppContextOptions = BaseContextOptions<typeof BuildType.REACT_APP> & {\n htmlTemplateFile?: string | undefined;\n};\n\nexport class ReactAppContext extends BaseContext<typeof BuildType.REACT_APP> {\n protected _htmlTemplateFile: string | null;\n\n constructor({ htmlTemplateFile, ...options }: ReactAppContextOptions) {\n super(options);\n\n this._htmlTemplateFile = findFilePath(\n options.rootDir,\n htmlTemplateFile ?? 'src/index.html',\n );\n }\n\n public get htmlTemplateFile(): string | null {\n return this._htmlTemplateFile;\n }\n\n public override print(): void {\n super.print();\n\n logger.info(\n 'HTML template file:',\n this.htmlTemplateFile\n ? colors.blue(shorternPath(this.htmlTemplateFile, this.rootDir))\n : colors.yellow('Not found'),\n );\n }\n}\n","export const BuildType = {\n REACT_APP: 'REACT_APP',\n NEST_APP: 'NEST_APP',\n} as const;\n\nexport type BuildType = (typeof BuildType)[keyof typeof BuildType];\n","export const NodeEnv = {\n DEVELOPMENT: 'development',\n PRODUCTION: 'production',\n TEST: 'test',\n} as const;\n\nexport type NodeEnv = (typeof NodeEnv)[keyof typeof NodeEnv];\n","import { NestAppContext, ReactAppContext } from './contexts';\nimport type { BaseContext, NestAppContextOptions, ReactAppContextOptions } from './contexts';\nimport { BuildType } from './enums';\n\nexport type ContextOptions = NestAppContextOptions | ReactAppContextOptions;\n\nexport function contextFactory(options: ContextOptions): BaseContext {\n switch (true) {\n case options.buildType === BuildType.NEST_APP:\n return new NestAppContext(options);\n case options.buildType === BuildType.REACT_APP:\n return new ReactAppContext(options);\n default:\n throw new Error('Invalid context options');\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { config } from 'dotenv';\n\nexport function loadDotenv(rootDir: string, dotenvFiles: string[] = ['.env']): string[] {\n const loadedEnvFiles: string[] = [];\n\n dotenvFiles\n .map((name) => path.join(rootDir, name))\n .filter((file) => fs.existsSync(file))\n .forEach((file) => {\n config({ path: file });\n loadedEnvFiles.push(file);\n });\n\n return loadedEnvFiles;\n}\n","import { colors, logger } from '@jpapini/logger';\n\nimport { NodeEnv } from './enums';\nimport type { WebpackEnv } from './types';\nimport { loadDotenv } from './utils/dotenv.util';\nimport { shorternPath } from './utils/shortern-path.util';\n\nexport function loadEnvVars(rootDir: string, env?: WebpackEnv) {\n const loadedEnvFiles = loadDotenv(rootDir);\n\n logger.info('Loading environment variables from:');\n if (loadedEnvFiles.length === 0) {\n logger.log(' -', colors.red('No environment files found'));\n } else {\n loadedEnvFiles.forEach((file) => {\n logger.log(' -', colors.blue(shorternPath(file, rootDir)));\n });\n }\n\n process.env.NODE_ENV ??= env?.WEBPACK_SERVE ? NodeEnv.DEVELOPMENT : NodeEnv.PRODUCTION;\n\n if (!(Object.values(NodeEnv) as string[]).includes(process.env.NODE_ENV)) {\n throw new Error(\n `Invalid NODE_ENV: ${process.env.NODE_ENV}. Valid values are: ${Object.values(NodeEnv).join(', ')}`,\n );\n }\n\n if (!process.env.PUBLIC_URL) throw new Error('PUBLIC_URL environment variable is required');\n\n let publicUrl: URL;\n try {\n publicUrl = new URL(process.env.PUBLIC_URL);\n } catch {\n throw new Error(`Invalid PUBLIC_URL: ${process.env.PUBLIC_URL}. Must be a valid URL`);\n }\n\n return {\n nodeEnv: process.env.NODE_ENV as NodeEnv,\n publicUrl,\n };\n}\n","export const TS_RULE_TEST = /\\.(?:ts|tsx|cts|mts)$/iu;\nexport const ASSET_RULE_TEST = /\\.(?:jpe?g|png|gif|svg)$/iu;\nexport const CSS_RULE_TEST = /\\.css$/iu;\nexport const HASHED_JS_FILENAME_PATTERN = '[name].[contenthash:8].js';\nexport const HASHED_CSS_FILENAME_PATTERN = '[name].[contenthash:8].css';\n","import { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport type { Config as SwcConfig } from '@swc/types';\nimport TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';\nimport webpack from 'webpack';\nimport { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';\n\nimport { HASHED_JS_FILENAME_PATTERN, TS_RULE_TEST } from '~/constants';\nimport type { PresetFunc } from '~/types';\n\nconst { EnvironmentPlugin, SourceMapDevToolPlugin } = webpack;\n\nconst require = createRequire(import.meta.url);\n\nexport const createBasePreset: PresetFunc = (context, config) => {\n return {\n presetName: 'base',\n\n context: context.rootDir,\n\n mode: context.isProduction ? 'production' : 'development',\n\n resolve: {\n extensions: ['.js', '.ts'],\n extensionAlias: {\n '.js': ['.js', '.ts'],\n '.cjs': ['.cjs', '.cts'],\n '.mjs': ['.mjs', '.mts'],\n },\n plugins: [new TsconfigPathsPlugin({ configFile: context.tsconfigFile })],\n },\n\n output: {\n uniqueName: config.name ?? context.id,\n devtoolNamespace: config.name ?? context.id,\n path: context.outDir,\n clean: true,\n chunkFilename: context.isProduction ? HASHED_JS_FILENAME_PATTERN : '[name].js',\n },\n\n optimization: { minimize: false },\n stats: { errorDetails: true },\n\n module: {\n rules: [\n {\n test: TS_RULE_TEST,\n exclude: [/dist\\//u, /node_modules\\//u],\n use: [\n context.useSWC\n ? {\n loader: require.resolve('swc-loader'),\n options: {\n ...context.swcLoaderConfig,\n minify: false,\n module: {\n ...context.swcLoaderConfig.module,\n type: 'nodenext',\n },\n jsc: {\n ...context.swcLoaderConfig.jsc,\n parser: {\n ...context.swcLoaderConfig.jsc?.parser,\n syntax: 'typescript',\n },\n transform: {\n ...context.swcLoaderConfig.jsc?.transform,\n useDefineForClassFields: true,\n },\n keepClassNames: true,\n externalHelpers: false,\n },\n } satisfies SwcConfig,\n }\n : {\n loader: require.resolve('ts-loader'),\n options: {\n ...context.tsLoaderConfig,\n },\n },\n ],\n },\n ],\n },\n\n plugins: [\n new EnvironmentPlugin({\n ...context.envVars,\n NODE_ENV: context.nodeEnv,\n PUBLIC_URL: context.publicUrl.toString(),\n }),\n ...(context.isProduction\n ? [\n new SourceMapDevToolPlugin({\n namespace: config.name ?? context.id,\n filename: '[file].map',\n noSources: false,\n }),\n new BundleAnalyzerPlugin({\n analyzerMode: 'static',\n generateStatsFile: true,\n reportFilename: path.join(context.outDir, 'analyzer', 'report.html'),\n statsFilename: path.join(context.outDir, 'analyzer', 'stats.json'),\n openAnalyzer: false,\n }),\n ]\n : []),\n ].filter(Boolean),\n\n cache: !context.isProduction\n ? {\n type: 'filesystem',\n cacheDirectory: context.cacheDir,\n }\n : false,\n };\n};\n","import { createRequire } from 'node:module';\n\nimport type { Config as SwcConfig } from '@swc/types';\nimport { RunScriptWebpackPlugin } from 'run-script-webpack-plugin';\nimport webpack from 'webpack';\nimport nodeExternals from 'webpack-node-externals';\n\nimport { TS_RULE_TEST } from '~/constants';\nimport { NestAppContext } from '~/contexts';\nimport type { PresetFunc } from '~/types';\n\nconst { HotModuleReplacementPlugin } = webpack;\n\nconst require = createRequire(import.meta.url);\n\nexport const createNestAppPreset: PresetFunc = (context) => {\n if (!(context instanceof NestAppContext)) throw new Error('Invalid context');\n\n return {\n presetName: 'nest-app',\n\n devtool: context.isProduction ? false : 'inline-source-map',\n\n target: 'node',\n node: {\n __dirname: false,\n __filename: false,\n },\n\n externalsPresets: { node: true },\n externals: [\n nodeExternals(\n context.isWatchMode ? { allowlist: ['webpack/hot/poll?100'] } : undefined,\n ),\n ],\n\n entry: [...(context.isWatchMode ? ['webpack/hot/poll?100'] : []), context.entryFile],\n\n output: {\n filename: context.outFilename,\n },\n\n module: {\n rules: [\n {\n test: TS_RULE_TEST,\n use: [\n context.useSWC\n ? {\n loader: require.resolve('swc-loader'),\n options: {\n jsc: {\n target: 'es2022',\n parser: {\n syntax: 'typescript',\n decorators: true,\n dynamicImport: true,\n },\n transform: {\n legacyDecorator: true,\n decoratorMetadata: true,\n },\n },\n } satisfies SwcConfig,\n }\n : {\n loader: require.resolve('ts-loader'),\n options: {},\n },\n ],\n },\n ],\n },\n\n plugins: context.isWatchMode\n ? [\n new HotModuleReplacementPlugin(),\n new RunScriptWebpackPlugin({\n name: context.outFilename,\n autoRestart: false,\n }),\n ]\n : [],\n };\n};\n","import { createRequire } from 'node:module';\n\nimport ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';\nimport type { Config as SwcConfig } from '@swc/types';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\n\nimport {\n ASSET_RULE_TEST,\n CSS_RULE_TEST,\n HASHED_CSS_FILENAME_PATTERN,\n HASHED_JS_FILENAME_PATTERN,\n TS_RULE_TEST,\n} from '~/constants';\nimport { ReactAppContext } from '~/contexts';\nimport type { PresetFunc } from '~/types';\n\nconst require = createRequire(import.meta.url);\n\nexport const createReactAppPreset: PresetFunc = (context) => {\n if (!(context instanceof ReactAppContext)) throw new Error('Invalid context');\n\n return {\n presetName: 'react-app',\n\n devtool: context.isProduction ? false : 'eval-source-map',\n\n target: 'web',\n node: {\n __dirname: true,\n __filename: true,\n },\n\n resolve: {\n extensions: ['.jsx', '.tsx'],\n },\n\n externalsPresets: { web: true },\n\n optimization: {\n minimize: context.isProduction,\n moduleIds: 'deterministic',\n runtimeChunk: 'single',\n splitChunks: {\n chunks: 'all',\n },\n },\n\n entry: [context.entryFile],\n\n output: {\n filename: context.isProduction ? HASHED_JS_FILENAME_PATTERN : '[name].js',\n publicPath: context.publicUrl.toString(),\n },\n\n module: {\n rules: [\n {\n test: TS_RULE_TEST,\n use: [\n context.useSWC\n ? {\n loader: require.resolve('swc-loader'),\n options: {\n minify: context.isProduction,\n jsc: {\n target: 'es5',\n parser: {\n syntax: 'typescript',\n tsx: true,\n },\n transform: {\n react: {\n runtime: 'automatic',\n refresh: context.isDevServer,\n },\n },\n },\n } satisfies SwcConfig,\n }\n : {\n loader: require.resolve('ts-loader'),\n options: {},\n },\n ],\n },\n {\n test: CSS_RULE_TEST,\n use: [\n MiniCssExtractPlugin.loader,\n {\n loader: require.resolve('css-loader'),\n },\n {\n loader: require.resolve('postcss-loader'),\n options: {\n implementation: require.resolve('postcss'),\n postcssOptions: {\n plugins: [require.resolve('@tailwindcss/postcss')],\n },\n },\n },\n ],\n },\n {\n test: ASSET_RULE_TEST,\n use: [\n {\n loader: require.resolve('url-loader'),\n },\n ],\n },\n ],\n },\n\n plugins: [\n new MiniCssExtractPlugin({\n filename: context.isProduction ? HASHED_CSS_FILENAME_PATTERN : '[name].css',\n }),\n ...(context.htmlTemplateFile\n ? [new HtmlWebpackPlugin({ template: context.htmlTemplateFile })]\n : []),\n ...(context.isDevServer\n ? [new ReactRefreshWebpackPlugin({ overlay: { sockIntegration: 'whm' } })]\n : []),\n ],\n\n ...(context.isDevServer\n ? {\n devServer: {\n historyApiFallback: true,\n host: context.publicUrl.hostname || undefined,\n port: context.publicUrl.port || undefined,\n hot: true,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers':\n 'X-Requested-With, content-type, Authorization',\n },\n },\n }\n : {}),\n };\n};\n","import { mergeWithRules } from 'webpack-merge';\n\nexport const mergeConfig = mergeWithRules({\n module: {\n rules: {\n test: 'match',\n use: {\n loader: 'match',\n options: 'merge',\n },\n },\n },\n});\n","import type { BaseContext } from '~/contexts/base.context';\nimport type { PresetFunc, WebpackConfiguration } from '~/types';\n\nimport { mergeConfig } from './merge-config.util';\n\nexport function mergePresets(context: BaseContext, presets: PresetFunc[]) {\n const loadedPresets: string[] = [];\n\n const config: WebpackConfiguration = presets.reduce((acc, presetFunc) => {\n const { presetName, ...preset } = presetFunc(context, acc);\n loadedPresets.push(presetName);\n return mergeConfig(acc, preset);\n }, {});\n\n return { config, loadedPresets };\n}\n","import { colors, logger } from '@jpapini/logger';\n\nimport { contextFactory } from './context.factory';\nimport type { ContextOptions } from './context.factory';\nimport { NestAppContext, ReactAppContext } from './contexts';\nimport { NodeEnv } from './enums';\nimport { loadEnvVars } from './load-env-vars';\nimport { createBasePreset, createNestAppPreset, createReactAppPreset } from './presets';\nimport type { WebpackConfiguration, WebpackEnv } from './types';\nimport { mergePresets } from './utils/merge-presets.util';\n\ntype KeysOfUnion<T> = T extends unknown ? keyof T : never;\n\ntype DistributedOmit<T, K extends KeysOfUnion<T>> = T extends unknown ? Omit<T, K> : never;\n\nexport type CreateBuildConfigurationOptions = DistributedOmit<\n ContextOptions,\n 'rootDir' | 'nodeEnv' | 'isProduction' | 'isDevServer' | 'isWatchMode' | 'publicUrl'\n>;\n\nexport function createBuildConfiguration(\n rootDir: string,\n getOptions: () => CreateBuildConfigurationOptions | Promise<CreateBuildConfigurationOptions>,\n) {\n return async function (env?: WebpackEnv): Promise<WebpackConfiguration> {\n const { nodeEnv, publicUrl } = loadEnvVars(rootDir);\n const options = await getOptions();\n\n const contextOptions: ContextOptions = {\n ...options,\n rootDir,\n nodeEnv,\n isProduction: nodeEnv !== NodeEnv.DEVELOPMENT,\n isDevServer: env?.WEBPACK_SERVE ?? false,\n isWatchMode: env?.WEBPACK_WATCH ?? false,\n publicUrl,\n };\n\n const context = contextFactory(contextOptions);\n context.print();\n\n const { loadedPresets, config } = mergePresets(context, [\n createBasePreset,\n ...(context instanceof NestAppContext ? [createNestAppPreset] : []),\n ...(context instanceof ReactAppContext ? [createReactAppPreset] : []),\n ]);\n\n logger.info('Loaded presets:');\n loadedPresets.forEach((presetName) => {\n logger.log(' -', colors.blue(presetName));\n });\n\n return config;\n };\n}\n"]}