bernova 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,11 +5,25 @@ All notable changes to Bernova will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [1.1.1] - 2026-01-13
8
+ ## [1.2.0] - 2026-01-14
9
9
 
10
10
  ### New Features
11
11
 
12
- - **Added cli flags**: Added flags to overwrite css, tools and provider customOutDirs
12
+ - **Added new bv-build cli flags**: Added flags to overwrite baseOutDir, rootDir, preventMoveJS, preventMoveDTS and set preventProcessJS
13
+
14
+ ### Fixed
15
+
16
+ - **Prevent minify declaration files**: Prevent minify with terser the typescript declaration files
17
+
18
+ ### Documentation
19
+
20
+ - **Added the new flags documentation**: Added the documentation about the new flags cases
21
+
22
+ ## [1.1.0] - 2026-01-13
23
+
24
+ ### New Features
25
+
26
+ - **Added cli bv-build flags**: Added flags to overwrite css, tools and provider customOutDirs
13
27
 
14
28
  ### Documentation
15
29
 
package/README.md CHANGED
@@ -1870,4 +1870,30 @@ npx bv-build --provider dist/custom/output
1870
1870
 
1871
1871
  # full case
1872
1872
  npx bv-build --css dist/custom/output --tools dist/custom/output --provider dist/custom/output
