import { readFileSync, readdirSync, writeFileSync } from 'fs'; import { join } from 'path'; const majorVersion = +JSON.parse( readFileSync( join(__dirname, '../../packages/core/styles/package.json'), 'utf-8' ) ).version.split('.')[0]; const COLORS_PATH = join(__dirname, '../../packages/core/styles/src/colors'); const TYPOGRAPHY_PATH = join( __dirname, '../../packages/core/styles/src/typography' ); const REACT_COMPONENTS_PATH = join(__dirname, '../../packages/react/'); const colorsFiles = readdirSync(COLORS_PATH).filter( (i) => !i.includes('index') ); const typographyFiles = readdirSync(TYPOGRAPHY_PATH).filter( (i) => !(i.includes('index') || !i.includes('.css')) ); const reactComponents = readdirSync(REACT_COMPONENTS_PATH); function prefixFile(filePath: string) { let fileData = readFileSync(filePath, 'utf-8'); if ( !new RegExp(/\.rt-\d+/).test(fileData) && !new RegExp(/ --v\d+/).test(fileData) ) { // @ts-expect-error: no tsconfig fileData = fileData.replaceAll('.rt-', `.rt-${majorVersion}-`); // @ts-expect-error: same fileData = fileData.replaceAll(' --', ` --v${majorVersion}-`); // @ts-expect-error: same fileData = fileData.replaceAll('var(--', `var(--v${majorVersion}-`); writeFileSync(filePath, fileData); } } colorsFiles.forEach((fileName) => { prefixFile(join(COLORS_PATH, fileName)); }); typographyFiles.forEach((fileName) => { prefixFile(join(TYPOGRAPHY_PATH, fileName)); }); reactComponents.forEach((componentName) => { try { const stylesPath = join( REACT_COMPONENTS_PATH, componentName, 'src/lib/styles' ); const styles = readdirSync(stylesPath); styles.forEach((s) => { if (s.includes('component-')) { const filePath = join(stylesPath, s); let fileData = readFileSync(filePath, 'utf-8'); if ( !new RegExp(/var\(--v\d+\)/).test(fileData) && !new RegExp(/var\([\r\n\s]*--v\d+/g).test(fileData) ) { // @ts-expect-error: same fileData = fileData.replaceAll( new RegExp(/var\([\r\n\s]*--/g), `var(--v${majorVersion}-` ); writeFileSync(filePath, fileData); } } }); } catch (e) { console.log(`${e}`); } });