UNPKG

@navikt/aksel

Version:

Aksel command line interface. Codemods and other utilities for Aksel users.

40 lines (39 loc) 1.78 kB
"use strict"; 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)); }