@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
71 lines • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateI18nLanguageSignal = migrateI18nLanguageSignal;
const ng_morph_1 = require("ng-morph");
const add_unique_import_1 = require("../../../utils/add-unique-import");
const colored_log_1 = require("../../../utils/colored-log");
const get_named_import_references_1 = require("../../../utils/get-named-import-references");
const ANGULAR_CORE = '@angular/core';
const SIGNAL = 'signal';
/**
* Migrates i18n language providers from of(TUI_*_LANGUAGE) to signal(TUI_*_LANGUAGE).
*
* Before:
* {
* provide: TUI_LANGUAGE,
* useValue: of(TUI_ENGLISH_LANGUAGE),
* }
*
* After:
* {
* provide: TUI_LANGUAGE,
* useValue: signal(TUI_ENGLISH_LANGUAGE),
* }
*/
function migrateI18nLanguageSignal(tree, options) {
var _a;
if (!options['skip-logs']) {
(0, colored_log_1.infoLog)('Migrating i18n language providers to signal-based values...');
}
const refs = (0, get_named_import_references_1.getNamedImportReferences)('TUI_LANGUAGE', '@taiga-ui/i18n');
for (const ref of refs) {
if (ref.wasForgotten()) {
continue;
}
const parent = ref.getParent();
if (!parent || ng_morph_1.Node.isImportSpecifier(parent)) {
continue;
}
// We are looking for { provide: TUI_LANGUAGE, useValue: of(...) }
if (!ng_morph_1.Node.isPropertyAssignment(parent) || parent.getName() !== 'provide') {
continue;
}
const objectLiteral = parent.getParent();
if (!objectLiteral || !ng_morph_1.Node.isObjectLiteralExpression(objectLiteral)) {
continue;
}
const useValueProp = objectLiteral.getProperty('useValue');
if (!useValueProp || !ng_morph_1.Node.isPropertyAssignment(useValueProp)) {
continue;
}
const initializer = useValueProp.getInitializer();
if (!initializer || !ng_morph_1.Node.isCallExpression(initializer)) {
continue;
}
const expression = initializer.getExpression();
if (expression.getText() !== 'of') {
continue;
}
const args = initializer.getArguments();
if (args.length !== 1) {
continue;
}
const argText = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.getText();
if ((argText === null || argText === void 0 ? void 0 : argText.startsWith('TUI_')) && argText.endsWith('_LANGUAGE')) {
useValueProp.setInitializer(`${SIGNAL}(${argText})`);
(0, add_unique_import_1.addUniqueImport)(ref.getSourceFile().getFilePath(), SIGNAL, ANGULAR_CORE);
}
}
(0, ng_morph_1.saveActiveProject)();
}
//# sourceMappingURL=migrate-i18n-language-signal.js.map