bernova 1.5.4 → 1.6.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.
@@ -1 +1 @@
1
- const{cssProps:s}=require("../../../../constants/cssProps.js"),t=({styles:t,dynamicValues:e})=>Object.entries(t).filter(([t])=>s[t]).map(([t,n])=>{const r=s[t],c=String(n).split("$").length-1,i=e&&c>0?String(n).split(" ").reduce((s,t,n)=>(t in e&&(n>0&&(s+=" "),s+=e[t]),s),""):n;return r===s.$content?`${r}: '${i}';`:`${r}: ${i};`}).join(" ");module.exports={extractValues:t};
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};
@@ -0,0 +1,9 @@
1
+ /* === BERNOVA FOUNDATIONS === */
2
+ :root{
3
+ }
4
+
5
+ /* === END FOUNDATIONS === */
6
+
7
+ /* === BERNOVA COMPONENTS === */
8
+
9
+ /* === END COMPONENTS === */
File without changes
@@ -0,0 +1,9 @@
1
+ /* === BERNOVA FOUNDATIONS === */
2
+ :root{
3
+ }
4
+
5
+ /* === END FOUNDATIONS === */
6
+
7
+ /* === BERNOVA COMPONENTS === */
8
+
9
+ /* === END COMPONENTS === */
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bernova",
3
- "version": "1.5.4",
3
+ "version": "1.6.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",
@@ -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 ({ dir, content, fileName, theme, declare = null}) => {
64
- const fileContent = declare ? interfaceWrapper(content, declare) : anonimousWrapper(content);
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 ({ providerDocs, declarationHelp, compilerType, dir }) => {
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 ? `before:${values.beforeFiles}` : '';
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 = 'cssPath' in values ? `'${theme}':{css:'${values.cssPath}',${foreignKeyValue}}` : '';
111
- await createStatFragment({ dir, content: cssThemeContent, fileName: 'cssTheme.js', theme });
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 = 'cssPath' in values ? `'${theme}':{css:string,${foreignDeclare}}` : '';
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 = 'classNames' in values ? `'${theme}':{${values.classNames.doc}}` : '';
127
- await createStatFragment({ dir, content: cssClassNamesContent, fileName: 'cssClassNames.js', theme });
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 = 'availableComp' in values ? `'${theme}':{${values.availableComp.doc}}` : '';
130
- await createStatFragment({ dir, content: cssAvCompContent, fileName: 'cssAvailableComponents.js', theme });
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 = 'classNames' in values ? `'${theme}':{${values.classNames.declare}}` : '';
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 = 'availableComp' in values ? `'${theme}':{${values.availableComp.declare}}` : '';
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 = 'variables' in values ? `'${theme}':{${values.variables.doc}}` : '';
157
- await createStatFragment({ dir, content: cssVarContent, fileName: 'cssVars.js', theme });
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 = 'globalStyles' in values ? `'${theme}':{${values.globalStyles.doc}}` : '';
160
- await createStatFragment({ dir, content: cssGlobalStylesContent, fileName: 'cssGlobalStyles.js', theme });
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 = 'mediaQueries' in values ? `'${theme}':{${values.mediaQueries.doc}}` : '';
163
- await createStatFragment({ dir, content: cssMediaQueriesContent, fileName: 'cssMediaQueries.js', theme });
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 = 'variables' in values ? `'${theme}':{${values.variables.declare}}` : '';
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 = 'globalStyles' in values ? `'${theme}':{${values.globalStyles.declare}}` : '';
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 = 'mediaQueries' in values ? `'${theme}':{${values.mediaQueries.declare}}` : '';
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(path.join(dir, 'stats/stats.js'), statsFileTemplate, 'stats.js');
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(path.join(dir, 'stats/stats.d.ts'), statsDFileTemplate, 'stats.d.ts');
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(path.join(dir, `${providerFileName}.js`), template, `${providerFileName}.js`);
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
  };
@@ -0,0 +1,9 @@
1
+ /* === BERNOVA FOUNDATIONS === */
2
+ :root{
3
+ }
4
+
5
+ /* === END FOUNDATIONS === */
6
+
7
+ /* === BERNOVA COMPONENTS === */
8
+
9
+ /* === END COMPONENTS === */
File without changes