1873
+ ```
1874
+
1875
+ There are other cases where you may need to override values set in the bernova.config.json document or set a specific value for a single case.
1876
+
1877
+ **Important**: For affirmative Boolean values, it is sufficient to set the flag. And to remove values set in the bernova.config.json file, the word `'none'` is used.
1878
+
1879
+ The flags available for this are:
1880
+
1881
+ ```bash
1882
+ # baseOutDir case
1883
+ npx bv-build --base-out-dir custom/base/out/dir
1884
+
1885
+ # rootDir case
1886
+ npx bv-build --root-dir custom/root/dir
1887
+
1888
+ # preventMoveJS case
1889
+ npx bv-build --prevent-move-js
1890
+
1891
+ # preventMoveDTS case
1892
+ npx bv-build --prevent-move-dts
1893
+
1894
+ # unset types values from bernova.config.json
1895
+ npx bv-build --types none
1896
+
1897
+ # Prevent process the js ad dts files
1898
+ npx bv-build --prevent-process-js
1873
1899
  ```
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const e=require("fs").promises,s=require("path"),t=require("@babel/core"),{minify:r}=require("terser"),{extractDocFragment:a,writeDoc:n,fileExists:o,readConfigData:i,buildRelativePath:c}=require("../src/lib");async function l({baseOutPath:t,jsFile:r,rootDir:i,customOutDirs:l,dir:m,minifyJS:u,preventMoveJS:d,provider:f,type:y=""}){const b=r.name.endsWith(".d.ts"),g=s.resolve(m,r.path,r.name);if(!o(m,g))return void console.error(`File not found: ${g}`);let D=await e.readFile(g,"utf8");if("stats.js"===r.name&&l?.css){const e=a({section:"CssThemes",doc:D}),t=e.replace(/export const cssThemes\s*=\s*/,""),r=new Function(`return (${t})`)(),n=s.relative(i||"",f.path),o=v({cssThemes:r,cssOutPath:c({from:s.resolve(n),to:s.resolve(m,l.css)})});D=D.replace(e,`export const cssThemes = {\n${o}};\n`)}"cjs"!==y||b||(D=await p(D,g,!0)),"esm"!==y||b||(D=await p(D,g)),u&&(D=await h(D));const O=s.relative(i||"",r.path),j=d?g:s.resolve(t,O,r.name);await n(j,D,r.name)}async function m({baseOutPath:t,cssFiles:r,rootDir:a,customOutDirs:i,dir:c}){for(const l of r){const r=(()=>a&&i?.css?s.relative(a,l.path):i?.css?i.css:l.path)(),m=s.resolve(c,l.path,l.name);if(o(c,m)){const a=await e.readFile(m,"utf8");await n(s.resolve(t,r,l.name),a,l.name)}}}function u({baseOutDir:e,type:t="-"}){const r=(()=>{switch(t){case"cjs":return"cjs";case"esm":return"esm";default:return""}})();return s.join(e,r)}async function p(e,s,r=!1){const a=!!r&&"commonjs";return(await t.transformAsync(e,{filename:s,presets:[["@babel/preset-env",{modules:a,targets:{node:"current"}}]]})).code}async function h(e){return(await r(e,{compress:{dead_code:!0,drop_console:!1,drop_debugger:!0,keep_classnames:!1,keep_fargs:!0,keep_fnames:!1,keep_infinity:!1},mangle:{toplevel:!1},format:{comments:!1}})).code}function d({themes:e,minifyCss:t}){return e&&Array.isArray(e)&&e.length>0?e.reduce((e,r)=>{const{name:a,stylesPath:n,foreignThemes:o}=r;a&&n&&y(e,{name:t?`${a}.min.css`:`${a}.css`,path:n}),o&&Array.isArray(o)&&o.length>0&&o.forEach(t=>{const r=s.basename(t),a=t.replace(r,"").trim();y(e,{name:r,path:a})})},[]):[]}function f({provider:e,themes:s,preventMoveDTS:t=!1}){const r=s&&s.bvTools?s.reduce((e,{bvTools:s})=>{const{path:r,declarationHelp:a,cssVariables:n,cssClassNames:o,cssMediaQueries:i,cssGlobalStyles:c,availableComponents:l}=s,m=a&&!t;return n&&(y(e,{name:"cssVars.js",path:r}),m&&y(e,{name:"cssVars.d.ts",path:r})),o&&(y(e,{name:"cssClasses.js",path:r}),m&&y(e,{name:"cssClasses.d.ts",path:r})),i&&(y(e,{name:"cssMediaQueries.js",path:r}),m&&y(e,{name:"cssMediaQueries.d.ts",path:r})),c&&(y(e,{name:"cssGlobalStyles.js",path:r}),m&&y(e,{name:"cssGlobalStyles.d.ts",path:r})),l&&(y(e,{name:"cssAvailableComponents.js",path:r}),m&&y(e,{name:"cssAvailableComponents.d.js",path:r})),e},[]):[];return e&&(y(r,{name:`${e.name.toLocaleLowerCase()}.js`,path:e.path}),y(r,{name:"stats.js",path:`${e.path}/stats`}),e.declarationHelp&&!t&&(y(r,{name:`${e.name.toLocaleLowerCase()}.d.ts`,path:e.path}),y(r,{name:"stats.d.ts",path:`${e.path}/stats`}))),r}function v({cssThemes:e,cssOutPath:t}){return Object.entries(e).reduce((e,[r,{foreign:a}])=>{const{before:n,after:o}=a;n&&Array.isArray(n)&&n.length>0&&n.reduce((e,r,a)=>{const n=s.basename(r);return a>0&&(e+=", "),e+`'${t}${n}'`},""),o&&Array.isArray(o)&&o.length>0&&o.reduce((e,r,a)=>{const n=s.basename(r);return a>0&&(e+=", "),e+`'${t}${n}'`},"")},"")}function y(e,s){e.some(e=>e.name===s.name&&e.path===s.path)||e.push(s)}function b(){const e=["--css","--tools","--provider"],s={};for(let t=0;t<process.argv.length;t++)if(e.includes(process.argv[t])){const e=process.argv[t].replace("--",""),r=process.argv[t+1];s[e]=r,t++}return Object.keys(s).length>0?s:void 0}function g({jsonCustomOutDirs:e,cliCustomOutDirs:s}){let t={};return e&&(t={...e}),s&&(t={...t,...s}),Object.keys(t).length>0?t:void 0}(async()=>{const e=process.cwd(),t=await i(s.resolve(e,"bernova.config.json")),{compilerOptions:r,provider:a,themes:n}=t;r&&a&&n||(console.error("Invalid configuration: Missing compilerOptions, themes or provider"),process.exit(1));const{baseOutDir:o,rootDir:c,minifyCss:p,minifyJS:h,preventMoveJS:v,preventMoveDTS:y,types:D,customOutDirs:O}=r,j=g({jsonCustomOutDirs:O,cliCustomOutDirs:b()}),w=d({themes:n,minifyCss:p}),C=f({provider:a,themes:n,preventMoveDTS:y});if(D&&Array.isArray(D)&&D.length>0)for(const s of D){const t=u({baseOutDir:o,type:s});if(w&&w.length>0&&await m({baseOutPath:t,cssFiles:w,rootDir:c,customOutDirs:j,dir:e}),C&&C.length>0)for(const r of C)await l({baseOutPath:t,jsFile:r,rootDir:c,customOutDirs:j,dir:e,minifyJS:h,preventMoveJS:v,provider:a,type:s})}else{const s=u({baseOutDir:o});if(w&&w.length>0&&await m({baseOutPath:s,cssFiles:w,rootDir:c,customOutDirs:j,dir:e}),C&&C.length>0)for(const t of C)await l({baseOutPath:s,jsFile:t,rootDir:c,customOutDirs:j,dir:e,minifyJS:h,preventMoveJS:v,provider:a})}})();
2
+ const e=require("fs").promises,s=require("path"),t=require("@babel/core"),{minify:r}=require("terser"),{extractDocFragment:a,writeDoc:o,fileExists:n,readConfigData:i,buildRelativePath:c}=require("../src/lib");async function p({baseOutPath:t,jsFile:r,rootDir:i,customOutDirs:p,dir:l,minifyJS:m,preventMoveJS:d,provider:v,type:y=""}){const b=r.name.endsWith(".d.ts"),D=s.resolve(l,r.path,r.name);if(!n(l,D))return void console.error(`File not found: ${D}`);let g=await e.readFile(D,"utf8");if("stats.js"===r.name&&p?.css){const e=a({section:"CssThemes",doc:g}),t=e.replace(/export const cssThemes\s*=\s*/,""),r=new Function(`return (${t})`)(),o=s.relative(i||"",v.path),n=f({cssThemes:r,cssOutPath:c({from:s.resolve(o),to:s.resolve(l,p.css)})});g=g.replace(e,`export const cssThemes = {\n${n}};\n`)}"cjs"!==y||b||(g=await u(g,D,!0)),"esm"!==y||b||(g=await u(g,D)),m&&!b&&(g=await h(g));const O=s.relative(i||"",r.path),j=d?D:s.resolve(t,O,r.name);await o(j,g,r.name)}async function l({baseOutPath:t,cssFiles:r,rootDir:a,customOutDirs:i,dir:c}){for(const p of r){const r=(()=>a&&i?.css?s.relative(a,p.path):i?.css?i.css:p.path)(),l=s.resolve(c,p.path,p.name);if(n(c,l)){const a=await e.readFile(l,"utf8");await o(s.resolve(t,r,p.name),a,p.name)}}}function m({baseOutDir:e,type:t="-"}){const r=(()=>{switch(t){case"cjs":return"cjs";case"esm":return"esm";default:return""}})();return s.join(e,r)}async function u(e,s,r=!1){const a=!!r&&"commonjs";return(await t.transformAsync(e,{filename:s,presets:[["@babel/preset-env",{modules:a,targets:{node:"current"}}]]})).code}async function h(e){return(await r(e,{compress:{dead_code:!0,drop_console:!1,drop_debugger:!0,keep_classnames:!1,keep_fargs:!0,keep_fnames:!1,keep_infinity:!1},mangle:{toplevel:!1},format:{comments:!1}})).code}function d({themes:e,minifyCss:t}){return e&&Array.isArray(e)&&e.length>0?e.reduce((e,r)=>{const{name:a,stylesPath:o,foreignThemes:n}=r;return a&&o&&y(e,{name:t?`${a}.min.css`:`${a}.css`,path:o}),n&&Array.isArray(n)&&n.length>0&&n.forEach(t=>{const r=s.basename(t),a=t.replace(r,"").trim();y(e,{name:r,path:a})}),e},[]):[]}function v({provider:e,themes:s,preventMoveDTS:t=!1}){const r=s&&s.bvTools?s.reduce((e,{bvTools:s})=>{const{path:r,declarationHelp:a,cssVariables:o,cssClassNames:n,cssMediaQueries:i,cssGlobalStyles:c,availableComponents:p}=s,l=a&&!t;return o&&(y(e,{name:"cssVars.js",path:r}),l&&y(e,{name:"cssVars.d.ts",path:r})),n&&(y(e,{name:"cssClasses.js",path:r}),l&&y(e,{name:"cssClasses.d.ts",path:r})),i&&(y(e,{name:"cssMediaQueries.js",path:r}),l&&y(e,{name:"cssMediaQueries.d.ts",path:r})),c&&(y(e,{name:"cssGlobalStyles.js",path:r}),l&&y(e,{name:"cssGlobalStyles.d.ts",path:r})),p&&(y(e,{name:"cssAvailableComponents.js",path:r}),l&&y(e,{name:"cssAvailableComponents.d.js",path:r})),e},[]):[];return e&&(y(r,{name:`${e.name.toLocaleLowerCase()}.js`,path:e.path}),y(r,{name:"stats.js",path:`${e.path}/stats`}),e.declarationHelp&&!t&&(y(r,{name:`${e.name.toLocaleLowerCase()}.d.ts`,path:e.path}),y(r,{name:"stats.d.ts",path:`${e.path}/stats`}))),r}function f({cssThemes:e,cssOutPath:t}){return Object.entries(e).reduce((e,[r,{foreign:a}])=>{const{before:o,after:n}=a;o&&Array.isArray(o)&&o.length>0&&o.reduce((e,r,a)=>{const o=s.basename(r);return a>0&&(e+=", "),e+`'${t}${o}'`},""),n&&Array.isArray(n)&&n.length>0&&n.reduce((e,r,a)=>{const o=s.basename(r);return a>0&&(e+=", "),e+`'${t}${o}'`},"")},"")}function y(e,s){e.some(e=>e.name===s.name&&e.path===s.path)||e.push(s)}function b(){const e=["--base-out-dir","--root-dir","--prevent-process-js","--prevent-move-js","--prevent-move-dts","--types","--css","--tools","--provider"],s={};for(let t=0;t<process.argv.length;t++)if(e.includes(process.argv[t])){const r=process.argv[t].replace("--","").replace(/-([a-z])/g,(e,s)=>s.toUpperCase()),a=process.argv[t+1];s[r]=(()=>!(a&&!e.includes(a))||("none"===a.toLocaleLowerCase()?"":a))()}return s}function D({jsonCustomOutDirs:e,cliCustomOutDirs:s}){let t={};return e&&(t={...e}),s&&(t={...t,...s}),Object.keys(t).length>0?t:void 0}(async()=>{const e=process.cwd(),t=await i(s.resolve(e,"bernova.config.json")),{compilerOptions:r,provider:a,themes:o}=t;r&&a&&o||(console.error("Invalid configuration: Missing compilerOptions, themes or provider"),process.exit(1));const{baseOutDir:n,rootDir:c,minifyCss:u,minifyJS:h,preventMoveJS:f,preventMoveDTS:y,types:g,customOutDirs:O}=r,{baseOutDir:j,rootDir:w,types:C,preventMoveJs:S,preventMoveDts:A,preventProcessJs:M=!1,...$}=b(),F=j??n??"",P=w??c??void 0,T=S??f??!1,J=A??y??!1,_=C??g??void 0,L=D({jsonCustomOutDirs:O,cliCustomOutDirs:$}),k=d({themes:o,minifyCss:u}),q=M?[]:v({provider:a,themes:o,preventMoveDTS:J});if(_&&Array.isArray(_)&&_.length>0)for(const s of _){const t=m({baseOutDir:F,type:s});if(k&&k.length>0&&await l({baseOutPath:t,cssFiles:k,rootDir:P,customOutDirs:L,dir:e}),q&&q.length>0)for(const r of q)await p({baseOutPath:t,jsFile:r,rootDir:P,customOutDirs:L,dir:e,minifyJS:h,preventMoveJS:T,provider:a,type:s})}else{const s=m({baseOutDir:F});if(k&&k.length>0&&await l({baseOutPath:s,cssFiles:k,rootDir:P,customOutDirs:L,dir:e}),q&&q.length>0)for(const t of q)await p({baseOutPath:s,jsFile:t,rootDir:P,customOutDirs:L,dir:e,minifyJS:h,preventMoveJS:T,provider:a})}})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bernova",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "The best way to write CSS with Javascript syntax",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",