Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import { SLDS_PLUS_CSS_PATH, SLDS_CSS_PATH, SLDS_DELTA_FILENAME } from "../constants.js";
import { StylingHooksProcessor } from "../processors/index.js";
import { parseForSelectors } from "./all-selectors-list.js";
import { getDeprecatedStylingHooks, parseForStylingHooks } from "./all-styling-hooks.js";
import { SLDSDelta, SLDSDeltaEntry, SupportedFileFormat } from "../types.js";
import { writeData } from "../services/file-service.js";
export async function generateSLDSDelta(outputDir: string = process.cwd(), format: SupportedFileFormat = 'csv') {
try {
// Process both files in parallel
const [sldsSelectors, sldsPlusSelectors, sldsStylingHooks, sldsPlusStylingHooks] = await Promise.all([
parseForSelectors(SLDS_CSS_PATH),
parseForSelectors(SLDS_PLUS_CSS_PATH),
parseForStylingHooks(SLDS_CSS_PATH),
parseForStylingHooks(SLDS_PLUS_CSS_PATH)
]);
// difference between sldsSelectors and sldsPlusSelectors
const deprecatedClasses = sldsSelectors.filter(selector => {
return !sldsPlusSelectors.includes(selector);
});
const deprecatedStylingHooks = getDeprecatedStylingHooks(sldsStylingHooks, sldsPlusStylingHooks);
const stylingHooksProcessor = new StylingHooksProcessor();
deprecatedStylingHooks.forEach(stylingHook => {
stylingHooksProcessor.resolveTokenName(stylingHook);
});
const stylingHooksDelta = stylingHooksProcessor.getResults();
const sldsDelta: SLDSDelta = format === 'csv' ? {
"Name": "Type"
} : {};
deprecatedClasses.forEach(selector => {
sldsDelta[selector] = "SLDS Classes";
});
const hookTypeToEntry: Record<string, SLDSDeltaEntry> = {
"global": "Global Styling Hooks",
"component": "Component Styling Hooks",
"kinetics": "Kinetics Styling Hooks",
}
Object.entries(stylingHooksDelta).forEach(([hookType, hooks]) => {
hooks.forEach(hook => {
if (hookType !== 'shared') {
sldsDelta[hook] = hookTypeToEntry[hookType];
}
});
});
await writeData(SLDS_DELTA_FILENAME, sldsDelta, outputDir, format, {
delimiter: {
field: "@"
},
prependHeader: false,
arrayIndexesAsKeys: false
});
} catch (error) {
console.error('Error processing CSS files:', error);
throw error;
}
} |