bernova 0.0.2
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/LICENSE +201 -0
- package/README.md +1778 -0
- package/dist/bin/bernova.js +2 -0
- package/dist/bin/buildstyle.js +2 -0
- package/dist/bin/createConfigFile.js +2 -0
- package/dist/bin/declareCssType.js +1 -0
- package/dist/index.js +1 -0
- package/dist/src/app.js +1 -0
- package/dist/src/constants/compilerType.js +1 -0
- package/dist/src/constants/cssAdvancedSelectors.js +1 -0
- package/dist/src/constants/cssProps.js +1 -0
- package/dist/src/constants/cssPseudoClasses.js +1 -0
- package/dist/src/constants/cssPseudoElements.js +1 -0
- package/dist/src/constants/index.js +1 -0
- package/dist/src/constants/resetCss.js +1 -0
- package/dist/src/index.d.ts +31 -0
- package/dist/src/index.js +1 -0
- package/dist/src/lib/compileConfig.js +1 -0
- package/dist/src/lib/compileThemes.js +1 -0
- package/dist/src/lib/copyLocalFonts/copyLocalFonts.utils.js +1 -0
- package/dist/src/lib/copyLocalFonts/generateCssFonts.utils.js +1 -0
- package/dist/src/lib/extractDocFragment/extractDocFragment.utils.js +1 -0
- package/dist/src/lib/fileExists/fileExists.utils.js +1 -0
- package/dist/src/lib/generateBaseCss/generateBaseCss.utils.js +1 -0
- package/dist/src/lib/generateCss/generateCSS.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/advanceselector/advancedSelectorHandler.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/attribute/attributeHandler.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/classnames/formatClassName.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/classnames/handlerRegister.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/cssVars/generateVars.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/dynamicValues/dynamicValues.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/dynamicValues/processDynamic.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/filterGenerateCss.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/foreign/foreignHandler.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/generateCssStyles.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/index.js +1 -0
- package/dist/src/lib/generateCss/helpers/mediaqueries/generateMediaQueries.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/mediaqueries/mediaQueriesHandler.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/other/declareCssType.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/other/generateGlobalStyles.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/pseudo/pseudoHandler.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/rulename/formatRuleName.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/utils/extractValues.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/utils/formattedStatKey.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/utils/index.js +1 -0
- package/dist/src/lib/generateCss/helpers/utils/processCss.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/utils/separateStyles.utils.js +1 -0
- package/dist/src/lib/generateCss/helpers/utils/validatePreviouslyExists.utils.js +1 -0
- package/dist/src/lib/generateCssDoc/generateCssDoc.util.js +1 -0
- package/dist/src/lib/generateProvider/generateProvider.utils.js +1 -0
- package/dist/src/lib/generateProvider/template/providerTemplate.d.ts +60 -0
- package/dist/src/lib/generateProvider/template/providerTemplate.js +1 -0
- package/dist/src/lib/generateThemeRegister/generateThemeRegister.utils.js +1 -0
- package/dist/src/lib/generateTools/generateTools.utils.js +1 -0
- package/dist/src/lib/generateTypesTools/generateTypesTools.utils.js +1 -0
- package/dist/src/lib/handlerForeignThemes/handlerForeignThemes.utils.js +1 -0
- package/dist/src/lib/index.js +1 -0
- package/dist/src/lib/processMediaConfig/processMediaConfig.util.js +1 -0
- package/dist/src/lib/readFile/readFile.utils.js +1 -0
- package/dist/src/lib/simplifyName/simplifyName.utils.js +1 -0
- package/dist/src/lib/typingStyles/index.js +1 -0
- package/dist/src/lib/typingStyles/typingStyles.utils.js +1 -0
- package/dist/src/lib/writeDoc/writeDoc.utils.js +1 -0
- package/package.json +80 -0
- package/src/app.js +176 -0
- package/src/constants/__tests__/compilerType.test.js +20 -0
- package/src/constants/__tests__/cssAdvancedSelectors.test.js +38 -0
- package/src/constants/__tests__/cssProps.test.js +331 -0
- package/src/constants/__tests__/cssPseudoClasses.test.js +48 -0
- package/src/constants/compilerType.js +14 -0
- package/src/constants/cssAdvancedSelectors.js +32 -0
- package/src/constants/cssProps.js +325 -0
- package/src/constants/cssPseudoClasses.js +138 -0
- package/src/constants/cssPseudoElements.js +83 -0
- package/src/constants/index.js +15 -0
- package/src/constants/resetCss.js +171 -0
- package/src/index.d.ts +31 -0
- package/src/index.js +20 -0
- package/src/lib/compileConfig.js +59 -0
- package/src/lib/compileThemes.js +118 -0
- package/src/lib/copyLocalFonts/copyLocalFonts.utils.js +42 -0
- package/src/lib/copyLocalFonts/generateCssFonts.utils.js +56 -0
- package/src/lib/extractDocFragment/extractDocFragment.utils.js +25 -0
- package/src/lib/fileExists/fileExists.utils.js +31 -0
- package/src/lib/generateBaseCss/generateBaseCss.utils.js +51 -0
- package/src/lib/generateCss/generateCSS.utils.js +42 -0
- package/src/lib/generateCss/helpers/advanceselector/advancedSelectorHandler.utils.js +22 -0
- package/src/lib/generateCss/helpers/attribute/attributeHandler.utils.js +47 -0
- package/src/lib/generateCss/helpers/classnames/formatClassName.utils.js +28 -0
- package/src/lib/generateCss/helpers/classnames/handlerRegister.utils.js +124 -0
- package/src/lib/generateCss/helpers/cssVars/generateVars.utils.js +73 -0
- package/src/lib/generateCss/helpers/dynamicValues/dynamicValues.utils.js +72 -0
- package/src/lib/generateCss/helpers/dynamicValues/processDynamic.utils.js +10 -0
- package/src/lib/generateCss/helpers/filterGenerateCss.utils.js +73 -0
- package/src/lib/generateCss/helpers/foreign/foreignHandler.utils.js +85 -0
- package/src/lib/generateCss/helpers/generateCssStyles.utils.js +249 -0
- package/src/lib/generateCss/helpers/index.js +53 -0
- package/src/lib/generateCss/helpers/mediaqueries/generateMediaQueries.utils.js +9 -0
- package/src/lib/generateCss/helpers/mediaqueries/mediaQueriesHandler.utils.js +181 -0
- package/src/lib/generateCss/helpers/other/declareCssType.utils.js +120 -0
- package/src/lib/generateCss/helpers/other/generateGlobalStyles.utils.js +30 -0
- package/src/lib/generateCss/helpers/pseudo/pseudoHandler.utils.js +56 -0
- package/src/lib/generateCss/helpers/rulename/formatRuleName.utils.js +163 -0
- package/src/lib/generateCss/helpers/utils/extractValues.utils.js +44 -0
- package/src/lib/generateCss/helpers/utils/formattedStatKey.utils.js +43 -0
- package/src/lib/generateCss/helpers/utils/index.js +15 -0
- package/src/lib/generateCss/helpers/utils/processCss.utils.js +93 -0
- package/src/lib/generateCss/helpers/utils/separateStyles.utils.js +43 -0
- package/src/lib/generateCss/helpers/utils/validatePreviouslyExists.utils.js +61 -0
- package/src/lib/generateCssDoc/generateCssDoc.util.js +47 -0
- package/src/lib/generateProvider/generateProvider.utils.js +283 -0
- package/src/lib/generateProvider/template/providerTemplate.d.ts +60 -0
- package/src/lib/generateProvider/template/providerTemplate.js +160 -0
- package/src/lib/generateThemeRegister/generateThemeRegister.utils.js +136 -0
- package/src/lib/generateTools/generateTools.utils.js +181 -0
- package/src/lib/generateTypesTools/generateTypesTools.utils.js +59 -0
- package/src/lib/handlerForeignThemes/handlerForeignThemes.utils.js +96 -0
- package/src/lib/index.js +61 -0
- package/src/lib/processMediaConfig/processMediaConfig.util.js +32 -0
- package/src/lib/readFile/readFile.utils.js +110 -0
- package/src/lib/simplifyName/__tests__/simplifyName.utils.test.js +87 -0
- package/src/lib/simplifyName/simplifyName.utils.js +28 -0
- package/src/lib/typingStyles/index.js +3 -0
- package/src/lib/typingStyles/typingStyles.utils.js +144 -0
- package/src/lib/writeDoc/writeDoc.utils.js +30 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Definition Generator for Bernova CSS Framework
|
|
3
|
+
*
|
|
4
|
+
* Creates comprehensive TypeScript interfaces for CSS-in-JS objects.
|
|
5
|
+
* Generates type definitions for CSS properties, pseudo-classes, selectors, and media queries.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
cssProps,
|
|
10
|
+
cssPseudoClasses,
|
|
11
|
+
cssPseudoElements,
|
|
12
|
+
cssAdvancedSelectors,
|
|
13
|
+
} = require('../../constants');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Generates TypeScript interface properties from an object's keys
|
|
17
|
+
* Creates optional properties with specified type for each key
|
|
18
|
+
*
|
|
19
|
+
* @param {Object} object - Object to extract keys from
|
|
20
|
+
* @param {string} type - TypeScript type to assign to each property
|
|
21
|
+
* @returns {string} TypeScript interface properties
|
|
22
|
+
*/
|
|
23
|
+
const generateKeysType = ({ object, type }) => {
|
|
24
|
+
return Object.keys(object).reduce((acc, prop) => {
|
|
25
|
+
acc += ` ${prop}?: ${type};\n`;
|
|
26
|
+
return acc;
|
|
27
|
+
}, '');
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Generates TypeScript union types for advanced CSS selectors
|
|
32
|
+
* Creates optional selector properties with target specification
|
|
33
|
+
*
|
|
34
|
+
* @param {Object} advancedSelectors - Advanced selectors object
|
|
35
|
+
* @param {string} type - TypeScript type for selector values
|
|
36
|
+
* @returns {string} TypeScript union type definition
|
|
37
|
+
*/
|
|
38
|
+
const generateAdvancedSelectorsType = ({ advancedSelectors, type }) => {
|
|
39
|
+
return Object.keys(advancedSelectors).reduce((acc, selector, idx) => {
|
|
40
|
+
const or = idx > 0 ? ' |' : '';
|
|
41
|
+
acc += `${or} { ${selector}?: ${type}; }\n`;
|
|
42
|
+
return acc;
|
|
43
|
+
}, '');
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Generates TypeScript definitions for media query configuration
|
|
48
|
+
* Creates responsive breakpoint properties from media config
|
|
49
|
+
*
|
|
50
|
+
* @param {Array} mediaConfig - Media queries configuration array
|
|
51
|
+
* @param {string} type - TypeScript type for media query values
|
|
52
|
+
* @returns {string} Media query TypeScript definitions
|
|
53
|
+
*/
|
|
54
|
+
const generateMediaTypes = ({ mediaConfig, type }) => {
|
|
55
|
+
if (!mediaConfig || !Array.isArray(mediaConfig)) {
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
58
|
+
return mediaConfig.reduce((acc, media) => {
|
|
59
|
+
acc += ` '${media.name}'?: ${type};\n`;
|
|
60
|
+
return acc;
|
|
61
|
+
}, '');
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const typingStyles = ({ mediaConfig }) => {
|
|
65
|
+
const cssLibPropsName = 'CssLibPropsType'; //? <-- main type name
|
|
66
|
+
const hasMediaConfig = Array.isArray(mediaConfig) && mediaConfig.length > 0;
|
|
67
|
+
//? bases
|
|
68
|
+
//* bases names
|
|
69
|
+
const cssPropsName = 'CssPropsType';
|
|
70
|
+
const cssPseudoClassesName = 'CssPseudoClassesType';
|
|
71
|
+
const cssPseudoElementsName = 'CssPseudoElementsType';
|
|
72
|
+
const cssAdvancedSelectorsName = 'CssAdvancedSelectorsType';
|
|
73
|
+
const cssMediaQueriesName = 'CssMediaQueriesType';
|
|
74
|
+
const cssForeignName = 'CssForeignType';
|
|
75
|
+
//* bases types
|
|
76
|
+
const cssPropsWithTarget = `${cssLibPropsName} & { $target?: string; }`;
|
|
77
|
+
const cssPropsType = `export type ${cssPropsName} = {\n${generateKeysType({
|
|
78
|
+
object: cssProps,
|
|
79
|
+
type: 'string',
|
|
80
|
+
})}}\n`;
|
|
81
|
+
const cssPseudoClassesType = `export type ${cssPseudoClassesName} = {\n${generateKeysType(
|
|
82
|
+
{
|
|
83
|
+
object: cssPseudoClasses,
|
|
84
|
+
type: `${cssPseudoClassesName} | ${cssPseudoElementsName} | ${cssPropsWithTarget}`,
|
|
85
|
+
}
|
|
86
|
+
)}}\n`;
|
|
87
|
+
const cssPseudoElementsType = `export type ${cssPseudoElementsName} = {\n${generateKeysType(
|
|
88
|
+
{
|
|
89
|
+
object: cssPseudoElements,
|
|
90
|
+
type: `${cssPseudoElementsName} | ${cssPseudoClassesName} | ${cssLibPropsName}`,
|
|
91
|
+
}
|
|
92
|
+
)}}\n`;
|
|
93
|
+
const cssAdvancedSelectorsType = `export type ${cssAdvancedSelectorsName} = \n${generateAdvancedSelectorsType(
|
|
94
|
+
{
|
|
95
|
+
advancedSelectors: cssAdvancedSelectors,
|
|
96
|
+
type: cssPropsWithTarget,
|
|
97
|
+
}
|
|
98
|
+
)}\n`;
|
|
99
|
+
const mediaQueriesType = `export type ${cssMediaQueriesName} = ${cssPropsName} & { $type?: string; $values?: { [key: string]: string }; }\n`;
|
|
100
|
+
const foreignType = `export type ${cssForeignName} = { [key:string]: { component: object; variant?: string | unknown; name: string; } }\n`;
|
|
101
|
+
///? lib
|
|
102
|
+
//* lib names
|
|
103
|
+
const cssLibPseudoClassesName = 'CssLibPseudoClassesType';
|
|
104
|
+
const cssLibPseudoElementsName = 'CssLibPseudoElementsType';
|
|
105
|
+
const cssLibAdvancedSelectorsName = 'CssLibAdvancedSelectorsType';
|
|
106
|
+
const cssLibAttributesName = 'CssLibAttributesType';
|
|
107
|
+
const cssLibMediaQueriesName = 'CssLibMediaQueriesType';
|
|
108
|
+
const cssForeignLibName = 'CssForeignLibType';
|
|
109
|
+
const cssDynamicValuesName = 'CssDynamicValuesType';
|
|
110
|
+
//* lib types
|
|
111
|
+
const libProps = `export type ${cssLibPropsName} = ${cssPropsName} & ${cssLibPseudoClassesName} & ${cssLibPseudoElementsName} & ${cssLibAdvancedSelectorsName} & ${cssDynamicValuesName} & ${cssLibAttributesName}${
|
|
112
|
+
hasMediaConfig ? ` & ${cssLibMediaQueriesName}` : ''
|
|
113
|
+
} & ${cssForeignLibName};\n`;
|
|
114
|
+
const pseudoClasses = `export type ${cssLibPseudoClassesName} = {\n $pseudoClasses?: ${cssPseudoClassesName} \n}\n`;
|
|
115
|
+
const pseudoElements = `export type ${cssLibPseudoElementsName} = {\n $pseudoElements?: ${cssPseudoElementsName} \n}\n`;
|
|
116
|
+
const advancedSelectors = `export type ${cssLibAdvancedSelectorsName} = {\n $advancedSelectors?: ${cssAdvancedSelectorsName}[] \n}\n`;
|
|
117
|
+
const attributes = `export type ${cssLibAttributesName} = { $attributes?: { [key: string]: ${cssLibPropsName} } | { [key: string]: { [key: string]: ${cssLibPropsName} } } }\n`;
|
|
118
|
+
const mediaQueries = hasMediaConfig
|
|
119
|
+
? `export type ${cssLibMediaQueriesName} = {\n $mediaQueries?: {\n [key: string]: ${cssMediaQueriesName}\n } | {\n${generateMediaTypes(
|
|
120
|
+
{ mediaConfig, type: cssLibPropsName }
|
|
121
|
+
)} }\n}\n`
|
|
122
|
+
: '';
|
|
123
|
+
const foreign = `export type ${cssForeignLibName} = {\n $foreign?: ${cssForeignName} \n}\n`;
|
|
124
|
+
const dynamicValues = `export type ${cssDynamicValuesName} = {\n $dynamicValues?: string[]; \n}\n`;
|
|
125
|
+
|
|
126
|
+
return `
|
|
127
|
+
${cssPropsType}
|
|
128
|
+
${cssPseudoClassesType}
|
|
129
|
+
${cssPseudoElementsType}
|
|
130
|
+
${cssAdvancedSelectorsType}
|
|
131
|
+
${mediaQueriesType}
|
|
132
|
+
${foreignType}
|
|
133
|
+
${pseudoClasses}
|
|
134
|
+
${pseudoElements}
|
|
135
|
+
${dynamicValues}
|
|
136
|
+
${advancedSelectors}
|
|
137
|
+
${attributes}
|
|
138
|
+
${mediaQueries}
|
|
139
|
+
${foreign}
|
|
140
|
+
${libProps}
|
|
141
|
+
`;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
module.exports = { typingStyles };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const fs = require('fs/promises');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Writes CSS content to a specified directory.
|
|
6
|
+
* Ensures that the directory exists before writing the file.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} dir - The directory where the CSS file will be written.
|
|
9
|
+
* @param {string | Promise<string>} source - The CSS content to write.
|
|
10
|
+
*/
|
|
11
|
+
const writeDoc = async (dir, source, docName) => {
|
|
12
|
+
const { default: ora } = await import('ora');
|
|
13
|
+
const spinner = ora(`Writing ${docName} to ${dir}...`).start();
|
|
14
|
+
try {
|
|
15
|
+
// Ensure the directory exists
|
|
16
|
+
await fs.mkdir(path.dirname(dir), { recursive: true });
|
|
17
|
+
|
|
18
|
+
// Resolve the source if it's a Promise
|
|
19
|
+
const cssContent = await Promise.resolve(source);
|
|
20
|
+
|
|
21
|
+
// Write the CSS content to the file
|
|
22
|
+
await fs.writeFile(dir, cssContent);
|
|
23
|
+
spinner.succeed(`${docName} successfully written to ${dir}`);
|
|
24
|
+
} catch (err) {
|
|
25
|
+
spinner.fail(`Error writing ${docName} to ${dir}`);
|
|
26
|
+
console.error(err);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
module.exports = { writeDoc };
|