UNPKG

@navikt/aksel

Version:

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

51 lines (50 loc) 2.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = transformer; const imports_1 = require("../../codemod/utils/imports"); const lineterminator_1 = require("../../codemod/utils/lineterminator"); const packageImports_1 = __importDefault(require("../../codemod/utils/packageImports")); const translate_token_1 = require("../../codemod/utils/translate-token"); const legacy_tokens_1 = require("../config/legacy.tokens"); function transformer(file, api) { let 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; } for (const [oldToken, config] of Object.entries(legacy_tokens_1.legacyTokenConfig)) { const oldCSSVar = `--a-${oldToken}`; const oldJsVar = (0, translate_token_1.translateToken)(oldCSSVar, "js"); let foundName = null; (0, imports_1.getImportSpecifier)(j, root, oldJsVar, "@navikt/ds-tokens/dist/tokens").forEach((x) => { foundName = x.node.imported.name; }); if (!foundName) { continue; } if (config.replacement.length > 0) { /* We remove the prefix */ const jsToken = (0, translate_token_1.translateToken)(`--ax-${config.replacement}`, "js").slice(2); const localName = (0, packageImports_1.default)(j, root, { fromImport: "@navikt/ds-tokens/dist/tokens", toImport: "@navikt/ds-tokens/darkside-js", fromName: foundName, toName: jsToken, ignoreAlias: true, }); let code = root.toSource((0, lineterminator_1.getLineTerminator)(src)); const rgx = new RegExp(`(\\s|^)?(${localName})(?=\\s|$|[^\\w-])`, "gm"); code = code.replace(rgx, jsToken); src = code; root = j(code); } } return root.toSource((0, lineterminator_1.getLineTerminator)(src)); }