bernova 1.5.4 → 1.5.5
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 +8 -0
- package/dist/bin/buildstyle.js +1 -1
- package/dist/src/lib/generateCss/helpers/other/generateGlobalStyles.utils.js +1 -1
- package/dist/src/lib/generateCss/helpers/utils/extractValues.utils.js +1 -1
- package/package.json +1 -1
- package/src/lib/generateCss/helpers/other/generateGlobalStyles.utils.js +1 -1
- package/src/lib/generateCss/helpers/utils/extractValues.utils.js +1 -0
- package/src/lib/generateProvider/generateProvider.utils.js +138 -51
package/CHANGELOG.md
CHANGED
package/dist/bin/buildstyle.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const e=require("fs").promises,t=require("path"),s=require("@babel/core"),{minify:a}=require("terser"),{extractDocFragment:n,writeDoc:r,fileExists:o,readConfigData:i}=require("../src/lib");async function c({baseOutPath:s,jsFile:a,rootDir:i,customOutDirs:c,dir:l,minifyJS:m,preventMoveJS:d,provider:h,type:v="",embedCss:y,cssFiles:b}){const
|
|
2
|
+
const e=require("fs").promises,t=require("path"),s=require("@babel/core"),{minify:a}=require("terser"),{extractDocFragment:n,writeDoc:r,fileExists:o,readConfigData:i}=require("../src/lib");async function c({baseOutPath:s,jsFile:a,rootDir:i,customOutDirs:c,dir:l,minifyJS:m,preventMoveJS:d,provider:h={name:""},type:v="",embedCss:y,cssFiles:b}){const P=a.name.endsWith(".d.ts"),j=t.resolve(l,a.path,a.name);if(!o(l,j))return void console.error(`File not found: ${j}`);let D=await e.readFile(j,"utf8");const O=!!c?.css||y&&b.length>0;if("cssTheme.js"===a.name&&O){const s=D.replace("export default","").replaceAll(";","").trim(),a=new Function(`return (${s})`)();if(c?.css)D=`export default {\n${f({cssThemes:a,cssOutPath:c.css})}};\n`;else if(y&&b.length>0){const s=Object.keys(a)[0],n=b.find(e=>e.name===`${s}.css`||e.name===`${s}.min.css`);if(n){const{name:a,path:r}=n,i=t.resolve(l,r,a),c=o(l,i)?(await e.readFile(i,"utf8")).replace(/\s+/g,""):"",m={before:"",after:""};for(const a of b){const{name:n,path:r,parent:i}=a;if(i)for(const{name:a,position:c}of i)if(a===s){const s=t.resolve(l,r,n);if(o(l,s)){const t=(await e.readFile(s,"utf8")).replace(/\s+/g,"");m[c]+=t}}}const p=m.before+c+m.after;D=`export default {'${s}':{css:\`${p}\`}};`}}}if(a.name===`${g(h.name)}.js`&&y&&b.length>0){const s="\n #linkBuilder = (css, id) => {\n if (typeof document === 'undefined') return;\n let styleElement = document.getElementById(id);\n if (!styleElement) {\n styleElement = document.createElement('style');\n styleElement.id = id;\n styleElement.type = 'text/css';\n document.head.appendChild(styleElement);\n }\n styleElement.innerHTML = css;\n };\n #handlerThemes = (data) => {\n const { css } = data;\n this.#linkBuilder(css, this.#linkId);\n };\n #cleanUpLinks = () => {\n if (typeof document === 'undefined') return;\n const style = document.getElementById(this.#linkId);\n if (style) style.remove();\n };\n ",a="../src/lib/generateProvider/template/providerTemplate.js";let r=await e.readFile(t.resolve(__dirname,a),"utf8");r=r.replace(/\$_Provider_\$/g,h.name);const o=n({section:"Bernova provider methods",doc:r});D=r.replace(o,s.trim())}if(a.name===`${g(h.name)}.d.ts`&&y&&b.length>0){const s="\n #linkBuilder(css: string, id: string): void;\n #handlerThemes(data: { css: string }): void;\n #cleanUpLinks(): void;\n ",a="../src/lib/generateProvider/template/providerTemplate.d.ts";let r=await e.readFile(t.resolve(__dirname,a),"utf8");r=r.replace(/\$_Provider_\$/g,h.name);const o=n({section:"Bernova provider methods",doc:r});D=r.replace(o,s.trim())}"cjs"!==v||P||(D=await p(D,j,!0)),"esm"!==v||P||(D=await p(D,j)),m&&!P&&(D=await u(D));const C=t.relative(i||"",a.outPath),w=d?j:t.resolve(s,C,a.name);await r(w,D,a.name)}async function l({baseOutPath:s,cssFiles:a,rootDir:n,customOutDirs:i,dir:c}){for(const l of a){const a=(()=>n&&!i?.css?t.relative(n,l.path):i?.css?i.css:l.path)(),m=t.resolve(c,l.path,l.name);if(o(c,m)){const n=await e.readFile(m,"utf8"),o=l.name.replace(".min","");await r(t.resolve(s,a,o),n,o)}}}function m({baseOutDir:e,type:s="-"}){const a=(()=>{switch(s){case"cjs":return"cjs";case"esm":return"esm";default:return""}})();return t.join(e,a)}async function p(e,t,a=!1){const n=!!a&&"commonjs";return(await s.transformAsync(e,{filename:t,presets:[["@babel/preset-env",{modules:n,targets:{node:"current"}}]]})).code}async function u(e){return(await a(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:s}){return e&&Array.isArray(e)&&e.length>0?e.reduce((e,a)=>{const{name:n,stylesPath:r,foreignThemes:o}=a;return n&&r&&v(e,{name:s?`${n}.min.css`:`${n}.css`,path:r}),o&&Array.isArray(o)&&o.length>0&&o.forEach(s=>{const a=t.basename(s.path),r=s.path.replace(a,"").trim(),o=e.findIndex(e=>e.name===a&&e.path===r);o>=0?e[o].parent.push({name:n,position:s.position}):e.push({name:a,path:r,parent:[{name:n,position:s.position}]})}),e},[]):[]}async function h({dir:s,customOutDirs:a,provider:n,themes:r,preventMoveDTS:o=!1}){const i=r&&r.bvTools?r.reduce((e,{bvTools:t})=>{const{path:s,declarationHelp:n,cssVariables:r,cssClassNames:i,cssMediaQueries:c,cssGlobalStyles:l,availableComponents:m}=t,p=n&&!o,u=a?.tools?a.tools:s;return r&&(v(e,{name:"cssVars.js",path:s,outPath:u}),p&&v(e,{name:"cssVars.d.ts",path:s,outPath:u})),i&&(v(e,{name:"cssClasses.js",path:s,outPath:u}),p&&v(e,{name:"cssClasses.d.ts",path:s,outPath:u})),c&&(v(e,{name:"cssMediaQueries.js",path:s,outPath:u}),p&&v(e,{name:"cssMediaQueries.d.ts",path:s,outPath:u})),l&&(v(e,{name:"cssGlobalStyles.js",path:s,outPath:u}),p&&v(e,{name:"cssGlobalStyles.d.ts",path:s,outPath:u})),m&&(v(e,{name:"cssAvailableComponents.js",path:s,outPath:u}),p&&v(e,{name:"cssAvailableComponents.d.js",path:s,outPath:u})),e},[]):[];if(n){const r=g(n.name),c=`${r}.js`,l=a?.provider?a.provider:n.path;v(i,{name:c,path:n.path,outPath:l});const m=t.join(n.path,"stats"),p=a?.provider?t.join(a.provider,"stats"):m;v(i,{name:"stats.js",path:m,outPath:p});const u=t.resolve(s,m),d=await e.readdir(u,{withFileTypes:!0});d.forEach(e=>{if(e.isDirectory()){const s=t.join(m,e.name),a=t.join(p,e.name);v(i,{name:"cssAvailableComponents.js",path:s,outPath:a}),v(i,{name:"cssClassNames.js",path:s,outPath:a}),v(i,{name:"cssGlobalStyles.js",path:s,outPath:a}),v(i,{name:"cssMediaQueries.js",path:s,outPath:a}),v(i,{name:"cssTheme.js",path:s,outPath:a}),v(i,{name:"cssVars.js",path:s,outPath:a})}}),n.declarationHelp&&!o&&(v(i,{name:`${r}.d.ts`,path:n.path,outPath:l}),v(i,{name:"stats.d.ts",path:m,outPath:p}),d.forEach(e=>{if(e.isDirectory()){const s=t.join(m,e.name),a=t.join(p,e.name);v(i,{name:"cssAvailableComponents.d.ts",path:s,outPath:a}),v(i,{name:"cssClassNames.d.ts",path:s,outPath:a}),v(i,{name:"cssGlobalStyles.d.ts",path:s,outPath:a}),v(i,{name:"cssMediaQueries.d.ts",path:s,outPath:a}),v(i,{name:"cssTheme.d.ts",path:s,outPath:a}),v(i,{name:"cssVars.d.ts",path:s,outPath:a})}}))}return i}function f({cssThemes:e,cssOutPath:s}){return Object.entries(e).reduce((e,[a,{foreign:n}])=>{const{before:r,after:o}=n,i=r&&Array.isArray(r)&&r.length>0?r.reduce((e,a,n)=>{const r=t.basename(a);return n>0&&(e+=", "),e+`'${s}/${r}'`},""):"",c=o&&Array.isArray(o)&&o.length>0?o.reduce((e,a,n)=>{const r=t.basename(a);return n>0&&(e+=", "),e+`'${s}/${r}'`},""):"";return e+`'${a}':{css:'${s}/${a}.css',foreign:{before: [${i}],after: [${c}]}}`},"")}function v(e,t){e.some(e=>e.name===t.name&&e.path===t.path)||e.push(t)}function y(){const e=["--base-out-dir","--root-dir","--prevent-process-js","--prevent-move-js","--prevent-move-dts","--types","--css","--tools","--provider","--embed-css"],t={};for(let s=0;s<process.argv.length;s++)if(e.includes(process.argv[s])){const a=process.argv[s].replace("--","").replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),n=process.argv[s+1];t[a]=(()=>!(n&&!e.includes(n))||("none"===n.toLocaleLowerCase()?"":n))()}return t}function b({jsonCustomOutDirs:e,cliCustomOutDirs:t}){let s={};return e&&(s={...e}),t&&(s={...s,...t}),Object.keys(s).length>0?s:void 0}function g(e="provider"){return e.charAt(0).toLowerCase()+e.slice(1)}(async()=>{const e=process.cwd(),s=await i(t.resolve(e,"bernova.config.json")),{compilerOptions:a,provider:n,themes:r}=s;a&&n&&r||(console.error("Invalid configuration: Missing compilerOptions, themes or provider"),process.exit(1));const{baseOutDir:o,rootDir:p,minifyCss:u,minifyJS:f,preventMoveJS:v,preventMoveDTS:g,types:P,embedCss:j,customOutDirs:D}=a,{baseOutDir:O,rootDir:C,types:w,preventMoveJs:$,preventMoveDts:F,preventProcessJs:A=!1,embedCss:T,...M}=y(),S=O??o??"",_=C??p??void 0,E=$??v??!1,k=F??g??!1,J=w??P??void 0,x=T??j??!1,B=b({jsonCustomOutDirs:D,cliCustomOutDirs:M}),I=d({themes:r,minifyCss:u}),L=A?[]:await h({dir:e,customOutDirs:B,provider:n,themes:r,preventMoveDTS:k}),q=m({baseOutDir:S});if(I&&I.length>0&&!x&&await l({baseOutPath:q,cssFiles:I,rootDir:_,customOutDirs:B,dir:e}),L&&L.length>0)if(J&&Array.isArray(J)&&J.length>0)for(const t of J){const s=m({baseOutDir:S,type:t});for(const a of L)await c({baseOutPath:s,jsFile:a,rootDir:_,customOutDirs:B,dir:e,minifyJS:f,preventMoveJS:E,provider:n,type:t,embedCss:x,cssFiles:I})}else for(const t of L)await c({baseOutPath:q,jsFile:t,rootDir:_,customOutDirs:B,dir:e,minifyJS:f,preventMoveJS:E,provider:n,embedCss:x,cssFiles:I})})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const{simplifyName:e}=require("../../../simplifyName/simplifyName.utils.js"),{extractValues:l}=require("../utils/extractValues.utils.js"),s=s=>s.reduce((s,{targets:t,styles:a})=>{const
|
|
1
|
+
const{simplifyName:e}=require("../../../simplifyName/simplifyName.utils.js"),{extractValues:l}=require("../utils/extractValues.utils.js"),s=s=>s.reduce((s,{targets:t,styles:a})=>{const r=l({styles:a});s.globalStyles+=`${t} { ${r} }\n`;const o=t.split(" ").filter(e=>e.startsWith("."));return o.length&&o.forEach(l=>{const t=e(l);s.globalDocs.doc+=` ${t}: '${l.replace(".","")}',\n`,s.globalDocs.declare+=` ${t}: string;\n`}),s},{globalStyles:"",globalDocs:{doc:"",declare:""}});module.exports={generateGlobalStyles:s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const{cssProps:
|
|
1
|
+
const{cssProps:t}=require("../../../../constants/cssProps.js"),s=({styles:s,dynamicValues:e})=>Object.entries(s).filter(([s])=>t[s]).filter(([t,s])=>null!=s).map(([s,n])=>{const r=t[s],i=String(n).split("$").length-1,l=e&&i>0?String(n).split(" ").reduce((t,s,n)=>(s in e&&(n>0&&(t+=" "),t+=e[s]),t),""):n;return r===t.$content?`${r}: '${l}';`:`${r}: ${l};`}).join(" ");module.exports={extractValues:s};
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ const generateGlobalStyles = (globalStyles) => {
|
|
|
17
17
|
if (allTargets.length) {
|
|
18
18
|
allTargets.forEach((target) => {
|
|
19
19
|
const formattedTarget = simplifyName(target);
|
|
20
|
-
acc.globalDocs.doc += ` ${formattedTarget}: '${target}',\n`;
|
|
20
|
+
acc.globalDocs.doc += ` ${formattedTarget}: '${target.replace('.', '')}',\n`;
|
|
21
21
|
acc.globalDocs.declare += ` ${formattedTarget}: string;\n`;
|
|
22
22
|
});
|
|
23
23
|
}
|
|
@@ -10,6 +10,7 @@ const { cssProps } = require('../../../../constants/cssProps.js');
|
|
|
10
10
|
const extractValues = ({ styles, dynamicValues }) => {
|
|
11
11
|
return Object.entries(styles)
|
|
12
12
|
.filter(([key]) => cssProps[key])
|
|
13
|
+
.filter(([key, value]) => value !== undefined && value !== null)
|
|
13
14
|
.map(([key, value]) => {
|
|
14
15
|
//* replace the js key for css property
|
|
15
16
|
const cssProperty = cssProps[key];
|
|
@@ -26,18 +26,18 @@ const { simplifyName } = require('../simplifyName/simplifyName.utils');
|
|
|
26
26
|
*/
|
|
27
27
|
const lowerCaseFirstChar = (str = 'provider') => {
|
|
28
28
|
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
29
|
-
}
|
|
29
|
+
};
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Return the content wrapped in an anonymous object
|
|
33
33
|
* to avoid polluting the global scope
|
|
34
|
-
*
|
|
34
|
+
*
|
|
35
35
|
* @param {string} content - string content
|
|
36
36
|
* @returns {string} - wrapped content
|
|
37
37
|
*/
|
|
38
38
|
const anonimousWrapper = (content) => {
|
|
39
39
|
return `export default {${content}}`;
|
|
40
|
-
}
|
|
40
|
+
};
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
43
|
* Return the content wrapper in a typescript interface
|
|
@@ -47,11 +47,11 @@ const anonimousWrapper = (content) => {
|
|
|
47
47
|
*/
|
|
48
48
|
const interfaceWrapper = (content, iName) => {
|
|
49
49
|
return `export interface ${iName} {${content}}\n`;
|
|
50
|
-
}
|
|
50
|
+
};
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Write a js file required for the provider`s stats
|
|
54
|
-
*
|
|
54
|
+
*
|
|
55
55
|
* @param {object} param
|
|
56
56
|
* @param {string} param.dir - main root dir
|
|
57
57
|
* @param {string} param.content - file content
|
|
@@ -60,16 +60,24 @@ const interfaceWrapper = (content, iName) => {
|
|
|
60
60
|
* @param {string | null} param.declare - typescript declare file name
|
|
61
61
|
* @return {void}
|
|
62
62
|
*/
|
|
63
|
-
const createStatFragment = async ({
|
|
64
|
-
|
|
63
|
+
const createStatFragment = async ({
|
|
64
|
+
dir,
|
|
65
|
+
content,
|
|
66
|
+
fileName,
|
|
67
|
+
theme,
|
|
68
|
+
declare = null,
|
|
69
|
+
}) => {
|
|
70
|
+
const fileContent = declare
|
|
71
|
+
? interfaceWrapper(content, declare)
|
|
72
|
+
: anonimousWrapper(content);
|
|
65
73
|
const relativePath = `stats/${theme}/${fileName}`;
|
|
66
74
|
const filePath = path.resolve(dir, relativePath);
|
|
67
75
|
await writeDoc(filePath, fileContent, relativePath);
|
|
68
|
-
}
|
|
76
|
+
};
|
|
69
77
|
|
|
70
78
|
/**
|
|
71
79
|
* Generate every js file required for the provide`s stats
|
|
72
|
-
*
|
|
80
|
+
*
|
|
73
81
|
* @interface IProviderDocs {
|
|
74
82
|
* [themeName: string]: {
|
|
75
83
|
* cssPath: string,
|
|
@@ -82,14 +90,19 @@ const createStatFragment = async ({ dir, content, fileName, theme, declare = nul
|
|
|
82
90
|
* afterFiles?: string[],
|
|
83
91
|
* }
|
|
84
92
|
* }
|
|
85
|
-
*
|
|
93
|
+
*
|
|
86
94
|
* @param {object} param
|
|
87
95
|
* @param {string} param.dir - main root dir
|
|
88
96
|
* @param {IProviderDocs} param.providerDoc - provider stats info
|
|
89
97
|
* @param {boolean} param.declarationHelp - prop to handler the create typescript declaration files
|
|
90
98
|
* @param {'foundationOnly' | 'componentOnly' | 'full'} - prop to prevent rewrite unnecessary files
|
|
91
99
|
*/
|
|
92
|
-
const buildStatsDoc = async ({
|
|
100
|
+
const buildStatsDoc = async ({
|
|
101
|
+
providerDocs,
|
|
102
|
+
declarationHelp,
|
|
103
|
+
compilerType,
|
|
104
|
+
dir,
|
|
105
|
+
}) => {
|
|
93
106
|
const allThemes = Object.entries(providerDocs);
|
|
94
107
|
const allThemesNames = [];
|
|
95
108
|
for (const [theme, values] of allThemes) {
|
|
@@ -98,7 +111,9 @@ const buildStatsDoc = async ({ providerDocs, declarationHelp, compilerType, dir
|
|
|
98
111
|
//? write foreign css path
|
|
99
112
|
const beforeFilesExists = values.beforeFiles?.length > 0;
|
|
100
113
|
const afterFilesExists = values.afterFiles?.length > 0;
|
|
101
|
-
const beforeKeyValue = beforeFilesExists
|
|
114
|
+
const beforeKeyValue = beforeFilesExists
|
|
115
|
+
? `before:${values.beforeFiles}`
|
|
116
|
+
: '';
|
|
102
117
|
const afterKeyValue = afterFilesExists ? `after:${values.afterFiles}` : '';
|
|
103
118
|
const foreignsExists = beforeFilesExists || afterFilesExists;
|
|
104
119
|
let foreignKeyValue = foreignsExists ? 'foreign:{' : '';
|
|
@@ -107,91 +122,151 @@ const buildStatsDoc = async ({ providerDocs, declarationHelp, compilerType, dir
|
|
|
107
122
|
foreignKeyValue += afterKeyValue;
|
|
108
123
|
foreignKeyValue += foreignsExists ? '}' : '';
|
|
109
124
|
//? write css path
|
|
110
|
-
const cssThemeContent =
|
|
111
|
-
|
|
125
|
+
const cssThemeContent =
|
|
126
|
+
'cssPath' in values
|
|
127
|
+
? `'${theme}':{css:'${values.cssPath}',${foreignKeyValue}}`
|
|
128
|
+
: '';
|
|
129
|
+
await createStatFragment({
|
|
130
|
+
dir,
|
|
131
|
+
content: cssThemeContent,
|
|
132
|
+
fileName: 'cssTheme.js',
|
|
133
|
+
theme,
|
|
134
|
+
});
|
|
112
135
|
if (declarationHelp) {
|
|
113
136
|
const foreignDeclare = 'foreign?:{before?:string[],after?:string[]}';
|
|
114
|
-
const cssThemeDeclareContent =
|
|
137
|
+
const cssThemeDeclareContent =
|
|
138
|
+
'cssPath' in values ? `'${theme}':{css:string,${foreignDeclare}}` : '';
|
|
115
139
|
const declareThemeName = `${simplifyName(theme)}CssTheme`;
|
|
116
140
|
await createStatFragment({
|
|
117
141
|
dir,
|
|
118
142
|
content: cssThemeDeclareContent,
|
|
119
143
|
fileName: 'cssTheme.d.ts',
|
|
120
144
|
theme,
|
|
121
|
-
declare: declareThemeName
|
|
122
|
-
})
|
|
145
|
+
declare: declareThemeName,
|
|
146
|
+
});
|
|
123
147
|
}
|
|
124
148
|
if (compilerType !== compilerTypeValid.foundationOnly) {
|
|
125
149
|
//? write css class names [js file]
|
|
126
|
-
const cssClassNamesContent =
|
|
127
|
-
|
|
150
|
+
const cssClassNamesContent =
|
|
151
|
+
'classNames' in values ? `'${theme}':{${values.classNames.doc}}` : '';
|
|
152
|
+
await createStatFragment({
|
|
153
|
+
dir,
|
|
154
|
+
content: cssClassNamesContent,
|
|
155
|
+
fileName: 'cssClassNames.js',
|
|
156
|
+
theme,
|
|
157
|
+
});
|
|
128
158
|
//? write css available components [js file]
|
|
129
|
-
const cssAvCompContent =
|
|
130
|
-
|
|
159
|
+
const cssAvCompContent =
|
|
160
|
+
'availableComp' in values
|
|
161
|
+
? `'${theme}':{${values.availableComp.doc}}`
|
|
162
|
+
: '';
|
|
163
|
+
await createStatFragment({
|
|
164
|
+
dir,
|
|
165
|
+
content: cssAvCompContent,
|
|
166
|
+
fileName: 'cssAvailableComponents.js',
|
|
167
|
+
theme,
|
|
168
|
+
});
|
|
131
169
|
if (declarationHelp) {
|
|
132
170
|
//? write css class names [typescript declaration file]
|
|
133
|
-
const cssClNmDeclareContent =
|
|
171
|
+
const cssClNmDeclareContent =
|
|
172
|
+
'classNames' in values
|
|
173
|
+
? `'${theme}':{${values.classNames.declare}}`
|
|
174
|
+
: '';
|
|
134
175
|
const declareCssClNm = `${simplifyName(theme)}CssClassNames`;
|
|
135
176
|
await createStatFragment({
|
|
136
177
|
dir,
|
|
137
178
|
content: cssClNmDeclareContent,
|
|
138
179
|
fileName: 'cssClassNames.d.ts',
|
|
139
180
|
theme,
|
|
140
|
-
declare: declareCssClNm
|
|
141
|
-
})
|
|
181
|
+
declare: declareCssClNm,
|
|
182
|
+
});
|
|
142
183
|
//? write css available components [typescript declaration file]
|
|
143
|
-
const cssAvCompDeclareContent =
|
|
184
|
+
const cssAvCompDeclareContent =
|
|
185
|
+
'availableComp' in values
|
|
186
|
+
? `'${theme}':{${values.availableComp.declare}}`
|
|
187
|
+
: '';
|
|
144
188
|
const declareCssAvComp = `${simplifyName(theme)}CssAvailableComponents`;
|
|
145
189
|
await createStatFragment({
|
|
146
190
|
dir,
|
|
147
191
|
content: cssAvCompDeclareContent,
|
|
148
192
|
fileName: 'cssAvailableComponents.d.ts',
|
|
149
193
|
theme,
|
|
150
|
-
declare: declareCssAvComp
|
|
151
|
-
})
|
|
194
|
+
declare: declareCssAvComp,
|
|
195
|
+
});
|
|
152
196
|
}
|
|
153
197
|
}
|
|
154
198
|
if (compilerType !== compilerTypeValid.componentOnly) {
|
|
155
199
|
//? write css variables [js file]
|
|
156
|
-
const cssVarContent =
|
|
157
|
-
|
|
200
|
+
const cssVarContent =
|
|
201
|
+
'variables' in values ? `'${theme}':{${values.variables.doc}}` : '';
|
|
202
|
+
await createStatFragment({
|
|
203
|
+
dir,
|
|
204
|
+
content: cssVarContent,
|
|
205
|
+
fileName: 'cssVars.js',
|
|
206
|
+
theme,
|
|
207
|
+
});
|
|
158
208
|
//? write css global styles [js file]
|
|
159
|
-
const cssGlobalStylesContent =
|
|
160
|
-
|
|
209
|
+
const cssGlobalStylesContent =
|
|
210
|
+
'globalStyles' in values
|
|
211
|
+
? `'${theme}':{${values.globalStyles.doc}}`
|
|
212
|
+
: '';
|
|
213
|
+
await createStatFragment({
|
|
214
|
+
dir,
|
|
215
|
+
content: cssGlobalStylesContent,
|
|
216
|
+
fileName: 'cssGlobalStyles.js',
|
|
217
|
+
theme,
|
|
218
|
+
});
|
|
161
219
|
//? write css media queries [js file]
|
|
162
|
-
const cssMediaQueriesContent =
|
|
163
|
-
|
|
220
|
+
const cssMediaQueriesContent =
|
|
221
|
+
'mediaQueries' in values
|
|
222
|
+
? `'${theme}':{${values.mediaQueries.doc}}`
|
|
223
|
+
: '';
|
|
224
|
+
await createStatFragment({
|
|
225
|
+
dir,
|
|
226
|
+
content: cssMediaQueriesContent,
|
|
227
|
+
fileName: 'cssMediaQueries.js',
|
|
228
|
+
theme,
|
|
229
|
+
});
|
|
164
230
|
if (declarationHelp) {
|
|
165
231
|
//? write css variables [typescript declaration file]
|
|
166
|
-
const cssVarDeclareContent =
|
|
232
|
+
const cssVarDeclareContent =
|
|
233
|
+
'variables' in values
|
|
234
|
+
? `'${theme}':{${values.variables.declare}}`
|
|
235
|
+
: '';
|
|
167
236
|
const declareCssVar = `${simplifyName(theme)}CssVars`;
|
|
168
237
|
await createStatFragment({
|
|
169
238
|
dir,
|
|
170
239
|
content: cssVarDeclareContent,
|
|
171
240
|
fileName: 'cssVars.d.ts',
|
|
172
241
|
theme,
|
|
173
|
-
declare: declareCssVar
|
|
174
|
-
})
|
|
242
|
+
declare: declareCssVar,
|
|
243
|
+
});
|
|
175
244
|
//? write css global styles [typescript declaration file]
|
|
176
|
-
const cssGlobalStylesDeclareContent =
|
|
245
|
+
const cssGlobalStylesDeclareContent =
|
|
246
|
+
'globalStyles' in values
|
|
247
|
+
? `'${theme}':{${values.globalStyles.declare}}`
|
|
248
|
+
: '';
|
|
177
249
|
const declareCssGlobalStyles = `${simplifyName(theme)}CssGlobalStyles`;
|
|
178
250
|
await createStatFragment({
|
|
179
251
|
dir,
|
|
180
252
|
content: cssGlobalStylesDeclareContent,
|
|
181
253
|
fileName: 'cssGlobalStyles.d.ts',
|
|
182
254
|
theme,
|
|
183
|
-
declare: declareCssGlobalStyles
|
|
184
|
-
})
|
|
255
|
+
declare: declareCssGlobalStyles,
|
|
256
|
+
});
|
|
185
257
|
//? write css media queries [typescript declaration file]
|
|
186
|
-
const cssMediaQueriesDeclareContent =
|
|
258
|
+
const cssMediaQueriesDeclareContent =
|
|
259
|
+
'mediaQueries' in values
|
|
260
|
+
? `'${theme}':{${values.mediaQueries.declare}}`
|
|
261
|
+
: '';
|
|
187
262
|
const declareCssMediaQueries = `${simplifyName(theme)}CssMediaQueries`;
|
|
188
263
|
await createStatFragment({
|
|
189
264
|
dir,
|
|
190
265
|
content: cssMediaQueriesDeclareContent,
|
|
191
266
|
fileName: 'cssMediaQueries.d.ts',
|
|
192
267
|
theme,
|
|
193
|
-
declare: declareCssMediaQueries
|
|
194
|
-
})
|
|
268
|
+
declare: declareCssMediaQueries,
|
|
269
|
+
});
|
|
195
270
|
}
|
|
196
271
|
}
|
|
197
272
|
}
|
|
@@ -248,7 +323,7 @@ const buildStatsDoc = async ({ providerDocs, declarationHelp, compilerType, dir
|
|
|
248
323
|
statsDPieces.cssAvailableComponents += `${simplifiedName}CssAvailableComponents`;
|
|
249
324
|
statsDPieces.cssGlobalStyles += `${simplifiedName}CssGlobalStyles`;
|
|
250
325
|
statsDPieces.cssMediaQueries += `${simplifiedName}CssMediaQueries`;
|
|
251
|
-
}
|
|
326
|
+
}
|
|
252
327
|
});
|
|
253
328
|
statsPieces.cssThemes += '}';
|
|
254
329
|
statsPieces.cssVars += '}';
|
|
@@ -257,7 +332,11 @@ const buildStatsDoc = async ({ providerDocs, declarationHelp, compilerType, dir
|
|
|
257
332
|
statsPieces.cssGlobalStyles += '}';
|
|
258
333
|
statsPieces.cssMediaQueries += '}';
|
|
259
334
|
const statsFileTemplate = `${statsPieces.toImport}\n${statsPieces.cssThemes}\n${statsPieces.cssVars}\n${statsPieces.cssClassNames}\n${statsPieces.cssAvailableComponents}\n${statsPieces.cssGlobalStyles}\n${statsPieces.cssMediaQueries}\n`;
|
|
260
|
-
await writeDoc(
|
|
335
|
+
await writeDoc(
|
|
336
|
+
path.join(dir, 'stats/stats.js'),
|
|
337
|
+
statsFileTemplate,
|
|
338
|
+
'stats.js',
|
|
339
|
+
);
|
|
261
340
|
if (declarationHelp) {
|
|
262
341
|
statsDPieces.cssThemes += ';';
|
|
263
342
|
statsDPieces.cssVars += ';';
|
|
@@ -266,14 +345,18 @@ const buildStatsDoc = async ({ providerDocs, declarationHelp, compilerType, dir
|
|
|
266
345
|
statsDPieces.cssGlobalStyles += ';';
|
|
267
346
|
statsDPieces.cssMediaQueries += ';';
|
|
268
347
|
const statsDFileTemplate = `${statsDPieces.toImport}\n${statsDPieces.cssThemes}\n${statsDPieces.cssVars}\n${statsDPieces.cssClassNames}\n${statsDPieces.cssAvailableComponents}\n${statsDPieces.cssGlobalStyles}\n${statsDPieces.cssMediaQueries}\n`;
|
|
269
|
-
await writeDoc(
|
|
348
|
+
await writeDoc(
|
|
349
|
+
path.join(dir, 'stats/stats.d.ts'),
|
|
350
|
+
statsDFileTemplate,
|
|
351
|
+
'stats.d.ts',
|
|
352
|
+
);
|
|
270
353
|
}
|
|
271
|
-
}
|
|
354
|
+
};
|
|
272
355
|
|
|
273
356
|
/**
|
|
274
357
|
* Create the Bernova provider file and the stats document
|
|
275
|
-
*
|
|
276
|
-
* @param {object} param
|
|
358
|
+
*
|
|
359
|
+
* @param {object} param
|
|
277
360
|
* @param {string} param.dir destination directory
|
|
278
361
|
* @param {object} param.providerDocs provider documentation
|
|
279
362
|
* @param {boolean} param.declarationHelp enable typescript declaration files
|
|
@@ -296,20 +379,24 @@ const generateProvider = async ({
|
|
|
296
379
|
//* customize provider name
|
|
297
380
|
const providerFileName = lowerCaseFirstChar(providerName);
|
|
298
381
|
template = template.replace(/\$_Provider_\$/g, providerName);
|
|
299
|
-
await writeDoc(
|
|
382
|
+
await writeDoc(
|
|
383
|
+
path.join(dir, `${providerFileName}.js`),
|
|
384
|
+
template,
|
|
385
|
+
`${providerFileName}.js`,
|
|
386
|
+
);
|
|
300
387
|
|
|
301
388
|
if (declarationHelp) {
|
|
302
389
|
//? write provider declare document
|
|
303
390
|
const providerDirDeclare = path.resolve(
|
|
304
391
|
__dirname,
|
|
305
|
-
'./template/providerTemplate.d.ts'
|
|
392
|
+
'./template/providerTemplate.d.ts',
|
|
306
393
|
);
|
|
307
394
|
let templateDeclare = await fs.readFile(providerDirDeclare, 'utf8');
|
|
308
395
|
templateDeclare = templateDeclare.replace(/\$_Provider_\$/g, providerName);
|
|
309
396
|
await writeDoc(
|
|
310
397
|
path.join(dir, `${providerFileName}.d.ts`),
|
|
311
398
|
templateDeclare,
|
|
312
|
-
`${providerFileName}.d.ts
|
|
399
|
+
`${providerFileName}.d.ts`,
|
|
313
400
|
);
|
|
314
401
|
}
|
|
315
402
|
};
|