@navikt/aksel
Version:
Aksel command line interface. Codemods and other utilities for Aksel users.
40 lines (39 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = transformer;
const tokens_map_js_1 = require("../../../tokens-map.js");
const imports_1 = require("../../../utils/imports");
const lineterminator_1 = require("../../../utils/lineterminator");
const translate_token_1 = require("../../../utils/translate-token");
/**
* @param {import('jscodeshift').FileInfo} file
* @param {import('jscodeshift').API} api
*/
function transformer(file, api) {
const src = file.source;
const j = api.jscodeshift;
let root = j(file.source);
const jsImport = root.find(j.ImportDeclaration).filter((x) => {
return ["@navikt/ds-tokens/dist/tokens"].includes(x.node.source.value);
});
if (jsImport.size() === 0) {
return src;
}
tokens_map_js_1.tokens.forEach((token) => {
const name = (0, translate_token_1.translateToken)(token[0], "js");
const out = (0, translate_token_1.translateToken)(token[1], "js");
let foundName = "";
(0, imports_1.getImportSpecifier)(j, root, name, "@navikt/ds-tokens/dist/tokens").forEach((x) => {
foundName = x.node.imported.name;
});
if (name === foundName) {
const localName = (0, imports_1.getImportSpecifierName)(j, root, name, "@navikt/ds-tokens/dist/tokens") || name;
(0, imports_1.renameImportSpecifier)(j, root, name, out, "@navikt/ds-tokens/dist/tokens");
let code = root.toSource((0, lineterminator_1.getLineTerminator)(file.source));
const rgx = new RegExp("(" + localName + ")", "gm");
code = code.replace(rgx, out);
root = j(code);
}
});
return root.toSource((0, lineterminator_1.getLineTerminator)(file.source));
}