@navikt/aksel
Version:
Aksel command line interface. Codemods and other utilities for Aksel users.
33 lines (32 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = transformer;
const legacy_tokens_1 = require("../config/legacy.tokens");
function transformer(file) {
let src = file.source;
for (const [name, config] of Object.entries(legacy_tokens_1.legacyTokenConfig)) {
if (!config.twOld || !config.twNew || !config.regexes.tailwind) {
continue;
}
const isBreakpoint = name.includes("breakpoint");
if (isBreakpoint) {
src = src.replace(config.regexes.tailwind, `${config.twNew}:`);
continue;
}
const beforeSplit = config.twOld.split(",");
const afterSplit = config.twNew.split(",");
src = src.replace(config.regexes.tailwind, (match) => {
const trimmed = match.trim();
const cleanToken = trimmed.replace(":", "");
const index = beforeSplit.indexOf(cleanToken);
if (index >= 0) {
const withPrefix = trimmed.startsWith(":");
const addSpace = match.startsWith(" ");
const replacementToken = afterSplit[index];
return `${addSpace ? " " : ""}${withPrefix ? ":" : ""}${replacementToken}`;
}
return match;
});
}
return src;
}