bernova 1.4.0 → 1.5.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 +14 -0
- package/README.md +2 -2
- package/dist/bin/buildstyle.js +1 -1
- package/dist/interfaces/componentsType.ts +462 -0
- package/dist/src/constants/compilerType.js +1 -1
- package/dist/src/lib/generateCssDoc/generateCssDoc.util.js +1 -1
- package/dist/src/lib/generateProvider/generateProvider.utils.js +1 -1
- package/dist/types/lib/generateProvider/generateProvider.utils.d.ts +17 -6
- package/package.json +6 -2
- package/src/constants/compilerType.js +2 -2
- package/src/lib/generateCssDoc/generateCssDoc.util.js +4 -6
- package/src/lib/generateProvider/generateProvider.utils.js +239 -215
|
@@ -17,226 +17,261 @@ const fs = require('fs').promises;
|
|
|
17
17
|
const path = require('path');
|
|
18
18
|
const { writeDoc } = require('../writeDoc/writeDoc.utils');
|
|
19
19
|
const { compilerTypeValid } = require('../../constants');
|
|
20
|
-
const {
|
|
21
|
-
extractDocFragment,
|
|
22
|
-
} = require('../extractDocFragment/extractDocFragment.utils');
|
|
20
|
+
const { simplifyName } = require('../simplifyName/simplifyName.utils');
|
|
23
21
|
|
|
24
22
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* @param {
|
|
29
|
-
* @
|
|
30
|
-
* @param {boolean} params.declarationHelp - Whether to generate TypeScript declarations
|
|
31
|
-
* @param {string} params.compilerType - Type of compilation being performed
|
|
32
|
-
* @param {string} params.dir - Output directory for provider files
|
|
33
|
-
* @returns {Promise<Object>} Generated documentation structure
|
|
23
|
+
* Return the content wrapped in an anonymous object
|
|
24
|
+
* to avoid polluting the global scope
|
|
25
|
+
*
|
|
26
|
+
* @param {string} content - string content
|
|
27
|
+
* @returns {string} - wrapped content
|
|
34
28
|
*/
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
compilerType,
|
|
39
|
-
dir,
|
|
40
|
-
}) => {
|
|
41
|
-
const initialState = {
|
|
42
|
-
doc: {
|
|
43
|
-
cssThemes: '/* CssThemes */\nexport const cssThemes = {\n',
|
|
44
|
-
cssVars: '/* CssVars */\nexport const cssVars = {\n',
|
|
45
|
-
cssClasses: '/* CssClasses */\nexport const cssClasses = {\n',
|
|
46
|
-
cssAvailableComponents:
|
|
47
|
-
'/* CssAvailableComponents */\nexport const cssAvailableComponents = {\n',
|
|
48
|
-
cssGlobalStyles:
|
|
49
|
-
'/* CssGlobalStyles */\nexport const cssGlobalStyles = {\n',
|
|
50
|
-
cssMediaQueries:
|
|
51
|
-
'/* CssMediaQueries */\nexport const cssMediaQueries = {\n',
|
|
52
|
-
},
|
|
53
|
-
declare: {
|
|
54
|
-
cssThemes: '/* CssThemes */\nexport declare const cssThemes: {\n',
|
|
55
|
-
cssVars: '/* CssVars */\nexport interface CssVars {\n',
|
|
56
|
-
cssClasses: '/* CssClasses */\nexport interface CssClasses {\n',
|
|
57
|
-
cssAvailableComponents:
|
|
58
|
-
'/* CssAvailableComponents */\nexport interface CssAvailableComponents {\n',
|
|
59
|
-
cssGlobalStyles:
|
|
60
|
-
'/* CssGlobalStyles */\nexport interface CssGlobalStyles {\n',
|
|
61
|
-
cssMediaQueries:
|
|
62
|
-
'/* CssMediaQueries */\nexport interface CssMediaQueries {\n',
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
const hasPreviouslyConfig = f.existsSync(dir);
|
|
66
|
-
if (hasPreviouslyConfig) {
|
|
67
|
-
//* recover the stats document previously generated
|
|
68
|
-
const stats = await fs.readFile(
|
|
69
|
-
path.resolve(dir, 'stats/stats.js'),
|
|
70
|
-
'utf8'
|
|
71
|
-
);
|
|
29
|
+
const anonimousWrapper = (content) => {
|
|
30
|
+
return `export default {${content}}`;
|
|
31
|
+
}
|
|
72
32
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const cssMediaQueries = extractDocFragment({
|
|
83
|
-
section: 'CssMediaQueries',
|
|
84
|
-
doc: stats,
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
initialState.doc.cssVars = `/* CssVars */\n${cssVars}\n/* CssVars */\n`;
|
|
88
|
-
initialState.doc.cssGlobalStyles = `/* CssGlobalStyles */\n${cssGlobalStyles}\n/* CssGlobalStyles */\n`;
|
|
89
|
-
initialState.doc.cssMediaQueries = `/* CssMediaQueries */\n${cssMediaQueries}\n/* CssMediaQueries */\n`;
|
|
90
|
-
}
|
|
33
|
+
/**
|
|
34
|
+
* Return the content wrapper in a typescript interface
|
|
35
|
+
* @param {string} content - string content
|
|
36
|
+
* @param {string} iName - interface`s name
|
|
37
|
+
* @return {string} - wrapped content
|
|
38
|
+
*/
|
|
39
|
+
const interfaceWrapper = (content, iName) => {
|
|
40
|
+
return `export interface ${iName} {${content}}\n`;
|
|
41
|
+
}
|
|
91
42
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
'utf8'
|
|
110
|
-
);
|
|
111
|
-
if (compilerType === compilerTypeValid.componentOnly) {
|
|
112
|
-
const cssVarsDeclare = extractDocFragment({
|
|
113
|
-
section: 'CssVars',
|
|
114
|
-
doc: statsDeclare,
|
|
115
|
-
});
|
|
116
|
-
const cssGlobalStylesDeclare = extractDocFragment({
|
|
117
|
-
section: 'CssGlobalStyles',
|
|
118
|
-
doc: statsDeclare,
|
|
119
|
-
});
|
|
120
|
-
const cssMediaQueriesDeclare = extractDocFragment({
|
|
121
|
-
section: 'CssMediaQueries',
|
|
122
|
-
doc: statsDeclare,
|
|
123
|
-
});
|
|
43
|
+
/**
|
|
44
|
+
* Write a js file required for the provider`s stats
|
|
45
|
+
*
|
|
46
|
+
* @param {object} param
|
|
47
|
+
* @param {string} param.dir - main root dir
|
|
48
|
+
* @param {string} param.content - file content
|
|
49
|
+
* @param {string} param.fileName - file name
|
|
50
|
+
* @param {string} param.theme - related theme name
|
|
51
|
+
* @param {string | null} param.declare - typescript declare file name
|
|
52
|
+
* @return {void}
|
|
53
|
+
*/
|
|
54
|
+
const createStatFragment = async ({ dir, content, fileName, theme, declare = null}) => {
|
|
55
|
+
const fileContent = declare ? interfaceWrapper(content, declare) : anonimousWrapper(content);
|
|
56
|
+
const relativePath = `stats/${theme}/${fileName}`;
|
|
57
|
+
const filePath = path.resolve(dir, relativePath);
|
|
58
|
+
await writeDoc(filePath, fileContent, relativePath);
|
|
59
|
+
}
|
|
124
60
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Generate every js file required for the provide`s stats
|
|
63
|
+
*
|
|
64
|
+
* @interface IProviderDocs {
|
|
65
|
+
* [themeName: string]: {
|
|
66
|
+
* cssPath: string,
|
|
67
|
+
* variables?: { doc: string, declare: string },
|
|
68
|
+
* classNames?: { doc: string, declare: string },
|
|
69
|
+
* availableComp?: { doc: string, declare: string },
|
|
70
|
+
* globalStyles?: { doc: string, declare: string },
|
|
71
|
+
* mediaQueries?: { doc: string, declare: string }
|
|
72
|
+
* beforeFiles?: string[],
|
|
73
|
+
* afterFiles?: string[],
|
|
74
|
+
* }
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* @param {object} param
|
|
78
|
+
* @param {string} param.dir - main root dir
|
|
79
|
+
* @param {IProviderDocs} param.providerDoc - provider stats info
|
|
80
|
+
* @param {boolean} param.declarationHelp - prop to handler the create typescript declaration files
|
|
81
|
+
* @param {'foundationOnly' | 'componentOnly' | 'full'} - prop to prevent rewrite unnecessary files
|
|
82
|
+
*/
|
|
83
|
+
const buildStatsDoc = async ({ providerDocs, declarationHelp, compilerType, dir }) => {
|
|
84
|
+
const allThemes = Object.entries(providerDocs);
|
|
85
|
+
const allThemesNames = [];
|
|
86
|
+
for (const [theme, values] of allThemes) {
|
|
87
|
+
//? register theme name
|
|
88
|
+
allThemesNames.push(theme);
|
|
89
|
+
//? write foreign css path
|
|
148
90
|
const beforeFilesExists = values.beforeFiles?.length > 0;
|
|
149
91
|
const afterFilesExists = values.afterFiles?.length > 0;
|
|
150
|
-
const beforeKeyValue = beforeFilesExists
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
acc.doc.cssThemes += ` '${theme}': { css: '${values.cssPath}',${foreignKeyValue} },\n`;
|
|
92
|
+
const beforeKeyValue = beforeFilesExists ? `before:${values.beforeFiles}` : '';
|
|
93
|
+
const afterKeyValue = afterFilesExists ? `after:${values.afterFiles}` : '';
|
|
94
|
+
const foreignsExists = beforeFilesExists || afterFilesExists;
|
|
95
|
+
let foreignKeyValue = foreignsExists ? 'foreign:{' : '';
|
|
96
|
+
foreignKeyValue += beforeKeyValue;
|
|
97
|
+
foreignKeyValue += beforeKeyValue.length && afterKeyValue.length ? ',' : '';
|
|
98
|
+
foreignKeyValue += afterKeyValue;
|
|
99
|
+
foreignKeyValue += foreignsExists ? '}' : '';
|
|
100
|
+
//? write css path
|
|
101
|
+
const cssThemeContent = 'cssPath' in values ? `'${theme}':{css:'${values.cssPath}',${foreignKeyValue}}` : '';
|
|
102
|
+
await createStatFragment({ dir, content: cssThemeContent, fileName: 'cssTheme.js', theme });
|
|
162
103
|
if (declarationHelp) {
|
|
163
|
-
|
|
104
|
+
const foreignDeclare = 'foreign?:{before?:string[],after?:string[]}';
|
|
105
|
+
const cssThemeDeclareContent = 'cssPath' in values ? `'${theme}':{css:string,${foreignDeclare}}` : '';
|
|
106
|
+
const declareThemeName = `${simplifyName(theme)}CssTheme`;
|
|
107
|
+
await createStatFragment({
|
|
108
|
+
dir,
|
|
109
|
+
content: cssThemeDeclareContent,
|
|
110
|
+
fileName: 'cssTheme.d.ts',
|
|
111
|
+
theme,
|
|
112
|
+
declare: declareThemeName
|
|
113
|
+
})
|
|
164
114
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
} },\n`;
|
|
173
|
-
acc.doc.cssMediaQueries += ` '${theme}': {\n${
|
|
174
|
-
values.mediaQueries?.doc || ''
|
|
175
|
-
} },\n`;
|
|
115
|
+
if (compilerType !== compilerTypeValid.foundationOnly) {
|
|
116
|
+
//? write css class names [js file]
|
|
117
|
+
const cssClassNamesContent = 'classNames' in values ? `'${theme}':{${values.classNames.doc}}` : '';
|
|
118
|
+
await createStatFragment({ dir, content: cssClassNamesContent, fileName: 'cssClassNames.js', theme });
|
|
119
|
+
//? write css available components [js file]
|
|
120
|
+
const cssAvCompContent = 'availableComp' in values ? `'${theme}':{${values.availableComp.doc}}` : '';
|
|
121
|
+
await createStatFragment({ dir, content: cssAvCompContent, fileName: 'cssAvailableComponents.js', theme });
|
|
176
122
|
if (declarationHelp) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
123
|
+
//? write css class names [typescript declaration file]
|
|
124
|
+
const cssClNmDeclareContent = 'classNames' in values ? `'${theme}':{${values.classNames.declare}}` : '';
|
|
125
|
+
const declareCssClNm = `${simplifyName(theme)}CssClassNames`;
|
|
126
|
+
await createStatFragment({
|
|
127
|
+
dir,
|
|
128
|
+
content: cssClNmDeclareContent,
|
|
129
|
+
fileName: 'cssClassNames.d.ts',
|
|
130
|
+
theme,
|
|
131
|
+
declare: declareCssClNm
|
|
132
|
+
})
|
|
133
|
+
//? write css available components [typescript declaration file]
|
|
134
|
+
const cssAvCompDeclareContent = 'availableComp' in values ? `'${theme}':{${values.availableComp.declare}}` : '';
|
|
135
|
+
const declareCssAvComp = `${simplifyName(theme)}CssAvailableComponents`;
|
|
136
|
+
await createStatFragment({
|
|
137
|
+
dir,
|
|
138
|
+
content: cssAvCompDeclareContent,
|
|
139
|
+
fileName: 'cssAvailableComponents.d.ts',
|
|
140
|
+
theme,
|
|
141
|
+
declare: declareCssAvComp
|
|
142
|
+
})
|
|
186
143
|
}
|
|
187
144
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
145
|
+
if (compilerType !== compilerTypeValid.componentOnly) {
|
|
146
|
+
//? write css variables [js file]
|
|
147
|
+
const cssVarContent = 'variables' in values ? `'${theme}':{${values.variables.doc}}` : '';
|
|
148
|
+
await createStatFragment({ dir, content: cssVarContent, fileName: 'cssVars.js', theme });
|
|
149
|
+
//? write css global styles [js file]
|
|
150
|
+
const cssGlobalStylesContent = 'globalStyles' in values ? `'${theme}':{${values.globalStyles.doc}}` : '';
|
|
151
|
+
await createStatFragment({ dir, content: cssGlobalStylesContent, fileName: 'cssGlobalStyles.js', theme });
|
|
152
|
+
//? write css media queries [js file]
|
|
153
|
+
const cssMediaQueriesContent = 'mediaQueries' in values ? `'${theme}':{${values.mediaQueries.doc}}` : '';
|
|
154
|
+
await createStatFragment({ dir, content: cssMediaQueriesContent, fileName: 'cssMediaQueries.js', theme });
|
|
196
155
|
if (declarationHelp) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
156
|
+
//? write css variables [typescript declaration file]
|
|
157
|
+
const cssVarDeclareContent = 'variables' in values ? `'${theme}':{${values.variables.declare}}` : '';
|
|
158
|
+
const declareCssVar = `${simplifyName(theme)}CssVars`;
|
|
159
|
+
await createStatFragment({
|
|
160
|
+
dir,
|
|
161
|
+
content: cssVarDeclareContent,
|
|
162
|
+
fileName: 'cssVars.d.ts',
|
|
163
|
+
theme,
|
|
164
|
+
declare: declareCssVar
|
|
165
|
+
})
|
|
166
|
+
//? write css global styles [typescript declaration file]
|
|
167
|
+
const cssGlobalStylesDeclareContent = 'globalStyles' in values ? `'${theme}':{${values.globalStyles.declare}}` : '';
|
|
168
|
+
const declareCssGlobalStyles = `${simplifyName(theme)}CssGlobalStyles`;
|
|
169
|
+
await createStatFragment({
|
|
170
|
+
dir,
|
|
171
|
+
content: cssGlobalStylesDeclareContent,
|
|
172
|
+
fileName: 'cssGlobalStyles.d.ts',
|
|
173
|
+
theme,
|
|
174
|
+
declare: declareCssGlobalStyles
|
|
175
|
+
})
|
|
176
|
+
//? write css media queries [typescript declaration file]
|
|
177
|
+
const cssMediaQueriesDeclareContent = 'mediaQueries' in values ? `'${theme}':{${values.mediaQueries.declare}}` : '';
|
|
178
|
+
const declareCssMediaQueries = `${simplifyName(theme)}CssMediaQueries`;
|
|
179
|
+
await createStatFragment({
|
|
180
|
+
dir,
|
|
181
|
+
content: cssMediaQueriesDeclareContent,
|
|
182
|
+
fileName: 'cssMediaQueries.d.ts',
|
|
183
|
+
theme,
|
|
184
|
+
declare: declareCssMediaQueries
|
|
185
|
+
})
|
|
203
186
|
}
|
|
204
187
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
188
|
+
}
|
|
189
|
+
const statsPieces = {
|
|
190
|
+
toImport: '',
|
|
191
|
+
cssThemes: 'export const cssThemes = {',
|
|
192
|
+
cssVars: 'export const cssVars = {',
|
|
193
|
+
cssClassNames: 'export const cssClasses = {',
|
|
194
|
+
cssAvailableComponents: 'export const cssAvailableComponents = {',
|
|
195
|
+
cssGlobalStyles: 'export const cssGlobalStyles = {',
|
|
196
|
+
cssMediaQueries: 'export const cssMediaQueries = {',
|
|
197
|
+
};
|
|
198
|
+
const statsDPieces = {
|
|
199
|
+
toImport: '',
|
|
200
|
+
cssThemes: 'export declare const cssThemes: ',
|
|
201
|
+
cssVars: 'export declare const cssVars: ',
|
|
202
|
+
cssClassNames: 'export declare const cssClasses: ',
|
|
203
|
+
cssAvailableComponents: 'export declare const cssAvailableComponents: ',
|
|
204
|
+
cssGlobalStyles: 'export declare const cssGlobalStyles: ',
|
|
205
|
+
cssMediaQueries: 'export declare const cssMediaQueries: ',
|
|
206
|
+
};
|
|
207
|
+
allThemesNames.forEach((theme, idx) => {
|
|
208
|
+
const simplifiedName = simplifyName(theme);
|
|
209
|
+
statsPieces.toImport += `import ${simplifiedName}CssTheme from './${theme}/cssTheme.js';\n`;
|
|
210
|
+
statsPieces.toImport += `import ${simplifiedName}CssVars from './${theme}/cssVars.js';\n`;
|
|
211
|
+
statsPieces.toImport += `import ${simplifiedName}CssClassNames from './${theme}/cssClassNames.js';\n`;
|
|
212
|
+
statsPieces.toImport += `import ${simplifiedName}CssAvailableComponents from './${theme}/cssAvailableComponents.js';\n`;
|
|
213
|
+
statsPieces.toImport += `import ${simplifiedName}CssGlobalStyles from './${theme}/cssGlobalStyles.js';\n`;
|
|
214
|
+
statsPieces.toImport += `import ${simplifiedName}CssMediaQueries from './${theme}/cssMediaQueries.js';\n`;
|
|
215
|
+
statsPieces.cssThemes += `...${simplifiedName}CssTheme,`;
|
|
216
|
+
statsPieces.cssVars += `...${simplifiedName}CssVars,`;
|
|
217
|
+
statsPieces.cssClassNames += `...${simplifiedName}CssClassNames,`;
|
|
218
|
+
statsPieces.cssAvailableComponents += `...${simplifiedName}CssAvailableComponents,`;
|
|
219
|
+
statsPieces.cssGlobalStyles += `...${simplifiedName}CssGlobalStyles,`;
|
|
220
|
+
statsPieces.cssMediaQueries += `...${simplifiedName}CssMediaQueries,`;
|
|
221
|
+
if (declarationHelp) {
|
|
222
|
+
statsDPieces.toImport += `import type { ${simplifiedName}CssTheme } from './${theme}/cssTheme.d.ts';\n`;
|
|
223
|
+
statsDPieces.toImport += `import type { ${simplifiedName}CssVars } from './${theme}/cssVars.d.ts';\n`;
|
|
224
|
+
statsDPieces.toImport += `import type { ${simplifiedName}CssClassNames } from './${theme}/cssClassNames.d.ts';\n`;
|
|
225
|
+
statsDPieces.toImport += `import type { ${simplifiedName}CssAvailableComponents } from './${theme}/cssAvailableComponents.d.ts';\n`;
|
|
226
|
+
statsDPieces.toImport += `import type { ${simplifiedName}CssGlobalStyles } from './${theme}/cssGlobalStyles.d.ts';\n`;
|
|
227
|
+
statsDPieces.toImport += `import type { ${simplifiedName}CssMediaQueries } from './${theme}/cssMediaQueries.d.ts';\n`;
|
|
228
|
+
if (idx > 0) {
|
|
229
|
+
statsDPieces.cssThemes += ' & ';
|
|
230
|
+
statsDPieces.cssVars += ' & ';
|
|
231
|
+
statsDPieces.cssClassNames += ' & ';
|
|
232
|
+
statsDPieces.cssAvailableComponents += ' & ';
|
|
233
|
+
statsDPieces.cssGlobalStyles += ' & ';
|
|
234
|
+
statsDPieces.cssMediaQueries += ' & ';
|
|
234
235
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
236
|
+
statsDPieces.cssThemes += `${simplifiedName}CssTheme`;
|
|
237
|
+
statsDPieces.cssVars += `${simplifiedName}CssVars`;
|
|
238
|
+
statsDPieces.cssClassNames += `${simplifiedName}CssClassNames`;
|
|
239
|
+
statsDPieces.cssAvailableComponents += `${simplifiedName}CssAvailableComponents`;
|
|
240
|
+
statsDPieces.cssGlobalStyles += `${simplifiedName}CssGlobalStyles`;
|
|
241
|
+
statsDPieces.cssMediaQueries += `${simplifiedName}CssMediaQueries`;
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
statsPieces.cssThemes += '}';
|
|
245
|
+
statsPieces.cssVars += '}';
|
|
246
|
+
statsPieces.cssClassNames += '}';
|
|
247
|
+
statsPieces.cssAvailableComponents += '}';
|
|
248
|
+
statsPieces.cssGlobalStyles += '}';
|
|
249
|
+
statsPieces.cssMediaQueries += '}';
|
|
250
|
+
const statsFileTemplate = `${statsPieces.toImport}\n${statsPieces.cssThemes}\n${statsPieces.cssVars}\n${statsPieces.cssClassNames}\n${statsPieces.cssAvailableComponents}\n${statsPieces.cssGlobalStyles}\n${statsPieces.cssMediaQueries}\n`;
|
|
251
|
+
await writeDoc(path.join(dir, 'stats/stats.js'), statsFileTemplate, 'stats.js');
|
|
252
|
+
if (declarationHelp) {
|
|
253
|
+
statsDPieces.cssThemes += ';';
|
|
254
|
+
statsDPieces.cssVars += ';';
|
|
255
|
+
statsDPieces.cssClassNames += ';';
|
|
256
|
+
statsDPieces.cssAvailableComponents += ';';
|
|
257
|
+
statsDPieces.cssGlobalStyles += ';';
|
|
258
|
+
statsDPieces.cssMediaQueries += ';';
|
|
259
|
+
const statsDFileTemplate = `${statsDPieces.toImport}\n${statsDPieces.cssThemes}\n${statsDPieces.cssVars}\n${statsDPieces.cssClassNames}\n${statsDPieces.cssAvailableComponents}\n${statsDPieces.cssGlobalStyles}\n${statsDPieces.cssMediaQueries}\n`;
|
|
260
|
+
await writeDoc(path.join(dir, 'stats/stats.d.ts'), statsDFileTemplate, 'stats.d.ts');
|
|
261
|
+
}
|
|
262
|
+
}
|
|
239
263
|
|
|
264
|
+
/**
|
|
265
|
+
* Create the Bernova provider file and the stats document
|
|
266
|
+
*
|
|
267
|
+
* @param {object} param
|
|
268
|
+
* @param {string} param.dir destination directory
|
|
269
|
+
* @param {object} param.providerDocs provider documentation
|
|
270
|
+
* @param {boolean} param.declarationHelp enable typescript declaration files
|
|
271
|
+
* @param {string} param.providerName provider name
|
|
272
|
+
* @param {string} param.compilerType compiler type
|
|
273
|
+
* @return {void}
|
|
274
|
+
*/
|
|
240
275
|
const generateProvider = async ({
|
|
241
276
|
dir,
|
|
242
277
|
providerDocs,
|
|
@@ -244,16 +279,8 @@ const generateProvider = async ({
|
|
|
244
279
|
providerName,
|
|
245
280
|
compilerType,
|
|
246
281
|
}) => {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
declarationHelp,
|
|
250
|
-
compilerType,
|
|
251
|
-
dir,
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
//? write stats document
|
|
255
|
-
const docsTemplate = `${doc.cssThemes}\n${doc.cssVars}\n${doc.cssClasses}\n${doc.cssAvailableComponents}\n${doc.cssGlobalStyles}\n${doc.cssMediaQueries}\n`;
|
|
256
|
-
await writeDoc(`${dir}/stats/stats.js`, docsTemplate, 'stats.js');
|
|
282
|
+
//? write stats and dependencies documents
|
|
283
|
+
await buildStatsDoc({ providerDocs, declarationHelp, compilerType, dir });
|
|
257
284
|
//? write provider
|
|
258
285
|
const providerDir = path.resolve(__dirname, './template/providerTemplate.js');
|
|
259
286
|
let template = await fs.readFile(providerDir, 'utf8');
|
|
@@ -262,9 +289,6 @@ const generateProvider = async ({
|
|
|
262
289
|
await writeDoc(`${dir}/${providerName}.js`, template, `${providerName}.js`);
|
|
263
290
|
|
|
264
291
|
if (declarationHelp) {
|
|
265
|
-
//? write stats declare document
|
|
266
|
-
const declareTemplate = `${declare.cssThemes}\n${declare.cssVars}\n${declare.cssClasses}\n${declare.cssAvailableComponents}\n${declare.cssGlobalStyles}\n${declare.cssMediaQueries}\nexport declare const cssVars: CssVars;\nexport declare const cssClasses: CssClasses;\nexport declare const cssAvailableComponents: CssAvailableComponents;\nexport declare const cssGlobalStyles: CssGlobalStyles;\nexport declare const cssMediaQueries: CssMediaQueries;\n`;
|
|
267
|
-
await writeDoc(`${dir}/stats/stats.d.ts`, declareTemplate, 'stats.d.ts');
|
|
268
292
|
//? write provider declare document
|
|
269
293
|
const providerDirDeclare = path.resolve(
|
|
270
294
|
__dirname,
|